Einführung in numerische Methoden für Ingenieure (nach A. Quarteroni, F. Saleri: Wissenschaftliches Rechnen mit MATLAB) Prof. R. Leithner, Dipl. Phys. E. Zander Wintersemester 2010/2011 Allgemeines Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/2 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Allgemeine Informationen • Dozent: Prof. R. Leithner, [email protected] • Betreuer: Dipl. Phys. E. Zander, [email protected] • Sekretariat: Institut für Wärme- und Brennstofftechnik Ina Wolfram Tel: 0531/391-3043 E-Mail: [email protected] Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/3 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Allgemeine Informationen • Literatur: • A. Quarteroni, F. Saleri: Wissenschaftliches Rechnen mit MATLAB Springer, ISBN 3-540-25005-0 http://mox.polimi.it/Springer/ • I. N. Bronstein, K. A. Semendjajew: Taschenbuch der Mathematik Verlag B. G. Teubner, ISBN 3-519-20012-0 oder Verlag Harri Deutsch, ISBN 3-8171-2007-9 • Software: Matlab • Freie Alternativen zu Matlab: GNU Octave, Scilab (Inria) Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/4 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Allgemeine Informationen • Ablauf • Vorlesung: Dienstags (alle zwei Wochen) Zeit: 1400 − 1630 Uhr Ort: Rechenzentrum RZ 012 • Übung: Dienstags (alle zwei Wochen) Gruppe 1: 1400 − 1615 Uhr Gruppe 2: 1615 − 1830 Uhr Ort: Rechenzentrum RZ 65.2 • Klausur • Termin wird noch bekannt gegeben • Inhalt: Beispiele aus Vorlesung und Übung • Ohne Unterlagen, ohne PC Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/5 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Inhalt 1 Zahlen, Vektoren, Matrizen, Matlab 2 Nichtlineare Gleichungen 3 Approximation 4 Numerische Differentiation & Integration 5 Lineare Systeme 6 Eigenwerte & Eigenvektoren 7 Gewöhnliche Differentialgleichungen 8 Partielle Differentialgleichungen/Randwertprobleme Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/6 Fehleranalyse Kapitel 1 Grundlagen: Zahlen, Vektoren, Matrizen, Funktionen, Fehleranalyse Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/7 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Zahlenmengen • Natürliche Zahlen N: 1, 2, 3, . . . Z: . . . , −2, −1, 0, 1, 2, 3, . . . Rationale Zahlen Q: Brüche und periodische Dezimalbrüche • Ganze Zahlen • z.B. 13 7 , 5, −0.333333 . . . • Reelle Zahlen R: rationale und irrationale Zahlen z.B. √ π = 3.1415926 . . . , 2 = 1.41421 . . . Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/8 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Zahlenmengen • Komplexe Zahlen C: z.B. 3 + 2i • Darstellung in der Gaußschen Zahlenebene: Quelle: Wikipedia Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/9 Fehleranalyse Reelle Zahlen Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/10 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fließkommazahlen/Floating-Point-Zahlen • Fließkommazahlen F • Untermenge der reellen Zahlen: F⊂R • Reelle Zahl x wird vom Computer gerundet ⇒ Maschinenzahl: fl(x) • Beispiel x = 1/7 • Dezimaldarstellung: 0.142857 (Achtung: statt “,” wird “.” als Dezimaltrenner verwendet) • Beispiel in Matlab >> 1/7 ans = 0.1429 • Rundung auf 4 Dezimalstellen Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/11 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Ausgabeformate für Fließkommazahlen • Interne Darstellung genauer (16 Dezimalziffern) • Verschiedene Output-Formate: Matlab-Befehl format long format short e format long e format short g format long g Ausgabe 0.14285714285714 1.4286e-01 1.428571428571428e-01 0.14286 0.142857142857143 Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/12 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Interne Darstellung • Interne Darstellung von Zahlen im Computer: x = (−1)s · (0. a1 a2 . . . at ) · β e | {z } Mantisse = (−1)s · m · β e−t • s Vorzeichenbit entweder 0 oder 1 • β Basis größer gleich 2 (im Computer meistens β = 2, manche Prozessoren können aber auch β = 10) • m Mantisse der Länge t, speicherbare Ziffern ai zwischen 0 und β − 1 • e Exponent Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/13 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Interne Darstellung x = (−1)s · (0.a1 a2 . . . at ) · β e • a1 > 0 für eindeutige Darstellung, sonst 0.1 = 0.1 · 100 = 0.01 · 101 nicht eindeutig • F vollständig bestimmt durch: β, t, L und U wobei L ≤ e ≤ U und L < 0, U > 0 F(β, t, L, U ) In Matlab F(2, 53, −1021, 1024) • Zahlenmenge • Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/14 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Rundungsfehler • Roundoff-Error ensteht durch Ersetzung: x ∈ R −→ fl(x) ∈ F • Im allgemeinen klein • M = β 1−t |x − fl(x)| 1 ≤ M |x| 2 = Abstand von 1 zur nächsten Floating-Point-Zahl • Datentyp double: M = 2−52 ≈ 2.22 · 10−16 Kommando in Matlab: eps = 2.22044604925031e-16 • relativer Fehler hier sinnvoller als absoluter Fehler |x − fl(x)| Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/15 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Zahlenbereich • 0 gehört nicht zu F (⇒ Sonderbehandlung) • L und U endlich ⇒ Absolutbetrag ist nach oben und unten beschränkt • Kleinste und größte Zahl in xmin = β L−1 F , xmax = β U (1 − β −t ) • In Matlab mit realmin und realmax: xmin = 2.225073858507201 · 10−308 xmax = 1.7976931348623158 · 10+308 • Abstand zweier Zahlen auf der Zahlengeraden in der Nähe von xmin sehr klein, in der Nähe von xmax sehr groß, bei gleichem relativen Fehler Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/16 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Zahlenbereich • Zahlen kleiner xmin erzeugen Underflow wird als 0 oder auf besondere Weise dargestellt • Zahlen größer xmax erzeugen Overflow ⇒ Sonderbehandlung, Ausgabe in Matlab: Inf • Besondere Ausdrücke: 1/0=Inf, -1/0=-Inf • Beachte: 0 ist Vorzeichenbehaftet: 1/-0=-Inf, -1/-0=Inf • Unbestimmte Formen: 0/0, ∞/∞, 0 · ∞, ∞ − ∞,. . . in Matlab NaN (Not-a-Number) Beispiel: 0/0=NaN, Inf/Inf=NaN, . . . Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/17 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse IEEE 754 Standard for Floating-Point Arithmetic • Standardformate: single und double precision single: sign exponent (8 bits) fraction (23 bits) = 0.15625 31 30 23 22 (bit index) 0 single precision double: sign 63 fraction (52 bit) exponent (11 bit) 52 0 Quelle: Wikipedia • Vorzeichenbit (sign) s: 1 Bit • Exponent (exponent) e: 11 Bit Alle Bits gleich 0: Null oder Underflow Alle Bits gleich 1: Unendlich oder NaN (Not a Number) • Mantisse (fraction) s: 52 Bit (53 Bit Genauigkeit, da a1 immer gleich 1 nicht gespeichert wird) Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/18 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Rechnen mit Floating-Point-Zahlen • Manche Eigenschaften aus R bleiben erhalten, Beispiel: Kommutativität der Addition und Multiplikation: ∀x, y ∈ gilt fl(x + y) = fl(y + x) und fl(xy) = fl(yx) • Aber: keine Assoziativität, keine Distributivität • Keine Eindeutigkeit der 0 mehr gegeben. Beispiel: F >> a = 1; b =1; while a + b ~= a ; b = b /2; end • Mit reellen Zahlen bricht die Schleife nicht ab mit Fließkommazahlen nach endlich vielen Schritten b=1.1102e-16 = M /2 • Für a und b mit b<eps*a gilt in Fließkommaarithmetik a+b=a • Anmerkung: ~= in Matlab bedeutet 6=, e-16 bedeutet 10−16 Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/19 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Rechnen mit Floating-Point-Zahlen • Beispiel: Keine Assoziativität bei Overflow oder Underflow: Sei a=1e308, dann a + (a − a) = a, aber (a + a) − a = Inf • Auslöschung signifikanter Stellen bei Addition zweier Zahlen mit ähnlichem Betrag aber verschiedenem Vorzeichen. Beispiel: >> x = 1. e - 15; ((1 + x ) - 1)/ x ans = 1.1102 Exaktes Ergebnis 1, Fehler größer als 11% Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/20 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Auslöschung Beispiel 1: das Polynom (x − 1)7 f (x) = x7 − 7x6 + 21x5 − 35x4 + 35x3 − 21x2 + 7x − 1 im Intervall [1 − 2 · 10−8 , 1 + 2 · 10−8 ] −15 x 10 6 4 2 0 −2 −4 −6 Quelle: eigenes Bild Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/21 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Auslöschung Beispiel 2: die Folge n−1/2 q p 1 − 1 − 41−n zn2 , n = 2, 3, . . . z2 = 2, zn+1 = 2 konvergiert gegen π. Relativer Fehler |π − zn |/|π| steigt ab 16. Iteration wieder an 0 10 −1 10 −2 10 −3 10 −4 10 −5 10 −6 10 −7 10 −8 10 −9 10 −10 10 0 5 10 15 20 25 30 Quelle: eigenes Bild Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/22 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Robuste Summation • Konstruktion von robusten Algorithmen, d.h. ohne oder mit stark reduzierter Auslöschung, nicht trivial Pn • Beispiel: Summation einer Folge i=1 xi • Idee: Explizites Mitführen von Rundungsfehlern in der Summation • Implementiert im Summationsalgorithmus von W. Kahan ⇒ Speichern der Summe in s, Rundungsfehler in c 1 2 Setze s und c auf 0 In jedem Schritt i: setze y = xi + c setze t = s + y setze c = y − (t − s) setze s = t • Noch genauer: robuste Arithmetik-Algorithmen von J. Shewchuk Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/23 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Kahan-Summation - Implementierung Matlab-Implementierung des Kahan-Summationsalgorithmus function s = kahan_sum ( x ) c =0; s =0; for i =1: numel ( x ) y = x ( i )+ c ; t=s+y; c =y -( t - s ); s=t; end Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/24 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Kahan-Summation - Implementierung Der Kahan-Summationsalgorithmus liefert genauere Ergebnisse: >> format long e >> x =[0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1]; >> sum ( x ) >> kahan_sum ( x ) ans = 9.99 999999 999999 9 e -01 ans = 1 Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/25 Fehleranalyse Komplexe Zahlen Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/26 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Komplexe Zahlen • Menge der komplexen Zahlen C • Form z = x + iy, komplexe Einheit i = √ −1 d.h. i2 = −1 • In Matlab: z=x+i*y oder complex(x,y) Achtung: wenn i als Variable benutzt wird, z=x+1i*y schreiben • Realteil x = Re(z), Imaginärteil y = Im(z) • In Matlab: x=real(z) bzw. y=imag(z) • Konjugiert komplexe Zahl: z̄ = x − iy In Matlab: conj(z) Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/27 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Polardarstellung • Trigonometrische Darstellung/Polardarstellung z = reiϕ = r(cos(ϕ) + i sin(ϕ)) p mit Betrag r = x2 + y 2 (Matlab: abs) und Argument ϕ Winkel zwischen z und der x-Achse (Matlab: angle) • Beispiel: 90 5 120 >> z =3+ i *3; abs ( z ) , angle ( z ) ans = 4.2426 ans = 0.7854 >> compass ( z ) 60 4 3 150 30 2 1 180 0 210 330 240 300 270 Quelle: eigenes Bild Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/28 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Eindeutigkeit komplexer Funktionen • Matlab: alle Operationen sind implizit komplex, Beispiel: >> ( -8)^(1/3) ans = 1 + 1.7321 i statt −2 wie erwartet • Potenzieren mit ^ Symbol • Alle Zahlen der Form rei(ϕ+2kπ) gleich • ⇒ 3 verschiedene dritte Wurzeln √ z1 = 3 reiϕ/3 , √ z2 = 3 rei(ϕ/3+2π/3) , √ z3 = 3 rei(ϕ/3+4π/3) Quelle: A. Quarteroni, F. Saleri Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/29 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Eindeutigkeit komplexer Funktionen • Matlab wählt erste komplexe Wurzel im Uhrzeigersinn (von der positiven reellen Achse aus) • Euler-Formeln 1 iϕ e + e−iϕ 2 1 iϕ sin(ϕ) = e − e−iϕ 2i cos(ϕ) = Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/30 Matrizen und Vektoren Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/31 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Matrizen • Matrix A mit m Zeilen und n Spalten a11 a21 A= . .. a12 a22 .. . ··· ··· .. . a1n a2n .. . am1 am2 · · · amn = Menge von m × n Elementen • Kompakte Schreibweise: A = (aij ) • Eingabe in Matlab: Spalten durch “,” oder “ ” (Leerzeichen) getrennt, Zeilen durch “;”. Beispiel: >> A =[1 2 3; 4 5 6] A = 1 2 3 4 5 6 Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/32 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Elementare Operationen auf Matrizen • Summe zweier Matrizen A = (aij ) und B = (bij ) ⇒ A + B = (aij + bij ) • Produkt einer Matrix A = (aij ) mit einer Zahl λ ⇒ λA = (λaij ) • Beispiel in Matlab: >> A =[1 2 3; 4 5 6]; B =[7 8 9; 10 11 12]; >> A + B ans = 8 10 12 14 16 18 >> 10* A ans = 10 20 30 40 50 60 Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/33 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Elementare Operationen auf Matrizen • • • • Extraktion von Matrixelementen aij : A(i,j) Extraktion von Spaltenvektoren: A(:,j) Extraktion von Zeilenvektoren: A(i,:) Beispiel in Matlab: >> A =[1 2 3; 4 5 6]; >> A (2 ,3) , A (: ,2) , A (1 ,:) ans = 6 ans = 2 5 ans = 1 2 3 Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/34 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Matrixmultiplikation • Matrixprodukt zweier Matrizen A und B nur definiert wenn: A eine m × p, B eine p × n Matrix ist • Ergebnis: m × n Matrix C cij = p X aik bkj k=1 Beispiel: >> A =[1 2 3; 4 5 6]; B =[13 14; 15 16; 17 18]; >> C = A * B C = 94 100 229 244 Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/35 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Matrizenmultiplikation - Falksches Schema • Falksches Schema zur Multiplikation von Matrizen • Beispiel: multipliziere A ∈ 4×5 mit B ∈ 5×3 R R 2 AB=C A= 2 3 -2 -1 2 3 4 1 -3 4 0 1 -3 4 2 -1 0 3 -4 -7 29 -12 3 -2 2 1 0 13 20 7 =B =C -1 3 -1 -2 -4 -9 -5 -14 3 3 -4 2 -2 -20 1 3 Quelle: eigenes Bild Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/36 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Spezielle Matrizen • Einheitsmatrix In der Dimension n, quadratische n × n Matrix mit 1 auf der Diagonalen, sonst 0 1 0 ··· 0 0 1 · · · 0 In = . . . .. . . . . . . . 0 0 ··· 1 • In Matlab: eye(n) • Nullmatrix 0 enthält nur Nullen • In Matlab: zeros(m,n) Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/37 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Inverse einer Matrix • Inverse X = A−1 einer Matrix A: Es gilt: XA = AX = I • In Matlab: X=inv(A) • Achtung: Inverse wird in der Numerik sehr selten explizit berechnet x = A−1 b heißt immer: löse das Gleichungssystem Ax = b • Inverse existiert genau dann, wenn Determinante ungleich Null Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/38 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Determinante • Mathematisch: Rekursive Definition durch Laplace-Regel: a11 P n i+j det(A )a det(A) = ij ij j=1 (−1) falls n = 1, für n > 1, und i = 1 . . . n beliebig Aij entsteht aus A durch Streichung von Zeile i und Spalte j Wert der Determinanten unabhängig von i • Beispiele: n=1 n=2 det(A) = a11 det(A) = a11 a22 − a21 a12 Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/39 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Determinante • Berechnung bei 3 × 3 Matrizen det(A) = a11 a22 a33 + a31 a12 a23 + a21 a32 a13 − a11 a23 a32 − a31 a13 a22 − a21 a33 a12 • Sarrus-Regel: Quelle: Wikipedia Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/40 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Determinante • Berechnung bei 4 × 4 Matrizen • Benutze Laplace-Regel det(A) = a11 det(A11 )−a12 det(A12 )+a13 det(A13 )−a14 det(A14 ) a11 a21 a31 a41 a12 a22 a32 a42 a13 a23 a13 a14 a14 a11 a24 a − 21 a34 a31 a44 a41 a12 a22 a32 a42 a13 a23 a13 a14 a14 a24 +··· a34 a44 • Dann wieder Sarrus-Regel für 3 × 3 Matrizen Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/41 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Determinante und Inverse • Determinante in Matlab mit: det(A) • Achtung: Berechnung mit Laplace-Regel numerisch ineffizient (O(n!)) und instabil (Auslöschung!), • Matlab benutzt LR-Zerlegung/Gauß-Elimination zur Berechnung • Produktregel: det(AB) = det(A) det(B) • Für Diagonal- und Dreiecksmatrizen gilt: det(A) = a11 a22 · · · ann • ⇒ Genaueres in Kapitel 5 Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/42 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Determinante und Inverse Reguläre Matrix >> A =[1 2; 3 4]; >> Det = det ( A ) Det = -2 >> X = inv ( A ) X = -2 1.5 1 -0.5 Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/43 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Determinante und Inverse Singuläre Matrix >> A =[1 2; 2 4]; >> Det = det ( A ) Det = 0 >> X = inv ( A ) Warning : Matrix is singular to working precision . X = Inf Inf Inf Inf Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/44 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Diagonal- und Dreiecksmatrizen • Diagonalmatrizen: diag(v), v Vektor der Dimension n • diag(v,m), erzeugt Matrix der Dimension n+abs(m) mit Vektor v auf m-ter oberen Nebendiagonalen >> A = diag ([1 2 3] , -1) A = 0 0 0 0 1 0 0 0 0 2 0 0 0 0 3 0 • diag(A) liefert die Diagonalelemente der Matrix A Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/45 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Diagonal- und Dreiecksmatrizen • Obere Dreicksmatrizen: aij = 0 für i > j Untere Dreicksmatrizen: aij = 0 für i < j • In Matlab mit triu(A) bzw. tril(A) >> A =[1 2 3; 4 5 6; 7 8 9]; triu ( A ) ans = 1 2 3 0 5 6 0 0 9 • Entsprechend diag gibt es auch triu( A, m ) und tril( A, m ) • Die Matrizen triu( A, -1 ) und tril( A, 1 ) heißen auch obere und untere Hessenbergmatrix Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/46 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Transponierte Matrix • Transponieren = Vertauschen von Zeilen und Spalten • Wenn A = (aij ), dann transponierte Matrix AT = (aji ) • In Matlab mit Apostroph A’ >> A =[1 2 3 4 5 6 7 8 9]; A ’ ans = 1 4 7 2 5 8 3 6 9 • Wenn A = AT heißt A symmetrisch Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/47 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Vektoren • Vektoren in Fettbuchstaben: v • Spaltenvektor: Beispiel v=[1;2;3] • Zeilenvektor: Beispiel v=[1,2,3] • Nullvektor 0: zeros(n,1) (Achtung: zeros(n) erzeugt n × n Null-Matrix) • Vektor mit nur Einsen: 1: ones(n,1) Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/48 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Lineare Abhängigkeit, Basis • System von Vektoren {x1 , . . . xm } heißt linear unabhängig, wenn α1 x1 + · · · + αm xm = 0 nur erfüllt ist wenn α1 = · · · = αm = 0 • n linear unabhängige Vektoren B = {x1 , . . . xn } in bildet eine Basis von • Jeder Vektor in Rn (oder Cn) Rn (oder Cn) Rn hat eindeutige Darstellung w= n X wk x k k=1 wk Komponenten von w bezgl. der Basis B • Kanonische Basis: {e1 , . . . en } (i-te Komponente von ei ist 1, der Rest 0) Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/49 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Vektorprodukte • Skalarprodukt oder inneres Produkt v · w zwischen Vektoren v, w mit Komponenten {vk } und {wk } n X (v, w) = vT w = v k wk k=1 • In Matlab: v’*w oder mit dot(v,w) • Länge (Norm) eines Vektors v u n p uX vk2 kvk = (v, v) = t k=1 • In Matlab: norm(v) Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/50 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Vektorprodukte • Vektorprodukt u = v × w nur für v, w ∈ R3 steht senkrecht auf v und w Länge ist kuk = kvkkwk sin(α) (Winkel α = ∠(v, w) ) • In Matlab: cross(v,w) • Komponentenweise Multiplikation u = v w ⇒ ui = vi wi • In Matlab mit u=v.*w ⇒ alle Operationen, denen ein Punkt vorangestellt werden wirken komponentenweise (z.B. auch v.^2) Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/51 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Beispiele für Vektorprodukte • Beispiel: Arbeit: Kraft entlang eines Weges Skalarprodukt: W = G · s, Betrag: W = |G||s| cos α = |FH ||s| • Beispiel: Drehmoment: senkrecht auf Kraft und Ortsvektor Vektorprodukt: M = r × F, Betrag: |M| = |r||F| sin θ = |r||F⊥ |, Quelle: Wikipedia Quelle: Wikipedia Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/52 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Vektorprodukte Beispiele für Produkte zwischen Vektoren >> v =[1;2;3]; w =[4;5;6]; >> w ’* v ans = 32 >> dot (w , v ) ans = 32 >> cross (w , v ) ans = 3 -6 3 >> w .* v ans = 4 10 18 Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/53 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Eigenwerte und Eigenvektoren • Gegeben: n × n Matrix A, ein Vektor v, eine (komplexe) Zahl λ, für die gilt: Av = λv ⇒ v heißt Eigenvektor ⇒ λ heißt Eigenwert • Berechnung im Allgemeinen kompliziert • Für Diagonal und Dreicksmatrizen: ⇒ Eigenwerte entsprechen den Diagonalelementen • Wichtig in vielen technischen Anwendungen: z.B. Schwingungsanalyse • Genaueres: Kapitel 6 Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/54 Reelle Funktionen Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/55 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Plotten reeller Funktionen • Gegeben: Funktion f auf Intervall (a, b) Gesucht: Verlauf, Nullstellen, Integral, Ableitung, . . . • Beispiel: Funktion f (x) = x2 − 1 + ex im Intervall [−1, 1] 3 fun = ’x ^2 -1+ exp ( x ) ’; lims =[ -1 ,1]; fplot ( fun , lims ); grid on ; 2.5 2 1.5 1 0.5 0 −0.5 −1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 Quelle: eigenes Bild Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/56 0.8 1 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Nullstellen • Anzahl und Lage der Nullstellen ein Funktion nicht a priori feststellbar (⇒ Ausnahme: Polynome) • Nullstelle in der Nähe von x0 : In Matlab: fzero(fun,x0) • Nullstelle im Intervall [x0 , x1 ]: In Matlab: fzero(fun,[x0 x1]) Voraussetzung: fun wechselt im Intervall das Vorzeichen • ⇒ Verfahren in Kapitel 2 Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/57 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Nullstellen • Beispiel: Funktion f (x) = x2 − 1 + ex • Nullstellen sind bei 0 und ca. −0.7 >> fun = ’x ^2 -1+ exp ( x ) ’; fzero ( fun , 1 ) Zero found in the interval [ -0.28 , 1.9051] ans = 5.4422 e -18 >> fzero ( fun , -1 ) Zero found in the interval [ -0.68 , -1.22627] ans = -0.7146 Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/58 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Nullstellen • Beispiel: Funktion f (x) = x2 − 1 + ex (wie vorher) • Suche Nullstellen in den Intervallen [−0.2, 1] und [−1, −0.2] >> fzero ( fun ,[ -0.2 ,1]) Zero found in the interval [ -0.2 , 1] ans = -5.2609 e -17 >> fzero ( fun ,[ -1 , -0.2]) Zero found in the interval [ -1 , -0.2] ans = -0.7146 Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/59 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Polynome • Menge der Polynome vom Grad n: Pn 2 n pn (x) = a0 + a1 x + a2 x + · · · + an x = n X ak xk k=0 • Darstellung eines Polynoms in Matlab: p=[an,...,a2,a1,a0] (Reihenfolge!!) • Auswertung an der Stelle x mit polyval Beispiel: Polynom x4 + 3x − 1 an den Punkten x = 0, 1 und 2 >> p =[1 0 0 3 -1]; x =[0 , 1 , 2]; polyval (p , x ) ans = -1 3 21 Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/60 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Nullstellen eines Polynoms • α Nullstelle von p, wenn p(α) = 0, Polynom vom Grad n hat genau n Nullstellen (⇒ Multiplizität) Nullstellen reell oder in konjugiert komplexen Paaren • Berechnung der Nullstellen in Matlab mit roots • Beispiel: Polynom x3 − 6x2 + 11x − 6: >> p =[1 -6 11 -6]; roots ( p ) ’ ans = 3.0000 2.0000 1.0000 Nullstellen (1,2 und 3) exakt Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/61 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Nullstellen eines Polynoms • Zweites Beispiel: Polynom p(x) = x7 − 7x6 + 21x5 − 35x4 + 35x3 − 21x2 + 7x − 1 Einzige Nullstelle α = 1 (siebenfache Nullstelle) • Ergebnis in Matlab: >> p =[1 -7 21 -35 35 -21 7 -1]; roots ( p ) ans = 1.0094 1.0059 + 0.0073 i 1.0059 - 0.0073 i 0.9979 + 0.0092 i ... Mögliche Erklärung: Rundungsfehler, Auslöschung Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/62 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Multiplikation und Division von Polynomen • Multiplikation von Polynomen in Matlab mit p=conv(p1,p2) von Engl. convolution=Faltung (der Koeffizienten) • Division (mit Rest) durch [q,r]=deconv(p1,p2), so dass p1=conv(p2,q)+r >> p1 =[1 0 0 0 -1]; p2 =[1 0 0 -1]; >> p = conv ( p1 , p2 ) p = 1 0 0 -1 -1 0 >> [q , r ]= deconv ( p1 , p2 ) q = 1 0 r = 0 0 0 1 -1 0 1 Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/63 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Ableitung und Integral von Polynomen • Ableitung und Integration von Polynomen einfach • Ableitung von xn ist nxn−1 1 • Stammfunktion von xn ist n+1 xn+1 + C • In Matlab: mit polyder und polyint • Interpolation mit polyfit Sind n + 1 Werte von p an n + 1 unterschiedlichen Stellen bekannt liefert polyfit(p) die n + 1 Koeffizienten Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/64 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Integration und Differentiation 6 • Differentiation: Steigung der Tangente der 4 Kurve in einem Punkt 2 • Grenzwert des Differenzenquotienten f (x + h) − f (x) f 0 (x) = lim h→0 h • Raum der stetigen Funktionen C 0 ([a, b]), Stetig differenzierbare Funktionen C 1 ([a, b]), Zweifach stetig differenzierbar C 2 ([a, b]), etc. 0 −2 −4 −6 2 2.2 2.4 2.6 2.8 3 3.2 3.4 Quelle: eigenes Bild Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/65 3.6 3.8 4 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Integration und Differentiation 3 • Integral: Fläche unter der Kurve Z b 2.5 2 f (x)dx 1.5 a • Problem: Stammfunktion existiert oft nicht, 1 0.5 oder ist schwierig zu finden oder sehr aufwendig zu berechnen • ⇒ Numerische Integration Kapitel 4 0 −0.5 0.5 1 1.5 2 2.5 Quelle: eigenes Bild Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/66 3 3.5 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Hauptsatz der Differential und Integralrechnung Theorem (Hauptsatz der Differential und Integralrechnung) Sei f eine stetige Funktion im halboffenen Intervall [a, b), dann ist Z x F (x) = f (t)dt a eine differenzierbare Funktion, Stammfunktion von f , genannt, und erfüllt ∀x ∈ [a, b): F 0 (x) = f (x) Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/67 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Mittelwertsatz der Integralrechnung Theorem (Mittelwertsatz der Integralrechnung) Sei f eine stetige Funktion im Intervall [a, b] und x1 , x2 ∈ [a, b], dann ∃ξ ∈ (x1 , x2 ), so dass Z x2 1 f (ξ) = f (t)dt x2 − x1 x1 8 6 4 2 Ξ1 2 3 Ξ2 4 5 Quelle: eigenes Bild Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/68 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Mittelwertsatz der Differentialrechnung 6 Theorem (Mittelwertsatz der Differentialrechnung) C 1 ([a, b]) Sei f ∈ eine stetig differenzierbare Funktion im Intervall [a, b] und x1 , x2 ∈ [a, b], dann ∃ξ ∈ (x1 , x2 ), so dass f (b) − f (a) f 0 (ξ) = b−a 5 4 3 2 1 0 −1 −2 2 2.2 2.4 2.6 2.8 3 3.2 Quelle: eigenes Bild Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/69 3.4 3.6 3.8 4 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Taylor-Polynom • Gegeben: Funktion f mit n + 1 stetigen Ableitungen im Punkt x0 • Dann kann f in einer Umgebung von x0 durch das Taylor-Polynom vom Grad n im Punkt x0 approximiert werden 1 Tn (x) = f (x0 ) + (x − x0 )f 0 (x0 ) + · · · + (x − x0 )n f (n) (x0 ) n! n X (x − x0 )k (k) = f (x0 ) k! k=0 Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/70 Fehleranalyse Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/71 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Fehleranalyse • Fehler im wissenschaftlichen Rechnen unvermeidbar • Beispiel: Darstellung der reellen Zahlen im Computer • ⇒ Fehler nicht vermeiden, sondern kontrollieren • Verschiedene Fehlerarten: • Modellfehler eM : ersetzen der physikalischen Realität durch ein mathematische Modell • Rundungsfehler ea : • Abbruchfehler et (truncation error): beispielsweise durch abbrechen einer unendlichen Reihe nach endlich vielen Gliedern • Berechnungsfehler ec (computational error): Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/72 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehlerarten: Beispiel • PP: physikalisches Problem ⇒ Lösung xph • MM: mathematische Modell ⇒ Lösung x • NP: numerisches Problem ⇒ Lösung xn • Lösung mit Rundungs- und Abbruchfehler: x̂ Quelle: A. Quarteroni, F. Saleri Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/73 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Modellfehler (Beispiel) • Druckverlust-Gleichung als Vereinfachung der Impulsbilanz berechnet den Druckverlust sehr genau, aber: • beim schnellen Öffnen und Schließen eines Ventils entstehen Druckschwingungen • Druckverlust-Gleichung reicht hier nicht aus, nur beim langsamen Öffnen und Schließen des Ventils • Zur Beschreibung der Druckschwingungen muss die vollständige Impulsbilanz gerechnet werden Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/74 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Absoluter und relativer Fehler • Exakte Lösung x, numerische Lösung x̂ • Absoluter Rechenfehler eabs = |x − x̂| (| · | Absolutbetrag oder anderes Maß, nach Bedeutung von x) • Relativer Rechenfehler (wenn x 6= 0) erel = |x − x̂| |x| Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/75 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Konvergenz • Kontinuierliches Modell: Approximation durch Diskretisierung • Fehler abhängig von Diskretisierungsparameter h • Konvergenz: wenn h → 0 geht, dann x̂ → x • Wenn e ≤ Chp C Konstante, unabhängig von h • Verfahren konvergent von der Ordnung p • Wenn C 0 existiert mit e ≥ C 0 hp , dann e ' Chp • Beispiel: Approximiere f 0 (x) durch (f (x + h) − f (x))/h Fehler geht gegen 0, wenn h → 0 (⇒ konvergent) Falls f ∈ C 2 dann e ≤ Ch (⇒ Ordnung 1) Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/76 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Fehlerordnung • Konvergenzuntersuchung: doppelt-logarithmische Graphen: Abszisse log(h), Ordinate log(e) • Vorteil: wenn e ' Chp dann log(e) ' log(C) + p log(h) p ist Steigung der Geraden log(e) 1e4 1e2 1e0 1e−2 1e−4 1e−6 1e−8 • Größere Steigung⇒ höhere Ordnung Abbildung: blaue Gerade Ordung 1, grüne Gerade Ordnung 2 • Matlab: loglog(x,y) 1e−10 1e−12 1e−14 1e−16 1e−18 1e−10 1e−5 Quelle: eigenes Bild Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/77 1e0 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehlerordnung • Andere Möglichkeit • Fehler ei für Werte hi bekannt, (i = 1 . . . N ) • Annahme ei ' Chpi dann pi = log(ei /ei−1 )/ log(hi /hi−1 ), i = 2...N • Besser: lineare Regression log(ei ) über log(hi ) • Fehler eigentlich nicht berechenbar Abschätzung des Fehlers ⇒ Fehlerschätzer Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/78 Fehleranalyse Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Kosten • Lösung eines Problems am Computer ⇒ Algorithmus Algorithmus = Vorschrift in Form eines endlichen Textes, die in eindeutiger Weise alle zur Lösung des Problems notwendigen Schritte präzisiert • Rechenaufwand eines Algorithmus (computational cost) ⇒ Anzahl arithmetischer Operationen • Maßeinheit: Floating-Point-Operationen (Flops) • Vielfache: Megaflops=106 Flops Gigaflops=109 Flops Teraflops=1012 Flops • Schnellster Rechner: 2003: 136 Teraflops 2010: 2560 Teraflops (China) Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/79 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Komplexität • Genaue Anzahl an Flops oft unbekannt (und weniger wichtig) ⇒ Größenordnung in Funktion eines Parameters d • Anzahl von Operationen: • • • • • konstante Komplexität O(1) (von d unabhängig) lineare Komplexität O(d) polynomiale Komplexität O(dm ) exponentielle Komplexität O(cd ) faktorielle Komplexität O(d!) • Symbol O(f (d)) gelesen: “groß O von f(d)” bedeutet: “verhält sich für große d wie eine Konstante mal f (d)” Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/80 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Komplexität – Beispiel 1 Matrix-Vektor Produkt • Quadratische Matrix A ∈ Rn×n, Vektor v ∈ Rn • Berechnung der j-ten Komponente von Av aj1 v1 + aj2 v2 + . . . aj1 vn • n Produkte und n − 1 Summen ⇒ n(2n − 1) Operationen zur Berechnung von n Komponenten ⇒ Quadratische Komplexität O(n2 ) • Ähnlich: Matrixprodukt O(n3 ) Operationen Aber: geschickterer Algorithmus (Strassen): O(nlog2 7 ) Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/81 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Komplexität – Beispiel 2 Berechnung der Determinante • Rekursionsformel hat faktorielle Komplexität: O(n) • Beispiel n = 24: Entspricht ca. 6.2 · 1023 Operationen Rechner mit 1000 Teraflops braucht ca. 20 Jahre • ⇒ Bedarf an effizienten numerischen Verfahren • Beispiel: Berechnung der Determinante durch Rückführung auf Matrixprodukte (Strassen-Algorithmus): Komplexität O(nlog2 7 ) Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/82 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Laufzeit • Komplexität wichtig für theoretische Untersuchungen • Effektivität einer Implementierung auch durch andere Faktoren beeinflußt (beispielsweise Speicherzugriffe) • Maß für Geschwindigkeit: CPU-Zeit (CPU = central processing unit) • Reine Verarbeitungszeit ohne Laden der Daten (Input-Phase) und Speichern der Resultate (Output-Phase) • Gesamte Ausführungszeit: Elapsed-Time • In Matlab: CPU-Zeit mit tic und toc (früher: cputime) Elapsed-Time mit etime Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/83 Allgemeines Reelle Zahlen Komplexe Zahlen Matrizen und Vektoren Reelle Funktionen Fehleranalyse Beispiel Laufzeitmessung der Berechnung des Matrix-Vektor Produkts n = A = T = for 4000; step = 50; rand (n , n ); v = rand (n ,1); [ ]; sizeA = [ ]; k = 50: step : n AA = A (1: k ,1: k ); vv = v (1: k ); tic ; b = AA * vv ; tt = toc ; T = [T , tt ]; sizeA = [ sizeA , k ]; Quelle: A. Quarteroni, F. Saleri end plot ( sizeA , T , ’o ’ ) Prof. R. Leithner, E. Zander | Einführung in numerische Methoden für Ingenieure | 1/84