Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf ·...
-
Upload
vuongduong -
Category
Documents
-
view
246 -
download
0
Transcript of Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf ·...
![Page 1: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/1.jpg)
.
...... Python - die Alternative zu Matlab?
Jochen Schulz
Georg-August Universität Göttingen
1/36
![Page 2: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/2.jpg)
Aufbau
...1 Einleitung
...2 Grundlegende Bedienung Python (Spyder)
...3 3D - Grafik
...4 Numerische Mathematik
...5 Zusammenfassung
1/36
![Page 3: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/3.jpg)
Programmieren für den Wissenschaftler
Daten erzeugen oder erheben (Simulation, Experiment)Weiterverarbeitung von DatenVisualisierung und ValidierungErgebnisse veröffentlichen bzw. kommunizieren
.
......
Wir wollen: eine High-Level Sprache:Programmieren ist leichtVorhandene Elemente nutzengeeignet für Prototyping und Debugging (Interaktion)Möglichst nur ein Werkzeug für alle Probleme
2/36
![Page 4: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/4.jpg)
MATLAB
MATLAB steht für Matrix laboratory; ursprünglich speziellMatrizenrechnung.Interaktives System für numerische Berechnungen undVisualisierungen (Skriptsprache).
.Vorteile..
......
Vielfältige Visualisierungsmöglichkeiten.Viele zusätzliche Toolboxes (Symb. Math T., PDE T., Wavelet T.)Ausgereifte und integrierte Oberfläche.
.Nachteile..
......
Kostenintensiv.Ein/Ausgabe von Dateien kann umständlich sein.Spezialisierter Funktionsumfang macht manche Programmierungschwer.
3/36
![Page 5: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/5.jpg)
Python: NumPy, SciPy, SymPy
Modulare Skriptsprache..Vorteile..
......
Viele Module mit wissenschaftlichen Fokus.Klare Code-Struktur.Ebenso viele Module für den nicht-wissenschaftlichen Gebrauch(nützlich z.B. für Ein-/Ausgabe).Frei und open-source.
.Nachteile..
......
Entwicklungsumgebung etwas komplizierter (Spyder,ipython).Nicht alle spezialisierten Möglichkeiten anderer Software.
4/36
![Page 6: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/6.jpg)
Aufbau
...1 Einleitung
...2 Grundlegende Bedienung Python (Spyder)
...3 3D - Grafik
...4 Numerische Mathematik
...5 Zusammenfassung
5/36
![Page 7: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/7.jpg)
Spyder Fenster-Aufbau
Starten von Spyder: Eingabe von spyder & (in einem Terminal).
Editor: DateimanipulationConsole: Befehlseingabe undStandardausgabe
Object Inspector: Hilfe undVariablenansichtGrafik: in separaten Fenstern
6/36
![Page 8: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/8.jpg)
Listen und Tuple
Eine Liste ist in Python mit [ .. , .. ] gekennzeichnet (hat Ordnung)liste = [21,22,24,23]liste.sort(); liste
[21, 22, 23, 24]
Ein Tuple ist in Python mit ( .. , .. ) gekennzeichnet (hat Struktur)tuple = (liste[0], liste[2])tuple, tuple[0]
(( 21, 24), 21)
Liste von ganzen Zahlen von a bis brange(a,b+1)
7/36
![Page 9: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/9.jpg)
Funktionen
def fun (arg1,arg2=<defaultvalue >,... ,*args,**kwargs)code-blockreturn returnvalue
lambda arg: codeline
*args: Tuple der Input- Argumente**kwargs: Dictionary der benannten Input-Argumente*: Entpackt Tuple in eine Liste von Argumenten**: Entpackt Dictionary in eine Liste von benannten ArgumentenArgumente mit Defaultwert sind optionalArgumente mit Namen können in beliebiger Reihenfolge angegebenwerden
8/36
![Page 10: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/10.jpg)
Funktionales Programmieren
map(function ,liste)
führt function(x) für alle x aus Liste aus.
filter(function ,liste)
Gibt nur diejenigen Elemente aus der Liste zurück, für die functionTrue zurückgegeben hat.
>>> filter(lambda x: mod(x,3) = 0,liste)[21, 24]
9/36
![Page 11: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/11.jpg)
Wörterbücher (Dictionaries)
Index kann nahezu beliebige Objekte enthalten.Sind gut geeignet für das Speichern großer Datenmengen, da derindizierte Zugriff sehr schnell ist.der Index ist eindeutigIterieren:d = 'a': 1, 'b':1.2, 'c':1jfor key, val in d.iteritems():
print key,val
a 1c 1jb 1.2
10/36
![Page 12: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/12.jpg)
Vektoren und Matrizen - NumPy arrays
Vektorennp.array([1,2,4])
Matrizennp.array([[1,2,4],[2,3,4]])
Viele Befehle ähnlich wie bei Matlab:zeros(n,m)(Matlab) zeros ((n,m))(Python)(n × m)- Matrix mit 0 als Einträge.ones(n,m)(Matlab) ones((n,m))(Python)(n × m)- Matrix mit 1 als Einträge.repmat(A,n,m)(Matlab) tile (A,(n,m)(Python)Blockmatrix mit (n × m) aus A bestehenden Blöckenzusammenhängen
11/36
![Page 13: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/13.jpg)
Slicing
A = np . a r ray ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] , [ 7 , 8 , 9 ] ] )
A =1 2 34 5 67 8 9
Abfragen eines Eintrags>>> A[1,0]
4
Abfrage von Blöcken>>> A[1:3,0:2]
4 57 8
Abfrage einer Zeile>>> A[,:]
4 5 6
Abfrage mehrerer Zeilen>>> A[(0,2),:]
1 2 37 8 9
Slicing-Operator: start :ende:step12/36
![Page 14: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/14.jpg)
Beispiel: Legendre Polynome
import numpy as np # NumPyimport scipy as sp # SciPyimport matplotlib as mpl # Matplotlib (2D/3D)import matplotlib.pyplot as plt # Matplotlib's pyplotfrom pylab import * # Matplotlib's pylabx = linspace(-1,1,100)p1 = xp2 = (3./2)*x**2-1./2p3 = (5./2)*x**3-(3./2)*xp4 = (35./8)*x**4 -(15./4)*x**2 + 3./8plot(x,p1,'r:',x,p2,'g--',x,p3,'b-.',x,p4,'m-',linewidth
=2)title('Legendre Polynome: $P_n(x) = \frac12^nn!\frac
d^ndx^n\left[(x^2-1)^n\right]$ ', fontsize= 15)xlabel( '$x$' , fontsize= 20)ylabel ( '$p_n(x)$' , fontsize=20)text( 0, 0.45 , 'Maximum' )legend (('n=1', 'n=2', 'n=3', 'n=4'), loc='lower right')grid('on'), box('on'), xlim( (-1.1 , 1.1) )
13/36
![Page 15: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/15.jpg)
Legendre Polynome
1.0 0.5 0.0 0.5 1.0x
1.0
0.5
0.0
0.5
1.0
pn(x
)
Maximum
Legendre Polynome: Pn (x) = 12n n!
dn
dxn
[(x2 −1)n
]
n=1n=2n=3n=4
14/36
![Page 16: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/16.jpg)
loadtxt - gnuplot vergessen
array = np.loadtxt(fname,delimiter=None,comments='#')
fname: Dateiname.delimiter : Trennzeichen. Z.B. ’,’ bei kommaseparierten Tabellen.Default-Einstellung sind Leerzeichen.comments: Kommentarzeichen. In Python-Dateien z.B. ’#’.array: Rückgabewert als (multidimensionaler) array.
Flexibleres Einlesen: np.genfromtxt()
15/36
![Page 17: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/17.jpg)
Aufbau
...1 Einleitung
...2 Grundlegende Bedienung Python (Spyder)
...3 3D - Grafik
...4 Numerische Mathematik
...5 Zusammenfassung
16/36
![Page 18: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/18.jpg)
3D: Funktionenplot
2.0 1.5 1.0 0.50.0 0.5 1.0 1.5 2.0 2.01.5
1.00.50.0
0.51.0
1.52.0
0.40.30.20.1
0.00.10.20.30.4
plot_wireframe
2.0 1.5 1.0 0.50.0 0.5 1.0 1.5 2.0 2.01.5
1.00.50.0
0.51.0
1.52.0
0.40.30.20.1
0.00.10.20.30.4
plot_surf
2.0 1.5 1.0 0.5 0.0 0.5 1.0 1.5 2.02.0
1.5
1.0
0.5
0.0
0.5
1.0
1.5
2.0contour
2.01.5
1.00.50.0
0.51.0
1.52.0 2.0 1.5 1.0 0.50.0 0.5 1.0 1.5 2.0
0.4
0.3
0.2
0.1
0.0
0.1
0.2
0.3
0.4
plot_surface+contour
17/36
![Page 19: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/19.jpg)
3D: Funktionenplot - Implementation
x = linspace(-2,2,30)y = linspace(-2,2,30)[X,Y] = meshgrid(x,y)Z = exp(-X**2-Y**2)*sin(pi*X*Y)fig=figure()ax = fig.add_subplot(2, 2, 1, projection='3d')ax.plot_wireframe(X,Y,Z),title('plot_wireframe')
ax = fig.add_subplot(2, 2, 2, projection='3d')ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=cm.jet,
linewidth=0),title('plot_surface')
subplot(2, 2, 3)contour(X,Y,Z,10), title('contour')
ax = fig.add_subplot(2, 2, 4, projection='3d')ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=cm.jet)ax.contour(X, Y, Z, zdir='z', offset=-0.5)ax.view_init(20,-26),title('plot_surface + contour')
18/36
![Page 20: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/20.jpg)
Mayavi mlab!
from mayavi import mlab as ml #majavi mlabml.surf(X.T,Y.T,Z)title('plot_surf (mayavi)')
19/36
![Page 21: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/21.jpg)
4D: Mayavi mlabSlicesml.pipeline.image_plane_widget(ml.pipeline.scalar_field(V
), plane_orientation=<'x_axes'|'y_axes'|'z_axes'>,slice_index=<idx>)
V: Funktionswerte V(i) zu (X(i),Y(i),Z(i)).plane_orientation : Schnitte durch x-/y-/z-Achseslice_index : Index in den Matrizen (keine direkteKoordinaten-Angabe)
Volume renderingml.pipeline.volume(ml.pipeline.scalar_field(V))
isosurfacesml.contour3d(V)
Beispiel:X, Y, Z = np.ogrid[-2:2:20j,-2:2:20j,-2:2:20j]V = exp(-X**2-Y**2) * sin(pi*X*Y*Z) 20/36
![Page 22: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/22.jpg)
4D: Beispiel-slice
21/36
![Page 23: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/23.jpg)
Aufbau
...1 Einleitung
...2 Grundlegende Bedienung Python (Spyder)
...3 3D - Grafik
...4 Numerische Mathematik
...5 Zusammenfassung
22/36
![Page 24: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/24.jpg)
Lineare Gleichungssysteme
Seien A ∈ Cn×n und b ∈ Cn. Das lineare Gleichungssystem
Ax = b
wird gelöst durch x=A\b| solve (A,b).Iterative Verfahren:
gmres (generalized minimum residual)pcg| cg (preconditioned conjugate gradient)bicgstab (biconjugate gradients stabilized)…
23/36
![Page 25: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/25.jpg)
100 Digits-Challenge
.Aufgabe..
......
Es sei A eine 20.000× 20.000 Matrix, deren Einträge Null sind bis auf diePrimzahlen 2, 3, 5, 7, . . . , 224737 auf der Diagonalen und der Ziffer 1 inallen Einträgen aij mit |i − j| = 1, 2, 4, 8, . . . , 16384.Was ist der (1, 1) Eintrag von A−1?
24/36
![Page 26: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/26.jpg)
Wärmeleitungsgleichung
Gegeben sei ein rechteckiges Gebiet Ω ⊂ R2 und eine zeitabhängigeFunktion u(x, t), x ∈ Ω, t ∈ R+. Dann ist die Wärmeleitungsgleichunggegeben durch
∂u∂t − α∆u = 0 in Ω
mit einer Konstante α ∈ R. Gegeben seien Dirichlet Randbedingungen
u = R, auf ∂Ω
mit einer Funktion R : ∂Ω 7→ C(∂Ω). Zum Zeitpunkt t = 0 sei
u(x, 0) = f(x), ∀x ∈ Ω.
mit einer beliebigen, aber fest gewählten initialen Funktion f : R 7→ R.
25/36
![Page 27: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/27.jpg)
Wärmeleitungsgleichung
26/36
![Page 28: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/28.jpg)
Gewöhnliche Differentialgleichungen
r = scipy.integrate.ode(f[,jac])
f: Rechte Seite der DGL: y′(t) = f(t, y)jac: (optionale) Jacobi-Matrixr.set_integrator (<name>[,<params>]): Setzt den zu nutzendenLöser <name> mit den Parametern <params>.r.set_initial_value (y [, t ]) : Setzt den Anfangswert.r.integrate (t): Findet y(t) und setzt den neuen Anfangswert imLöser.r.succesful (): Wahrheitswert über Erfolg der Integration.
27/36
![Page 29: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/29.jpg)
Die Lorenz-Gleichungen
Chaostheorie / Schmetterlingseffekt.
ddty1(t) = 10(y2(t)− y1(t))ddty2(t) = 28y1(t)− y2(t)− y1(t)y3(t)ddty3(t) = y1(t)y2(t)− 8y3(t)/3
28/36
![Page 30: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/30.jpg)
Die Lorenz-Gleichungen
def lorenz_rhs(t,y):return array([[10*(y[1]-y[0])], [28*y[0]-y[1]-y[0]*y
[2]], [y[0]*y[1]-8*y[2]/3]])y = array([0,1,0])r = ode(lorenz_rhs)r.set_initial_value(y, 0)r.set_integrator('dopri5',atol=1e-7,rtol=1e-4)tmax = 30,dt = 0.01,t=[]while r.successful() and r.t < tmax:
r.integrate(r.t+dt)t.append(r.t)y = vstack( (y, r.y) )
fig = figure(figsize=(16,10))ax = fig.add_subplot(2, 2, 1, projection='3d')ax.plot(y[:,0],y[:,1],y[:,2]),xlabel('t'), ylabel('y(t)')subplot(2,2,2),plot(y[:,0],y[:,1]), xlabel('y_1')subplot(2,2,3),plot(y[:,0],y[:,2]), xlabel('y_1')subplot(2,2,4),plot(y[:,1],y[:,2]), xlabel('y_2')
29/36
![Page 31: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/31.jpg)
Die Lorenz-Gleichungen
t
15 10 5 0 5 10 15
y(t)
2010
010
20
0
10
20
30
40
20 15 10 5 0 5 10 15 20y1
30
20
10
0
10
20
30
y 2
20 15 10 5 0 5 10 15 20y1
0
10
20
30
40
50
y 3
30 20 10 0 10 20 30y2
0
10
20
30
40
50
y 3
30/36
![Page 32: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/32.jpg)
Nichtlineare Löser
from scipy import optimizex0 = -5 # Startwertf = lambda x: 2*x - exp(-x)res,info,i,mesg = optimize.fsolve(f,x0,xtol=1e-5,
full_output=True)print ("res: \nnfev: \nfvec: ".format(res,info['
nfev'],info['fvec']) )
res: [ 0.35173371]nfev: 13fvec: [ -1.50035540e-12]
31/36
![Page 33: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/33.jpg)
Ableitungsfrei / Nebenbedingungen
Finde Minimum …ohne Nebenbedingungen, multidimensional (Nelder-Mead-Simplex):fmin(func, x0, args=(), xtol=0.0001, ftol=0.0001, maxiter
=None, maxfun=None, full_output=0, disp=1, retall=0,callback=None)
func: Function handlex0: Start-wert/-vektorxtol , ftol : Abbruch-Toleranz in x und func.
mit Nebenbedingungen, multidimensional:fminbound(func, x1, x2, args=(), xtol=1e-05, maxfun=500,
full_output=0, disp=1)
32/36
![Page 34: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/34.jpg)
Show
BezierSplinesMandelbrotDebuggerprofiler
33/36
![Page 35: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/35.jpg)
Aufbau
...1 Einleitung
...2 Grundlegende Bedienung Python (Spyder)
...3 3D - Grafik
...4 Numerische Mathematik
...5 Zusammenfassung
34/36
![Page 36: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/36.jpg)
Zusammenfassung und Ausblick
Python ist…FlexibelMächtigKlare CodestrukturSchnell (NumPy, Cython)fast alles worin Matlab stark ist, hat eine (gute) Entsprechung inPythonFrei und Open Source!Symbolisches Rechnen mit SymPyBasis von Sage (http://sagemath.org
Haupt-Nachteil: Mit Flexibilität kommt Komplexität (Lernkurve,Modul-handling)
35/36
![Page 37: Python - die Alternative zu Matlab?num.math.uni-goettingen.de/~schulz/data/python_talk.pdf · Programmieren für den Wissenschaftler Datenerzeugenodererheben(Simulation,Experiment)](https://reader031.fdokument.com/reader031/viewer/2022021612/5b5890917f8b9a4e1b8c3008/html5/thumbnails/37.jpg)
Literatur
NumPy, SciPy SciPy developers (http://scipy.org/),
SciPy-lectures, F. Perez, E. Gouillart, G. Varoquaux, V. Haenel(http://scipy-lectures.github.io),
Matplotlib (http://matplotlib.org)
scitools (https://code.google.com/p/scitools/)
mayavi (http://docs.enthought.com/mayavi/mayavi/mlab.html)
36/36