Teil XI. Wissenschaftliches Rechnen in Python

Ähnliche Dokumente
Python. und statistische Methoden der Datenanalyse

Computergrafik 2: Übung 1. Eclipse, PyDev, NumPy, Matplotlib

2D - Plotten / Visualisierung

Eine sehr kurze Einführung in (I)Python und SimpleITK Teil 1 richard rascher-friesenhausen richard.rascher-friesenhausen@hs-bremerhaven.

Matrizen. Jörn Loviscach. Versionsstand: 12. April 2010, 19:00 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung.

D-MATH Numerische Methoden FS 2016 Dr. Vasile Gradinaru Alexander Dabrowski. Serie 2

. Python - die Alternative zu Matlab? Jochen Schulz

Matlab. Kap. I Basics of Matlab. Variablentypen und Nutzung Visualisierung in 2D und 3D. Jetzt geht s erst richtig los:

SCILAB. Skizzen zum Vortrag. Ein umfangreiches, leistungsfähiges, freies Software-Paket für numerische Mathematik. Prof. Dr.-Ing.

Einführung in Python Teil I Grundlagen

Die freie Programmiersprache Python mit Beispielen für ihren praktischen Einsatz. Python User Group Köln

L A T E X-Kurs. Teil 4 - Datenanalyse - Qti Plot. Fachschaft Physik Uni Konstanz WS 2015/16

Datenverarbeitung und Tabellenkalkulation. Braunschweig, den Dipl.- Ing. Katrin Leicht

1 Konsole öffnen. 2 matlab & und return eingeben. 3 Konsole dauerhaft geöffnet lassen. 1 Menüpunkt File - Exit MATLAB oder. 2 quit (und return) oder

Praktikum zur Modellreduktion Wintersemester 2015/16. wissen leben WWU Münster

MATLAB Einführung. Numerische Methoden für ITET und MATL Dr. S. May, D. Devaud. ETH Zürich, Seminar for Applied Mathematics

Einführung in. Pierre Bayerl

Über Kurven, Anfangswertaufgaben und Numerik

Einführung in numerische Simulation mit Python

Matrizenoperationen mit FORTRAN

Einführung Matlab Aufgabenkatalog

Einführung in MATLAB

Informationsverarbeitung im Bauwesen

Matlab: eine kurze Einführung

Erwin Grüner

Einführung in MATLAB zur Veranstaltung Einführung in die Numerik

Wertebereich und Genauigkeit der Zahlendarstellung

Physik auf dem Computer Wiederholung: Python, NumPy und C

Matlab - eine kurze Einführung

Vektoren Vektorräume Lineare Unabhängigkeit, Basis Matrizen Benutzen von MuPAD-Bibliotheken Erstes Programm

Eine sehr kurze Einführung in Python und MyImage richard rascher-friesenhausen

import matplotlib.pyplot as plt from numpy import sin, exp, linspace, arange, pi macht das Gleiche wie

R-Tutorial. R bietet zahlreiche Hilfe-Funktionen an. Informiere Dich über die Funktion log():

# # Daten aus einem csv-file einlesen # readerout = reader(open("daten.csv","rb"),delimiter=',');

Computergestützte Datenauswertung

6 Graphische Darstellungen mit Matplotlib

Informationsverarbeitung im Bauwesen

Pythonkurs Sommersemester 2014 Einführung in die Programmierung zur Numerik mit Python. wissen leben WWU Münster

Tipps und Tricks für Matlab

R-Wörterbuch Ein Anfang... ein Klick auf einen Begriff führt, sofern vorhanden, zu dessen Erklärung.

Die einfachsten Anweisungen

WiMa-Praktikum 1. Woche 8

Matlab Einführung. Tobias Wunner

Singulärwert-Zerlegung

1 Stückweise konstante Funktionen (ca =10 Punkte)

1.11 Eigenwertproblem Anwendungen von Eigenwerten und Eigenvektoren Lineare Rekursionen Lineare Differentialgleichungssysteme Bestimmung von

Zugriff auf Matrizen. Anhängen von Elementen. Punktweise Operatoren. Vektoren und Matrizen in MATLAB II

Lösungen zu Mathematik I/II

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

Überbestimmte Gleichungssysteme

RASPBERRY PI - EINSATZMÖGLICHKEITEN EINES LOW BUDGET COMPUTERS

Matlab Praktikum - Tag 4

Mathematische Probleme lösen mit Maple

De Taschäräschnr Casio (Reihe: 9750, 9850,...)

Übung 4: Einführung in die Programmierung mit MATLAB

1 Rechnen mit 2 2 Matrizen

Kurztest zur Numerik I WiR AG, Dep. Mathematik, NT-Fakultät, Universität Siegen

Matlab Einführung Einführung in die Neuroinformatik SS 12. Miriam Schmidt Institut für Neuroinformatik

3.6 Eigenwerte und Eigenvektoren

Serie 10: Inverse Matrix und Determinante

5 Eigenwerte und die Jordansche Normalform

Numerische Lineare Algebra

1. Einstieg in MATLAB

3 Schnellkurs in MATLAB

Prüfungsvorbereitungskurs Höhere Mathematik 3

Steht in der ersten Zeile #!/usr/bin/python und hat man die Ausführungsrechte gesetzt kann man es direkt ausführen.

2 Matrizen und Vektoren

Übungspaket 23 Mehrdimensionale Arrays

Wir konstruieren eine Wasserrutsche!

Dipl.-Math. Robert Offinger Wintersemester 2006/07 Otto-von-Guericke-Universität Magdeburg Fakultät für Mathematik

INTELLIGENTE DATENANALYSE IN MATLAB

1.9 Eigenwerte und Eigenvektoren

Mathematische Erfrischungen III - Vektoren und Matrizen

Tag 9: Datenstrukturen

Lineare Algebra: Determinanten und Eigenwerte

MC-Serie 11: Eigenwerte

FHZ. K20 Arrays. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt

De Taschäräschnr Casio (Reihe: 9860G)

Matlab Einführung Theorie Neuronaler Netze WS 11/12. Miriam Schmidt Institut für Neuroinformatik

Sage 3: Lineare Algebra

SciPy Tuebix June 18, 2015

Musterlösungen zur Linearen Algebra II Übungsklausur

2. Geben Sie für das Jacobi-Verfahren eine scharfe a-priori Abschätzung für den Fehler. x (10) x p

Weiterhin haben wir eine Moodle2 Seite unter: moodle2.tu-ilmenau.de, unter: EI - Fachgebiet Angewandte Mediensysteme- Grundlagen der Videotechnik.

Eine Kurzanleitung zu Mathematica

Strukturen & Math. Strukturen und Vektoren. Allokieren eines Vektors. Zugriff auf Strukturen. Freigeben eines Vektors

1.) Matrix einer linearen Abbildung

9.2 Invertierbare Matrizen

4 Lineare Abbildungen und Matrizen

Generische Bildverarbeitung mit numpy. Benjamin Seppke

C orthogonal und haben die Länge 1). Dann ist die Länge von w = x u + y v gegeben durch w 2 Def. = w,w =

3 Matrizenrechnung. 3. November

Algorithmen und Programmieren II Einführung in Python

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1

MATLAB 5 für Ingenieure

y hom (x) = C e p(x) dx

Grundlagen von Python

Transkript:

Teil XI Wissenschaftliches Rechnen in Python IN8008, Wintersemester 2011/2012 222

Nochmal Modul math Konstanten pi und e Funktionen für int und float Alle Rückgabewerte sind float ceil (x) floor (x) exp (x) fabs ( x) # wie abs (), nur immer float ldexp (x, i) # x * 2** i log (x [, base ]) log10 (x) # == log (x, 10) modf ( x) # ( Nachkommateil, Integerteil ) pow (x, y) # x**y sqrt (x) IN8008, Wintersemester 2011/2012 223

Trigonometrische Funktionen (Bogenmaß) cos (x); cosh (x); acos (x) sin (x);... tan (x);... degrees ( x) # rad -> deg radians ( x) # deg -> rad inf/nan float (" inf ") float ("-inf ") float (" nan ") isinf ( x) # Überprüfung auf Unendlichkeit isnan ( x) # Überprüfung auf NaN Complexe Zahlen: cmath IN8008, Wintersemester 2011/2012 224

Und RICHTIGE Mathematik? Bisherige Sequenztypen (list, tuple,... ) Können als Arrays verwendet werden Können verschiedene beliebige Typen enthalten Sehr flexibel, aber auch langsam Schleifen sind nicht sehr effizient Vektoren/Matrizen und Operationen auf diesen sind extrem umständlich Für effizientes wissenschaftliches Rechnen sind andere Datentypen und Methoden nötig Module NumPy Matplotlib SciPy IN8008, Wintersemester 2011/2012 225

Modul numpy Homogene Arrays NumPy stellt beliebig-dimensionale Arrays bereit Alle Elemente des Arrays haben den gleichen Typ Beispiel from numpy import * a = array ([[1,2,3],[4,5,6]]) print a type (a) a. shape print a [0,2] a [0,2] = -1 b = a*2 print b IN8008, Wintersemester 2011/2012 226

Homogene Arrays (2) Arrays können aus (verschachtelten) Sequenztypen erstellt werden Direkter Zugriff mit [] a = array ([1,2,3,4,5,6,7,8]) a [1] a = array ([[1,2,3,4],[5,6,7,8]]) a [1,1] a = array ([[[1,2],[3,4]],[[5,6],[7,8]]]) a [1,1,1] Eigenschaften von Arrays a. ndim # Anzahl Dimensionen a. shape # Anzahl Einträge in jeder Dimension a. size # Anzahl Elemente a. dtype # Datentyp der Elemente a. itemsize # Nötige Anzahl Bytes für den Datentyp IN8008, Wintersemester 2011/2012 227

Datentypen Exakte Typen (ähnlich C/C++) können angegeben werden Ohne Angabe werden Standardtypen verwendet Einige Typen (v.a. unterschiedlicher Speicherbedarf): int, int8, int16, int32, int64, float, (float8, float16,) float32, float64, complex, complex64, bool, character, object array ([[1,2,3],[4,5,6]], dtype = int ) array ([[1,2,3],[4,5,6]], dtype = complex ) array ([[1,2,3],[4,5,6]], dtype = int8 ) array ([[1,2,3],[4,5,1000]], dtype = int8 ) # falsch array ([[1,2,3],[4,5, "hi"]], dtype = object ) Ausnahme: object_ speichert Zeiger auf Objekte IN8008, Wintersemester 2011/2012 228

Arrays initialisieren Standard-Matrizen (optionaler Parameter: dtype) arange ([ a,] b [, stride ]) # analog zu range, 1D zeros ( (3,4) ) ones ( (1,3,4) ) empty ( (3,4) ) # keine Init. ( schnell ) linspace (a, b [, n]) # n äquid. Werte in [a, b] logspace (a, b [, n]) # log zw. 10^ a und 10^ b identity ( n) # Identität ( Diagonalmat.) fromfunction ( lambda i,j: i+j, (3,4), dtype = int ) def f(i,j): return i+j fromfunction (f, (3,4), dtype = int ) IN8008, Wintersemester 2011/2012 229

Arrays manipulieren >>> a = arange (12); a array ([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) >>> b = a. reshape ((3,4)); b; a array ([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) array ([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) >>> a. resize ((3,4)) # a wird verändert >>> a. transpose () # a wird nicht verändert >>> a. flatten () # a wird nicht verändert # Beispiel : a = arange (144) a. resize ((12,12)) IN8008, Wintersemester 2011/2012 230

Noch mehr Manipulations- und Initialisierungsmethoden Neue Matrizen aus existierenden Matrizen erstellen a = arange (12); a. resize ((3,4)) copy (a) diag (a); tril (a); triu (a) empty_ like ( a) # Kopiert nur die Form zeros_like (a) ones_like (a) a = loadtxt (" matrix. txt ") # fromfile () bei Binärdatei Matrizen ausgeben a. tolist () savetxt (" matrix. txt ", a) # tofile () bei Binärdatei IN8008, Wintersemester 2011/2012 231

Lesen und Schreiben von Array-Elementen Die von Listen bekannte Indizierung kann verwendet werden Dimensionen werden mit Komma separiert a = arange (20); a. resize ((4,5)) a [1] a [1:3,:] a [:,::2] a [::2,::2] a [::2,::2] = [[0, -2, -4],[ -10, -12, -14]] a [1::2,1::2] = -1*a [1::2,1::2] Selektiver Zugriff a[ a > 9] a[a > 9] *= -1 IN8008, Wintersemester 2011/2012 232

Über Elemente von Matrizen iterieren a = arange (20); a. resize ((4,5)) for row in a: print row b = arange (30); b. resize ((2,3,4)) for row in b: for col in row : print col for entry in a. flat : # Iterator print entry IN8008, Wintersemester 2011/2012 233

Arbeiten mit Arrays Schnelle built-in Methoden für Arrays a = arange (12); a. resize ((3,4)) 3*a a **2 a+a **2 sin (a) sqrt (a) prod (a) sum (a) it = transpose ( a) x = array ([1,2,3]) y = array ([10,20,30]) inner (x, y) dot (it, x) cross (x,y) IN8008, Wintersemester 2011/2012 234

Rechnen mit Arrays Es gibt noch viel mehr... var () cov () std () mean () median () min () max () tensordot ()... Matrizen (mit mat) sind Unterklassen von ndarray, aber strikt zweidimensional, mit zusätzlichen Attributen m = mat (a) m. T # Transponierte m. I # Inverse m. A # Als 2d Array m. H # Konjugiert Transponierte IN8008, Wintersemester 2011/2012 235

Untermodule Modul numpy.random Zufallszahlen aus vielen unterschiedlichen Verteilungen Mächtiger als das Standard-Modul random Arbeitet auf Arrays und gibt Arrays zurück from numpy. random import * binomial (10, 0.5) # 10 Versuche, Erfolg 50% binomial (10, 0.5, 15) # 15 Mal voriges binomial (10, 0.5, (3,4)) # (3 x4) Array randint (0, 10, 15) # [0,10), int rand () # [0,1), float rand (3,4) # (3 x4) Array IN8008, Wintersemester 2011/2012 236

Untermodule (2) Modul numpy.linalg Die wichtigsten Werkzeuge für lineare Algebra >>> from numpy. linalg import * >>> a = arange (12); a. resize ((3,4)) >>> norm ( a); norm ( x) # Matrix - und Vektornorm >>> inv ( a) # Inverse der Matrix >>> solve (a, b) # LAPACK LU Zerlegung >>> det ( a) # Determinante >>> eig ( a) # Eigenwerte und Eigenvektoren >>> cholesky ( a) # Cholesky - Zerlegung Modul numpy.fft Fourier-Transformation Und weitere... IN8008, Wintersemester 2011/2012 237

Matplotlib IN8008, Wintersemester 2011/2012 238

Matplotlib Wozu Matplotlib? Objektorientierte Bibliothek für zweidimensionale plots Entworfen mit den Ziel einer ähnlichen Funktionalität wie Matlab plots Insbesondere zum Darstellen wissenschaftlicher Daten, baut auf numpy-datenstrukturen auf Version-Durcheinander Numpy, scipy, ipython und matplotlib werden oft gleichzeitig benutzt Die Pakete hängen voneinander ab (matplotlib benutzt z.b. numpy-arrays Pylab ist ein (inoffizielles) Paket, das alle vier enthält Je nach Betriebssystem(sversion) müssen evtl. unterschiedliche Pakete installiert werden (D.h. Der Modulname im import-befehl kann auch unterschiedlich sein) IN8008, Wintersemester 2011/2012 239

Möglichkeiten zum importieren python/ipython interactive > ipython import scipy, matplotlib. pylab x = scipy. randn (10000) matplotlib. pylab. hist (x, 100) > ipython import numpy. random, matplotlib. pylab x = numpy. random. randn (10000) matplotlib. pylab. hist (x, 100) ipython mit pylab-modus > ipython - pylab x = randn (10000) hist (x, 100) IN8008, Wintersemester 2011/2012 240

Beispiel - Erster Plot http://matplotlib.sourceforge.net/users/screenshots.html from pylab import * x = arange (0.0, 2* pi, 0.01) y = sin (x) plot (x, y) xlabel ( Label fuer x- Achse ) ylabel ( Label fuer y- Achse ) title ( Einfacher sin plot ) grid ( True ) show () IN8008, Wintersemester 2011/2012 241

Beispiel - Subplots verwenden from pylab import * def f(t): s1 = cos (2* pi*t) e1 = exp (-t) return multiply (s1,e1) t1 = arange (0.0, 5.0, 0.1) t2 = arange (0.0, 5.0, 0.02) t3 = arange (0.0, 2.0, 0.01) show () # Gibt einen Fehler aber hilft ; -) subplot (2,1,1) # Zeilen, Spalten, welche anzuzeigen plot (t1, f(t1), go, t2, f(t2), k-- ) subplot (2,1,2) plot (t3, cos (2* pi*t3), r. ) IN8008, Wintersemester 2011/2012 242

Beispiel - Subplots verwenden # Fortsetzung der vorigen Folie subplot (2,1,1) grid ( True ) title ( A tale of 2 subplots ) ylabel ( Gedaempfte Oszillation ) subplot (2,1,2) grid ( True ) xlabel ( Zeit (s) ) ylabel ( Ungedaempft ) IN8008, Wintersemester 2011/2012 243

Beispiel - Histogramm # entweder ipython - pylab oder folgende imports : # from numpy import * # from matplotlib. mlab import * # from matplotlib. pyplot import * mu, sigma = 100, 15 x = mu + sigma * random. randn (10000) n, bins, patches = hist (x, 50, normed =1, \ facecolor = green, alpha =0.75) # Linie mit best fit einzeichnen y = normpdf ( bins, mu, sigma ) plot (bins, y, r--, linewidth =1) axis ([40, 160, 0, 0.03]) show () IN8008, Wintersemester 2011/2012 244

SciPy IN8008, Wintersemester 2011/2012 245

Mehr als NumPy? SciPy hängt von NumPy ab SciPy arbeiten mit NumPy arrays Stellt Funktionalität für Mathematik, Naturwissenschaft und Ingeneursanwendungen zur Verfügung Noch in Entwicklung Bei NumPy geht es im Wesentlichen um (N-dimensionale) Arrays SciPy stellt eine große Zahl an Werkzeugen zur Verfügung, die diese Arrays verwenden SciPy beinhaltet die NumPy Funktionalität (Nur ein import nötig) Es gibt noch einige weitere Bibliothen für wissenschaftliches Rechnen (teils aufbauend auf NumPy und SciPy) Hier daher nur eine kurze Übersicht Weitere Informationen auf www.scipy.org IN8008, Wintersemester 2011/2012 246

SciPy - Unterpakete cluster Clustering Algorithmen constants Physikalische und mathematische Konstanten fftpack Fast Fourier Transformation integrate Integration und Löser für gewöhnliche DGLs interpolate Interpolation und Splines io Ein- und Ausgaberoutinen linalg Lineare Algebra maxentropy Maximale Entropie ndimage N-dimensionale Bildverarbeitung odr Orthogonal distance regression optimize Optimierung und Nullstellensuche signal Signalverarbeitung sparse Dünne Matrizen und zugehörige Routinen spatial Räumliche Datenstrukturen und Algorithmen special Spezielle Funktionen stats Statistische Verteilungen und Funktionen weave Integration von C/C++ Programmen IN8008, Wintersemester 2011/2012 247

Spezielle Funktionen Airy-Funktion Elliptische Integralfunktion Bessel-Funktionen (+ Nullstellen, Integrale, Ableitungen,...) Struve-Funktion Jede Menge statistische Funktionen Gamma-Funktion Hypergeometrische Funktionen Orthogonale Polynome (Legendre, Chebyshev, Jacobi,...) Parabolische Zylinderfunktion Mathieu-Funktion Kelvin-Function... IN8008, Wintersemester 2011/2012 248

Beispiel: Interpolation - Linear import numpy as np import matplotlib. pyplot as plt from scipy import interpolate x = np. arange (0,10) y = np.exp (-x /3.0) f = interpolate. interp1d (x, y) xnew = np. arange (0,9,0.1) plt. plot (x,y, o,xnew,f( xnew ), - ) plt. title ( Lineare Interpolation ) plt. show () IN8008, Wintersemester 2011/2012 249

Beispiel: Interpolation - Kubische Splines import numpy as np import matplotlib. pyplot as plt from scipy import interpolate x = np. arange (0, 2.25* np.pi, np.pi /4) y = np.sin (x) spline = interpolate. splrep (x,y,s =0) xnew = np. arange (0,2.02* np.pi,np.pi /50) ynew = interpolate. splev ( xnew, spline ) plt. plot (x,y, o,xnew, ynew ) plt. legend ([ Interp - Punkte, Kubischer Spline ]) plt. axis ([ -0.05,6.33, -1.05,1.05]) plt. title ( Interpolation mit kubischen Splines ) plt. show () IN8008, Wintersemester 2011/2012 250