Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE
Transcript of Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE
Programmeren en WetenschappelijkRekenen in Python
Wi1205AEI.A.M. Goddijn, Faculteit EWI
22 april 2014
Inleiding
Cursus coordinator : Jacco Hoekstra
e-mail : [email protected]
Docent : Ingeborg Goddijn
e-mail : [email protected]
I.A.M. Goddijn
Faculteit EWI
22 april 2014 1
I.A.M. Goddijn
Mekelweg 4, kamer 4.240
tel : (015 27)86408
e-mail : [email protected]
homepage : http: //fa.its.tudelft.nl/∼goddijn
blackboard : http: //blackboard.tudelft.nl
Spreekuur : volgens afspraak
Studentassistenten
Rick Klijn Reinier Oost
Tom Rijndorp Geert Henk Visser
I.A.M. Goddijn
Faculteit EWI
22 april 2014 2
Studiemateriaal
Dictaat
Titel : Programming and Scientific Computing
: in Python
: for Aerospace Engineers
Versie : 3.10
Auteur : Jacco Hoekstra
Artikelnummer : 06917700043
I.A.M. Goddijn
Faculteit EWI
22 april 2014 3
Waarom programmeren?Je hebt het nodig voor:
Berekeningen:
het, door toepassing van iteratieve methoden, oplossen van
problemen,
het oplossen van 2D,3D, hoger dimensionale problemen.
Simulatie:
tijdsafhankelijke problemen waarbij bijvoorbeeld numeriek
geıntegreerd moet worden.
Visualisatie:
het tekenen van grafieken,
het maken van animaties.
En verder . . .
omdat programmeren leuk is om te doen !!!
I.A.M. Goddijn
Faculteit EWI
22 april 2014 4
Opzet van de cursus
Wat is het doel?
Leren programmeren (het denken in algoritmen).
Een klein beetje ervaring opdoen met Wetenschappelijk
Rekenen (het toepassen van numerieke methoden; daarvoor
kunnen o.a. Numpy, Scipy en Matplotlib worden gebruikt).
Een spel maken (het tekenen van grafieken en het maken
van animaties; daarvoor kunnen o.a. Matplotlib en Pygame
worden gebruikt).
I.A.M. Goddijn
Faculteit EWI
22 april 2014 5
Dit hopen we bereiken door:
Instructie, het maken van opgaven, opdrachten onder
begeleiding (bonus).
Tussentijdse quizzen om te zien of de aangeboden stof
wordt beheerst.
Een programmeerwedstrijd (maken spel)(bonus).
Tentamen op schrift, een cijfer.
I.A.M. Goddijn
Faculteit EWI
22 april 2014 6
Differentiatie
We hebben afgelopen cursus opgemerkt dat er ruwweg drie
niveau’s van programmeerervaring te onderscheiden zijn:
“Eenvoudig” (25%) Studenten die zich nog alleen de
syntax eigen moeten maken en zichzelf Python kunnen
leren.
“Moeilijk” (50%) Studenten die aan het begin van de
cursus meer begeleiding en voorbeelden nodig hebben maar
wanneer begonnen wordt aan de projecten hieraan mee
kunnen doen.
I.A.M. Goddijn
Faculteit EWI
22 april 2014 7
“Erg moeilijk” (25%) Studenten die gedesillusioneerd
raken door de moeilijkheid. Zij zijn niet in staat de
opdrachten te maken in de daarvoor beschikbare tijd en
bereiken het gewenste niveau door opgaven te maken
tijdens de weken waarin anderen bezig zijn met hun project.
I.A.M. Goddijn
Faculteit EWI
22 april 2014 8
“En . . . toen het licht opging kreeg ik er plezier in.”
I.A.M. Goddijn
Faculteit EWI
22 april 2014 9
Python
Nodig: Aanbevolen:
Python 2.7 Python(x,y) met:
Numpy Numpy
Scipy Scipy
Matplotlib Matplotlib
Pygame Spyder IDE
. . . veel meer
Voeg Pygame toe!
Gebruik je een ander ‘operating system’ dan Windows?
Kijk op Blackboard of installeer Canopy Express en voeg
Pygame toe.
I.A.M. Goddijn
Faculteit EWI
22 april 2014 10
Praktische informatie
Indeling bijeenkomsten:
college/instructie,
opgaven/opdracht,
discussie/instructie,
opgaven/opdracht.
Belangrijk: Maak aantekeningen tijdens de uitleg! De
presentaties worden pas na het onderwijs beschikbaar
gesteld!
Niet klaar met een opdracht? Laat dit aan het einde van
de bijeenkomst weten aan een van de studentassistenten
zodat zij toestemming kunnen geven daar thuis verder aan
te werken.
I.A.M. Goddijn
Faculteit EWI
22 april 2014 11
Bijeenkomst 1
Onderwerpen
installatie en instellingen,
printen,
rekenkundige operaties,
data types,
invoer,
logische operaties,
if-statement.
I.A.M. Goddijn
Faculteit EWI
22 april 2014 12
Installatie van Python
Documentatie in IDLE
documentatie Python 2.7,
https://docs.python.org/2/
documentatie Numpy en Scipy,
http://docs.scipy.org/doc/
documentatie Matplotlib,
http://matplotlib.org/contents.html
documentatie Pygame.
http://www.pygame.org/docs/
I.A.M. Goddijn
Faculteit EWI
22 april 2014 13
vb1-1a.py: commentaar en print
vb1-1b.py: print en \
vb1-1c.py: print en \n
I.A.M. Goddijn
Faculteit EWI
22 april 2014 14
Toekenning
Door de opdracht:
a = 2
wordt aan de variabele met naam “a”de waarde 2 toegekend.
Door de opdracht:
a = a + 2
wordt aan de variabele met naam “a”de waarde toegekend die
verkregen wordt door bij de waarde die a al had 2 op te tellen.
Dus:
a︸︷︷︸nieuw
= a︸︷︷︸oud
+ 2
I.A.M. Goddijn
Faculteit EWI
22 april 2014 15
Wiskundige operaties
Optellen : +
Aftrekken : −Vermenigvuldigen : ∗Delen : \Machtsverheffen : ∗∗Modulo : %
I.A.M. Goddijn
Faculteit EWI
23 april 2014 16
Data types
“Integers” int −123456, 0, 112244
“Floating point numbers” float 1.54 1.4e5, −0.83
“Strings” str “Dit is een tekst”
“Boolean” bool “True”,“ False”
vb1-2a.py: wiskundige operaties;
vb1-2b.py: data types;
vb1-2c.py: deling en datatypes.
I.A.M. Goddijn
Faculteit EWI
22 april 2014 17
Type conversie
b = int(a) b is het grootste gehele getal
kleiner of gelijk aan a
(a kan van het type float, string of
boolean zijn)
b = float(a) b is het grootste gehele getal
kleiner of gelijk aan a
(a kan van het type integer, string of
boolean zijn)
b = repr(a) b is een representatie van a als string
(a kan van het type integer, float of
boolean zijn)
I.A.M. Goddijn
Faculteit EWI
22 april 2014 18
sw = bool(a) sw = False als a = 0 en anders True
(a kan van het type integer of float zijn)
I.A.M. Goddijn
Faculteit EWI
22 april 2014 19
Naamgeving variabelen
integer i , j , k , l , m, n
float een zinvolle, korte, beschrijving
(geen i , j , k , l , m, n)
string “txt”, “ch”(aracter), “line” etc.
boolean “sw(itch)”,“running” etc.
Gebruik in zijn algemeenheid korte, betekenisvolle namen.
I.A.M. Goddijn
Faculteit EWI
22 april 2014 20
input versus raw input
Wanneer de input-functie wordt gebruikt, bepaalt de
gebruiker het type van het antwoord!
Door de opdracht:
x = input(“Voer je naam in: ”)
met als reactie
“Ingeborg”
wordt x van het type string.
I.A.M. Goddijn
Faculteit EWI
22 april 2014 21
Door de opdracht:
x = input(“Geef je leeftijd: ”)
met als reactie
“102”
wordt x van het type integer.
Beter zijn de volgende opdrachten waarbij je controle hebt
over het type. Safety first!
x = str(input(“Voer je naam in: ”))
x = int(input(“Geef je leeftijd: ”))
I.A.M. Goddijn
Faculteit EWI
22 april 2014 22
Wanneer de raw input-functie wordt gebruikt is de reactie
altijd een string
vb1-3a.py: raw input
vb1-3b.py: raw import en from math import pi
vb1-3c.py: raw input en from math import pi as p
vb1-3d.py: raw input en from math import pi, sqrt
vb1-3e.py: raw input en import math
Voor een tabel met de wiskundige functies die de module math
bevat zie:[1, § 5.2]
I.A.M. Goddijn
Faculteit EWI
22 april 2014 23
Logische operaties
True of False
a is gelijk aan b : a == b
a is niet gelijk aan b : a! = b
a is niet gelijk aan b : a <> b
a is kleiner dan b : a < b
a is kleiner of gelijk aan b : a ≤ b
a is groter dan b : a > b
a is groter of gelijk aan b : a ≥ b
a is niet gelijk aan b : not a == b
a is niet gelijk aan b : a < b or a > b
a is gelijk aan b : a ≤ b and a ≥ b
I.A.M. Goddijn
Faculteit EWI
22 april 2014 24
if-statement
Vorm van een if-statement:
if voorwaarde :
ingesprongen code
elif voorwaarde :
ingesprongen code
elif voorwaarde :
ingesprongen code
else voorwaarde : De dubbele punt : is belangrijk!
ingesprongen code
...
vervolg programma (niet ingesprongen)
elif en else zijn optioneel
I.A.M. Goddijn
Faculteit EWI
22 april 2014 25
vb1-4a.py: if-statement
Voor een gegeven x de berekening van f (x) als:
f (x) =
cos(x) voor − π
2≤ x < 0
sin(x) voor 0 ≤ x <π
2
1 voorπ
2≤ x ≤ π
vb1-4b.py: if-statement
I.A.M. Goddijn
Faculteit EWI
22 april 2014 26
vb1-4c.py: if-statement
Opmerking
Wil je twee getallen a en b van het type float vergelijken: deze
getallen worden niet exact gerepresenteerd dus:
test nooit of ze gelijk (==) of niet gelijk (! =) zijn.
I.A.M. Goddijn
Faculteit EWI
22 april 2014 27
De eerste serie opgaven en de eerste opdracht
Time at hand;
Pythagoras;
Interest rate;
Your first international standard atmosphere calculator
(Bonus).
En ben je klaar?
Meld je aan voor Project Euler:
https://projecteuler.net/ en geef als land Palau op.
I.A.M. Goddijn
Faculteit EWI
22 april 2014 28
Jacco Hoekstra:Programming and Scientific Computing in Python(Version 3.10),Artikelnummer: 0691770043.
David C. Lay:Linear Algebra and Its Applications (fourth edition),Pearson (2013),ISBN-13: 978-1-292-02055-6.
James Stewart:Calculus, Early Transcedentals (seventh edition),Cengage Learning (2012),ISBN-13: 978-0-538-49887-6.
I.A.M. Goddijn
Faculteit EWI
22 april 2014 28