Programmeren en Wetenschappelijk Rekenen in Python Wi1205AE I.A.M. Goddijn, Faculteit EWI 22 april 2014
Inleiding
Cursus co¨ordinator
: 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, ´e´en 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 ´e´en 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
print
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 = |{z} a +2 |{z}
nieuw
oud
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
float
1.54 1.4e5, −0.83
“Strings”
str
“Dit is een tekst”
“Boolean”
bool
“Floating point numbers”
“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
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: π cos(x) voor − ≤ x < 0 2 π f (x) = sin(x) voor 0≤x < 2 π 1 ≤x ≤π voor 2
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