Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

30
Programmeren en Wetenschappelijk Rekenen in Python Wi1205AE I.A.M. Goddijn, Faculteit EWI 22 april 2014

Transcript of Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

Page 1: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

Programmeren en WetenschappelijkRekenen in Python

Wi1205AEI.A.M. Goddijn, Faculteit EWI

22 april 2014

Page 2: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 3: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 4: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 5: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 6: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 7: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 8: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 9: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

“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

Page 10: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

“En . . . toen het licht opging kreeg ik er plezier in.”

I.A.M. Goddijn

Faculteit EWI

22 april 2014 9

Page 11: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 12: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 13: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 14: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 15: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 16: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 17: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

Wiskundige operaties

Optellen : +

Aftrekken : −Vermenigvuldigen : ∗Delen : \Machtsverheffen : ∗∗Modulo : %

I.A.M. Goddijn

Faculteit EWI

23 april 2014 16

Page 18: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 19: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 20: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 21: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 22: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 23: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 24: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 25: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 26: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 27: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 28: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 29: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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

Page 30: Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

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