Programmeren en Wetenschappelijk Rekenen in Python
Wi1205AE I.A.M. Goddijn, Faculteit EWI
20 mei 2014
Bijeenkomst 9
Onderwerpen
Bespreking opgave over astero¨ıden en de opdracht over de vluchtgegevens van een vliegtuig
Diagnostische toets Recursief programmeren Scipy
Recursie
Een functie heet recursief als zij zichzelf aanroept.
Dit wordt meestal gebruikt:
voor een klein gedeelte van een groter probleem, wanneer een functie zichzelf een beperkt aantal keren aanroept (heel belangrijk is een stopcriterium).
Recursie
Faculteit
fac cw.py: de berekening van n! (traditioneel) fac rec.py: de berekening van n! (recursief)
Teken een boom
iedere tak heeft twee een klein beetje kortere zijtakken en deze takken hebben ook weer twee een klein beetje kotere zijtakken en...
en dit gaat door totdat de takken te kort worden.
recursive-trees.py
De torens van Hanoi
=⇒
?
Verplaats ´e´en schijf per keer.
Op welke pin de schijven ook staan, van onder naar boven hebben ze een kleinere straal.
Het is dus niet toegestaan om een grotere schijf op een kleinere te plaatsen.
Een voorbeeld met 4 schijven
Een recursief algoritme
→ →
A B C A B C A B C
Hoe verplaatsen we n schijven van A naar C ?
Verplaats met behulp van het algoritme n − 1 schijven van A naar B (zie: hanoi.py),
vervolgens de enige overgebleven schijf van A naar C , en tenslotte met behulp van het algoritme n − 1 schijven van B naar C .
N = 2
N = 3
Scipy versus Numpy
Numpy is een onderdeel van Scipy Numpy bevat veel functies maar...
Scipy bevat veel modules
...met een uitstekende documentatie.
Voorbeelden
distance.py: de berekening van de afstanden tussen punten
noisy data.py: het ‘best passende polynoom’ bij data met ruis (zie:[2, §6.6])
Vraag
En een echelonmatrix? Kun je die maken?
Jawel, kijk maar eens hier:
http://docs.scipy.org/doc/scipy/reference/
generated/scipy.linalg.lu.html
iPy Notebook
Een ontwikkelomgeving speciaal voor Wetenschappelijk Rekenen onder Python(x,y)
Er wordt getypt achter de Command Prompt,
elke cel kan afzonderlijk worden
‘gerund’,
cellen delen data,
grafieken worden automatisch getoond.
Opdracht
Scipy: plot een geluidsbestand (wav) en versterk/verzwak het volume of de tijdsduur met een factor opgegeven door de gebruiker.
Recursie: nulpuntsbepaling door de bisectiemethode te gebruiken
Traditionele implementatie Recursieve implementatie
Project Euler/ werken aan project
Diagnostische toets
Bespreken eerste diagnostische toets vb-1.xhtml, break en continue vb-2.xhtml, over return gesproken...
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.
C.Vuik, P. van Beek, F. Vermolen en J.van Kan:
Numerical Methods for Ordinary Differential Equations, VSSD (2007),
ISBN-13: ISBN 978-90-6562-156-6.