Start Inhalt Numerik mit MATLAB 1(24) 7. Numerik mit MATLAB 7.1 Lineare Algebra Normen. Matrixzerlegungen. Gleichungssysteme. 7.2 Lineare Ausgleichsrechnung qr, svd, pinv, \. 7.3 Interpolation interp1, interp2, spline. 7.4 Polynome Auswertung, NST, Ableitung u.a. Fortsetzung Inhalt Kap. 7 nächste Folie
Start Inhalt Numerik mit MATLAB 2(24) 7.5 Nullstellen fzero. 7.6 Optimierung fminsearch, fminbnd. 7.7 Numerische Integration quad und Verwandte. 7.8 Anfangswertaufgaben Die ode...-routinen.
Start Inhalt Numerik mit MATLAB 3(24) Normen, Konditionszahl Vektornorm x p norm(x,p) p 1, p = ±inf (Standard: p=2) Matrixnorm A p norm(a,p) p = 1, 2, inf, fro (Standard: p=2) Konditionszahl cond p (A) cond(a,p) außerdem oft nützlich größter bzw. kleinster Eintrag jeder Spalte von A max(a), min(a) Summe bzw. Produkt jeder Spalte von A sum(a), prod(a)
Start Inhalt Numerik mit MATLAB 4(24) Matrix Analysis Rang einer Matrix rank(a) Spur einer Matrix trace(a) = sum(diag(a)) Determinante einer Matrix det(a) Orthonormalbasis des Nullraums von A null(a) Orthonormalbasis des Bildraums von A orth(a)
Start Inhalt Numerik mit MATLAB 5(24) Inverse und Zerlegungen (1) Inverse A 1 von A inv(a) LU-Zerlegung L U = P A Q [L,U] = lu(a) [L,U,P] = lu(a) [L,U,P,Q] = lu(a) Cholesky-Zerlegung R T R = A R = chol(a) QR-Zerlegung Q R = A [Q,R] = qr(a) [Q,R] = qr(a,0)
Start Inhalt Numerik mit MATLAB 6(24) Inverse und Zerlegungen (2), Eigenwerte Singulärwertzelegung U S V T = A [U,S,V] = svd(a) [U,S,V] = svd(a,0) Moore-Penrose-Pseudoinverse A pinv(a) Eigenwerte und Eigenvektoren für Ax = λx oder Ax = λbx d = eig(a,b) [V,D] = eig(a) [V,D] = eig(a,b)
Start Inhalt Numerik mit MATLAB 7(24) Lösung linearer Gleichungssyteme (1) Der Backslash Operator \ (left division) Zur Lösung eines linearen Gleichungssystems Ax = B wird die sogenannte Linksdivision benutzt: x = A\B Bemerkungen: - Das Ergebnis entspricht x = inv(a) B, wird aber anders (effektiver) berechnet. - Besitzt Ax = B keine Lösung oder ist A nicht quadratisch, ist A\B die Lösung des zugehörigen Ausgleichsproblems.
Start Inhalt Numerik mit MATLAB 8(24) Lösung linearer Gleichungssyteme (2) Verwendung von linsolve X = linsolve(a,b) löst AX = B mittels LU-Faktorisierung und Pivotisierung, falls A quadratisch ist, ansonsten mittels QR-Faktorisierung mit Spaltenpivotisierung. X = linsolve(a,b,opts) löst AX = B oder A T X = B mit einem geeigneten Algorithmus, der passend zu den in opts spezifizierten Eigenschaften der Matrix A gewählt wird. Details sind der Online-Hilfe zu entnehmen.
Start Inhalt 9(24) Lineare Ausgleichsrechnung (1) Lösen eines linearen Ausgleichsproblems b Ax 2 min mit A R m n, b R n, i.a. m > n. Normalengleichung (numerisch nicht empfehlenswert) x = (A *A)\(A *b); QR-Faktorisierung [Q,R] = qr(a); c = Q *b; n = size(a,2); x = R(1:n,1:n)\c(1:n); kürzer: [Q,R] = qr(a,0); x = R\Q *b; noch kürzer: x = A\b;
Start Inhalt 10(24) Lineare Ausgleichsrechnung (2) Singulärwertzerlegung und Pseudoinverse [U,S,V] = svd(a); bzw. ökonomische Variante: [U,S,V] = svd(a,0); x = V*(S\U *b); bzw. mit Aufruf der Pseudoinversen x = pinv(a)*b;
Start Inhalt 11(24) Interpolation (1) 1D Interpolation: interp1 Grundvariante: yi = interp1(x,y,xi) x - Stützstellenvektor y - Funktion (von x) oder Vektor gleicher Länge wie x xi - Interpolationsstelle(n) Erweiterungen: yi = interp1(x,y,xi,method) yi = interp1(x,y,xi,method, extrap ) pp = interp1(x,y,method, pp ) wobei method eine der folgenden Zeichenketten ist: nearest, linear, cubic, spline
Start Inhalt 12(24) Interpolation (2) 1D Interpolation: interp1 Spezialfälle: extrap für Extrapolation verwenden wenn häufiges (nicht gleichzeitiges) Interpolieren nötig ist: pp = interp1(x,y,method, pp ); yi = ppval(pp,xi); äquivalent mit yi = interp1(x,y,xi,method, extrap ); kubische Spline Interpolation statt interp1(x,y,xi, spline ) Aufruf von yi = spline(x,y,xi) oder pp = spline(x,y); yi = ppval(pp,xi);
Start Inhalt 13(24) Interpolation (3) 2D Interpolation: interp2 Voraussetzung: 2D Stützstellen auf kartesischem Gitter Grundvariante: zi = interp2(x,y,z,xi,yi,method) mit method = nearest linear spline cubic liefert Interpolationswerte zi an den Stellen (xi,yi) basierend auf den Daten X, Y, Z, wobei X, Y ein gleichmäßiges Gitter bilden müssen, zum Beispiel erzeugt durch [X,Y] = meshgrid(...); Z = func (X,Y).
Start Inhalt 14(24) Interpolation (4) Bemerkungen: Zur Interpolation über gestreuten Daten kann die Funktion TriScatteredInterp verwendet werden. Für weitergehende Splineinterpolation gibt es die zusätzliche SPLINE TOOLBOX.
Start Inhalt 15(24) Polynome (1) Ein Polynom p(x) = a n x n + a n 1 x n 1 +... + a 1 x + a 0 wird durch den Vektor p = [ a_n... a_1 a_0]; repräsentiert. Auswahl von Funktionen zur Arbeit mit Polynomen. roots - Nullstellenbestimmung p1=[1 2 1]; roots(p1) ans = -1-1
Start Inhalt 16(24) Polynome (2) conv, deconv - Multiplikation und Division von Polynomen p1=[1 2 1]; p3 = [1 1]; p4 = [1-1]; w = conv(p3,p4) ==> [1 0-1] v = deconv(p1,p3) ==> [1 1] v = deconv(p1,p4) ==> [1 3] [v,r] = deconv(p1,p4) ==> [1 3] [0 0 4] poly - Erzeugung spezieller Polynome poly(a) ==> charakteristisches Polynom der Matrix A poly(r) ==> p(x) = (x r 1 )(x r 2 )... (x r n ) Bsp.: r = [1 2 3]; p = poly(r); ==> [1-6 11-6]
Start Inhalt 17(24) Polynome (3) polyder - Bestimmung der Ableitung eines Polynoms oder der Ableitung des Produktes bzw. des Quotienten zweier Polynome p1=[1 2 1]; p3 = [1 1]; p4 = [1-1]; polyder(p1) ==> [2 2] polyder(p3,p4) ==> [2 0] [q,d] = polyder(p1,p3) ==> q = [1 2 1] d = [1 2 1] polyval - Polynomauswertung p1=[1 2 1]; y = polyval(p1,[-1 0 1 1.5]) ==> y = [ 0 1.0000 4.0000 6.2500 ] polyfit - Bestimmung der polynomialen Ausgleichskurve vom Grad n zur Datenmenge (x i, y i ), i = 1,..., m p = polyfit(x,y,n);
Start Inhalt 18(24) Nullstelle von f (x) fzero - Nullstelle einer Funktion einer Veränderlichen x = fzero(fun,x0) Ist x0 skalar, wird eine Nullstelle von fun(x) in der Nähe von x0 gesucht. Ist x0 = [a b] mit fun(a)*fun(b) < 0, wird eine Nullstelle im Intervall [a b] gesucht. Beispiel: f (x) = x 2 + 2x 8 = (x 2)(x + 4) fun=@(x) x^2 + 2*x - 8; fzero(fun,2.5) ==> 2 fzero(fun, -3) ==> -4 fzero(fun,[1 3]) ==> 2 zero(fun,[-5 3]) ==>??? Error using ==> fzero at 293
Start Inhalt 19(24) Optimierung Minimum einer Funktion f (x) fminbnd - Minimum einer Funktion einer Veränderlichen auf einem Intervall x = fminbnd(fun,x1,x2,options) fminsearch - Minimum einer Funktion mehrerer Veränderlicher x = fminsearch(fun,x0,options) Für weitergehende Optimierungsaufgaben gibt es die zusätzliche OPTIMIZATION TOOLBOX. (Tipp: fsolve zur Lösung nichtlinearer Gleichungssysteme.)
Start Inhalt 20(24) Numerische Integration Numerische Approximation für b f (x) dx a quad - Basisvariante q = quad(fun,a,b) oder quad(fun,a,b,tol) fun = @(x) sin(x.^2); quad(fun,0,pi) ==> 0.772651637187877 quad(fun,0,pi,1.e-2) ==> 0.770961036474614 quad(fun,0,pi,1.e-8) ==> 0.772651711427424 quadl, quadv, quadgk Anwendungsbereiche siehe Online Hilfe Für mehrdimensionale Integrale (Kubatur): dblquad, quad2d, triplequad
Start Inhalt 21(24) Anfangswertaufgaben (1) Näherungsweise Lösung von Anfangswertaufgaben y (t) = f (t, y), y(t 0 ) = y 0 wobei y(t) und f (t, y) Vektoren sein können. Beispiel einer AWA für eine skalare Funktion y(t) y (t) = 2ty, y(0) = 1, t [0, 1.2] func = @(t,y) 2*t*y ; ode23(func,[0 1.2],1) % oder [T,Y] = ode23(func,[0 1.2],1); Bem.: Erster Aufruf plottet sofort die Lösung, kein Zugriff auf Lösungsdaten T,Y. Im zweiten Beispiel stehen T,Y zur Weiterverarbeitung zur Verfügung, aber kein unmittelbarer Plot.
Start Inhalt 22(24) Anfangswertaufgaben (2) Lösungsroutinen für Anfangswertaufgaben für nichtsteife Differentialgleichungen ode23, ode45, ode113 für steife Differentialgleichungen ode15s, ode23s, ode23t, ode23tb für implizit gegebene Differentialgleichungen ode15i Aufruf: [t,y] = ode...(odefun,tspan,y0,options) options kann entfallen, fehlt [t,y] = wird die Lösung der AWA sofort geplottet.
Start Inhalt 23(24) Anfangswertaufgaben (3) Ergänzende Funktionen zur Arbeit mit Lösungsroutinen für Anfangswertaufgaben deval - Auswertung der Lösung einer AWA sol = ode23(func,[0 1.2],1); x = linspace(0,1.2,100); y = deval(sol,x,1); plot(x,y) odextend - Erweiterung der Lösung einer AWA
Start Inhalt 24(24) Anfangswertaufgaben (4) Ergänzende Funktionen zur Arbeit mit Lösungsroutinen für Anfangswertaufgaben odeget - Abfrage von Optionen für die ode...-routinen allgemein opt = = odeget(options, name ) Beispiel Abfrage relative Toleranz odeget(options, RelTol ) odeset - Setzen von Optionen für die ode...-routinen allgemein options = odeset( name1,value1, name2,value2,...) Beispiel Setzen der rel. Toleranz und einer Output-Funktion options = odeset( RelTol,1.e-5, OutputFcn,odeplot)