Programmeren en Wetenschappelijk Rekenen in Python - Wi1205AE

Post on 14-Jan-2022

2 views 0 download

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 : J.M.Hoekstra@TUDelft.nl

Docent : Ingeborg Goddijn

e-mail : I.A.M.Goddijn@TUDelft.nl

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 : I.A.M.Goddijn@TUDelft.nl

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

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︸︷︷︸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