Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Elisabeth Kellen Geändert vor über 11 Jahren
1
Überblick Exzerpt aus Matlab User's Guide (Version 4.0) Einführung
Elementare Operationen Matrixoperationen Elementweise Operationen auf Matrizen Vektoren und Matrizen manipulieren Matrixfunktionen Programmierung Ablaufkontrolle M-Files Scripts Funktionen Graphik
2
Matlab (1) Matrix Laboratory Erweiterung Matrizen, Vektoren
reell, komplex Kompakte Vektor- Matrixnotation lineare Algebra, Gleichungen lösen, Eigenwerte und -Vektoren Funktionen math. Standardfunktionen selbstdefinierte Funktionen Differentialgleichungen, Integration, Fouriertransformation Leistungsfähige 2D und 3D Grafik Erweiterung Simulink. Graphisch orientiertes System zur Simulation dynamischer Systeme
3
Matlab (2) Vorteile / Nachteile Anwendung:
Sehr geringer Entwicklungsaufwand Nützt Maschineneffizienz nicht voll aus Schlechte Effizienz bei nicht vektorisierbaren Problemen Anwendung: numerische Probleme ersetzt Fortran oder C Visualiserung von Lösungen oder Daten ersetzt oft Spezialprogramme Entwicklung von Lösungsmethoden Prototypentwicklung: erster Schritt zu Fortran/C - Programm
4
Matrizen, Vektoren und Skalare
Elementares Datenobjekt: m ´ n - Matrix (reell, komplex) Sonderfälle: Skalar 1 ´ 1 - Matrix Zeilenvektor 1 ´ n - Matrix Spaltenvektor n ´ 1 - Matrix Alle algebraischen Operationen definiert + ,-, * , /, ^, …
5
Matrizen eingeben (1) Methoden Explizite Eingabe Explizit
In M-Files erzeugen Aus externen Dateien laden Durch Funktionen erzeugen Explizite Eingabe Eingabe: zeilenweise A = [ ; ; ] ergibt A = definiert Variable A als Matrix ; oder ¿ trennt Zeilen in Matrix Leerzeichen oder , trennt Elemente innerhalb Zeile
6
Matrizen eingeben (2) Durch M-File Externe Dateien
Datei gena.m enthalte % cat gena.m A = [ ] % Matlab-Kommando >> gena erzeugt Matrix A Externe Dateien Matlab-Kommando save speichert Daten in Datei. Kann mit load eingelesen werden Durch Matlab-Funktionen erzeugen Besprechung später
7
Matrixelemente (2) Matrixindizes
Mit runden Klammern ( ) >> A(2,1) ® ans = 4 Erzeugen neuer Elemente >> x(5) = abs(x(1)) ® x = Zusätzliche Elemente = 0 nach Bedarf eingeschoben
8
Blockmatrizen Aufbau großer Matrix aus kleinen Submatrix
r = [ ]; A = [ A ; r ] ® A = Submatrix A(1:2,:) ® ans = ; unterdrückt Ausgabe Ausgabe beliebiger Ausdruck durch Eingabe ohne ;
9
Statements, Ausdrücke, Variable
Matlab - Statement variable = ausdruck oder ausdruck Ausdruck Einfache Variable oder Konstante Komplexer Ausdruck konstruiert mit Operatoren Lange Ausdrücke: Fortsetzung einer Zeile mit Beispiel w = exp( i*omega*t) exp(-i*omega*t) Syntax Variablennamen: £ 19 alphanumerische Zeichen Groß/Kleinschreibung signifikant
10
Information über Variablen
Variablen in Workspace gespeichert Info über Workspace: who listet alle Variablen Detailinfo über Workspace whos listet Variablen mit Größe, ob komplex Vordefinierte Variablen bzw. Funktionen eps Maschinengenauigkeit = min{ x>0 | 1+x ¹ 1 } ans letztes Ergebnis (Answer) i j imaginäre Einheit pi Zahl p realmax realmin größte / kleinste darstellbare Zahl inf Unendlich. z.B. Ergebnis von 1 / 0 NaN Not A Number z.B. Ergebnis von 0 / u.a.
11
Hilfe On-line-Hilfe help
ergibt ... matlab/general - General purpose commands. matlab/ops Operators and special characters. matlab/lang Language constructs and debugging. ... help general ergibt ... Managing variables and the workspace. who List current variables. whos List current variables, long form. ... help who gibt Detailbeschreibung zu who-Kommando
12
Beenden, Abspeichern der Sitzung
quit oder exit Sitzung speichern save name speichert alle lokalen Variablen in name.mat save temp x speichert nur Variable x in temp.mat Einlesen von MAT-File load name lädt in name.mat gespeicherte Daten
13
Zahlen Dezimalnotation, mit Zehnerexponenten Eigenschaften
Beispiele 3.14, -12, e-19, e23 Imaginäre Zahlen 3i, -3e5i Eigenschaften Wertebereich: ca bis 10308 Relative Genauigkeit: eps , d.h. ca. 16 Dezimalstellen Spezielle Werte an IEEE-Maschinen inf ¥ Infinity: z.B. 1/0 NaN Not A Number: Undefiniertes Ergebnis, z.B. 0/0
14
Arithmetische Ausdrücke
Ausdrücke: Operatoren + Addition - Subtraktion * (Matrix-) Mulitplikation / Division \ Division nach links: x = A \ b ist Lösung von A x = b ^ Potenz
15
Komplexe Zahlen und Matrizen
z = 3+4*i w = r*exp(i*phi) Komplexe Matrizen A = [1 2 ; 3 4] + i*[5 6 ; 7 8] A = [1+5i , 2+6i ; 3+7i , 4+8i] Falls i undefiniert wurde: Wiederherstellung i = sqrt(-1) Achtung: Kein Leerzeichen!
16
Ausgabeformat (1) Format für alle weiteren Ausgaben: format - Befehl
Normales Format: 4 Dezimalstellen: short-Format >> format short >> x = [ e-6 0 ] ® x = >> format short e , x ® x = e e >> format long , x ® x = >> format long e , x ® x = e e Voreinstellung exakt Null gerundet Null
17
Funktionen (1) Matlab: umfangreiche Ausstattung mit Funktionen
Eingebaut und M-Files Anwender kann selbst Funktionen definieren (M-Files) Übersicht: Siehe Kurzreferenz. u.a.: Elementare mathematische (min, abs, sin, exp ...) Spezielle Funktionen (bessel, erf ...) Matrixfunktionen (zeros, eye ...) Lineare Gleichungen (/ , \, inv, ...) Differentialgleichungen lösen Integration Argumente: runde Klammern ( ) x = sqrt(log(z)) Mehrere Argumente durch , getrennt z = gammainc(1.3,0.8)
18
Funktionen (2) Rückgabewert
ein Rückgabewert (Skalar, Vektor, Matrix) x = max(A) Zeilenvektor mit Spaltenmaxima mehrere Rückgabewerte: Eckige Klammern [V,D] = eig(A) Spalten von V: Eigenvektoren D: Diagonale Matrix mit Eigenwerten Funktionen wissen, wieviele Ein/Ausgabeargumente sie haben (Überladen) [x,i] = max(A) i enthält Indices der Maxima Regel: Matlab modifiziert nie Eingabeargumente Eingabeargumente Ausgabeargumente
19
Matrixoperationen Grundregel: Syntax und Bedeutung entspricht zumeist mathematischen Konventionen Einschränkungen: Numerische Genauigkeit Zeichensatz Übersicht Transponieren Addieren, Subtrahieren Multiplizieren Dividieren: Gleichung lösen Potenzen
20
Transponieren Apostroph: Transponierte Matrix (reell)
>> A = [1 2 3 ; ; ] , B = A' ® A = B = Spaltenvektor >> x = [ ]' oder x = [ -1; 0; 2 ] ® x =
21
Adjungierte Matrix Komplexe Matrix: Apostroph bedeutet in Wirklichkeit Adjungierte Matrix >> k = [ 1 i ; 0 1 ] k = i >> k' ans = i Transponierte: verwende .' >> k.' ans = i
22
Addieren, Subtrahieren
Plus, Minus : normale Matrixaddition/subtraktion Matrixdimensionen müssen übereinstimmen Ausnahme: ein Operand ist Skalar ® wird auf alle Elemente angewandt Seien A, B 3´3-Matrizen, x 3´1 Spaltenvektor C = A + B Definiert 3´3-Matrix C y = x - 1 y 3´1, y(i) = x(i)-1, "i=1,3 k = A + x verboten Funktion sum Für Vektoren: Summe der Elemente Für Matrizen: Zeilenvektor, der Spaltensummen enthält
23
Matrixmultiplikation
Stern: Multiplikation (im algebraischen Sinn) Skalares (inneres) Produkt von x,y >> x' * y ® 4 Äußere Produkte: x*y' und y*x' Matrix-Vektorprodukt >> b = A * x ® b = Multiplikation mit Skalar (c-Zahl): Auf jedes Element angewandt A * c
24
Division von Matrizen Zwei Matrixdivisionszeichen Bedeutung
\ Division nach links / Division nach rechts Bedeutung X = A \ B heißt formal: X = inv(A)*B implementiert effizient als Lösung des Gleichungssystems A*X = B x = A / B heißt formal: X = A*inv(B) implemtiert als Lösung von X*A = B Es gilt: B/A = (A'\B')' Anwendung: Lösen von Gleichungssystemen Sei A n´n und b n´1 Erhalten Lösung x von A x = b als x = A \ b k Simultane Gleichungssysteme: b ist n´k, Spalten von k sind Inhomogenitäten ® Spalten von x sind Lösungen
25
Lösung von Gleichungssystemen: Hinweise
Effizienz, Genauigkeit Für Gleichungssysteme immer Matrixdivision, nie Inversion! Vergleich: Division: x = A \ b Inversion: x = inv(A) * b Zufallsmatrix Flops Genauigkeit 100´100 Division 7´ ´ ´100 Inversion 2´ ´ ´1000 Division 7´ ´ ´1000 Inversion 2´ ´10-12 Schwach besetzte Matrizen Sparse Matrices (Matrizen mit vielen Null-Elementen) können in Matlab definiert und sollten verwendet werden. Beispiel: Partielle Differentialgleichung mit Finiten Differenzen (z.B. Poissongleichung aus Teil 1: SOR-Verfahren überflüssig)
26
Potenzen von Matrizen Zirkumflex: Matrixpotenz Definiert für quadratische Matrizen Natürliche Exponenten A^n º A * A * ... * A (n-mal) Reelle Exponenten: Definiert über Spektraldarstellung Ist [V,D] = eig(A) dann gilt A^p º V * D.^p / V Elementweise Potenzierung (nächster Abschnitt)
27
Weitere Matrixfunktionen
Analytische Matrixfunktionen: Definition über Spektraldarstellung Achtung: Elementare Funktionen (exp, log, ...) operieren elementweise Vordefinierte Matrixfunktionen expm, logm, sqrtm Matrix-Exponential, -Logarithmus, -Wurzel funm(A,'fun') Matrix-Funktion fun Weitere Funktionen det, inv Determinante, Inverese trace Spur poly Charakteristisches Polynom
28
Elementweise Matrixoperationen
Array-Operationen: Matrixelemente werden einzeln verknüpft Notation: Punkt (.) vor Operator Übersicht Addition, Subtraktion, Multiplikation, Division Vergleichsoperationen Logische Operationen Mathematische Funktionen
29
Binäre elementweise Operationen
Addition, Subtraktion Matrixoperation elementweise definiert Multiplikation, Division .* bedeutet elementweise Multiplikation ./ .\ elementweise Division nach rechts / links Beispiel x = [ ] ; y = [ ] z = x .* y ® z = Potenzierung .^ bedeutet elementweise Potenzierung (ein oder beide Operanden Skalar oder Vektor) z = x .^ y ® z = z = x .^ 2 ® z = z = 2 .^ x ® z =
30
Vergleichsoperationen (1)
Sechs Operatoren vergleichen Matrizen mit gleicher Dimension < kleiner als <= kleiner oder gleich > größer als >= größer oder gleich == gleich ~= ungleich Bedeutung Matrixelemente paarweise verglichen Ergebnis: Matrix gleicher Dimension mit Elementen ... 1 "wahr" 0 "falsch"
31
Vergleichsoperationen (2)
Beispiele >> ~= 4 ® ans = 0 Erkennen von Regelmäßigkeiten >> a=magic(3) a = >> p=(rem(a,3)==0) p = Anwenden von Operationen auf ausgewählte Matrixelemente i = find(Y > 3.0); Gibt Indizes von Elementen > 3 Y(i) = 10 * ones(i); Indexvektor ® nächster Abschnitt Ersetzt alle Elemente von Y größer als 3 durch 10
32
Logische Operationen Drei logische Operatoren Bedeutung
& und (binär) | oder (binär) ~ nicht (unär) Bedeutung Matrixelemente werden paarweise mit null verglichen Ergebnis & Ergebnis 1, wenn beide Elemente ¹0, sonst 0 | 0, wenn beide Elemente =0, sonst 1 ~ 1, wenn Element 0, sonst 0 Funktionen all und any all(x) Ergebnis 1, wenn alle Elemente von x ¹0, sonst 0 any(x) 0, wenn alle Elemente =0, sonst 1 Anwendung in Programmen if ( all(a > 3) ) end
33
Logische Funktionen Logische Funktionen
Vektorargumente: Ergebnis ist Skalar Matrixargumente: Ergebnis ist Zeile mit Ergebnissen spaltenweiser Operationen Þ Zweimalige Anwendung gibt immer Skalar Unter anderem ... any $ - Quantor all " - Quantor find gibt Array-Indices von Elementen ¹ 0 isnan entdeckt NaN isinf entdeckt Unendlich isempty Matrix ist leer (0´0)
34
Leere Matrizen Leere (0´0) Matrizen
gültige Werte für Variablen Viele Operationen liefern plausible Werte Erzeugung: Leere eckige Klammern [] x = [] Definiert Variable x als 0´0 Matrix (gültig) Unterscheide clear(x) Löscht Variable x aus Workspace Entfernen von Teilen einer Matrix A(:,[2 4]) = [] Entfernt Spalten 2 und 4 Entstehen leerer Matrix (Beispiele) n=0; x=1:n x=input('Wert x eingeben ') und Leereingabe des Benutzers Entdecken leerer Matrix isempty(x)
35
Spezielle Matrizen Wichtig in Erzeugung von Matrizen
Spezielle Matrixfunktionen (Argumente s.u.): zeros Nullmatrix ones Einsmatrix (alle Elemente 1) eye Identitäts- (Einheits-)matrix rand Zufallsmatrix (gleichverteilt) Argumente: zeros(size(A)) Nullmatrix mit Dimension von A eye(n) n´n Einheitsmatrix rand(m,n) m´n Zufallsmatrix Weitere: diag(V,k) Erzeuge Diagonalmatrix: Matrix, deren k-te Diagonale Elemente von V sind, sonst 0 linspace(a,b,n) Zeile mit n zwischen a und b linear verteilten Elementen meshgrid(u,v) In Funktionen von zwei Variablen verwendet
36
Matrizen manipulieren
Größere Matrizen Mit Blockmatrixnotation erzeugen. Beispiel: Sei A quadratisch C = [ A A' ; ones(size(A) A.^2 ] erzeugt doppelt so große Matrix Rotieren, Spiegeln, Form ändern, Teil extrahieren rot Rotieren fliplr An vertikaler Achse spiegeln flipud An horizontaler Achse spiegeln diag Extrahiere (oder erzeuge) Diagonale tril Untere Dreiecksmatrix triu Obere Dreieckmatrix reshape Form ändern ' transponieren : Allgemeineres Umarrangieren
37
Matrixfunktionen (Auswahl)
Spektralzerlegung Sei A n´n - Matrix Eigenwerte l und Eigenvektoren x , definiert durch A x = l x werden berechnet als [X,D] = eig(A) i-te Spalte von X ist Eigenvektor xi zu Eigenwert li = D(i,i) Norm, Rang, Konditionszahl cond Konditionszahl in 2-Norm (falls >> 1 Þ Matrix singulär) norm 1-, 2-, F- und ¥-Norm rank Rang rcond Schätzung reziproke Kondition (LINPACK) 0 Þ singulär)
38
Integraltransformationen
Faltung und Kovarianz conv Faltung deconv Entfaltung cov Kovarianz 1-dimensionale Fouriertransformation fft Fouriertransformation ifft Fourierrücktransformation fftshift Vertausche Quadranten 2-dimensionale Fouriertransformation fft2 2-D Fouriertransformation ifft 2-D Fourierrücktransformation Siehe auch Signal Processing Toolbox
39
Automatisierung Matlab: Programmiersprache Ablaufkontrolle M-Dateien
Anwendung: in M-Dateien Ablaufkontrolle for Schleifen while Schleifen if Bedingungen break Ausprung M-Dateien Scripts Funktionen Eigene Programme echo, disp, input, pause, keyboard : Interaktion mit Benutzer Globale Variablen Zeichenketten eval : Text als Befehl ausführen Effizienz
40
for - Schleifen Syntax Bedeutung Beispiel
for variable = vektor Matlab Statements ... end Bedeutung variable durchläuft Elemente von vektor und Schleifeninhalt wird ausgeführt. Genauer: Rechte Seite ist Matrix, variable erhält nacheinander Spalten der Matrix zugewiesen Beispiel for i = 1:n , x(i) = 0 , end Verschachteln: Beispiel Hilbertmatrix for i = 1:m for j=1:n A(i,j) = 1/(i+j-1); end end Unterdrückt Ausgabe unvollständiger Matrizen
41
while - Schleifen Syntax Bedeutung Beispiel: Iteration
while ausdruck Matlab Statements ... end Bedeutung ausdruck (Vergleichsausdruck) wird ausgewertet. Falls ¹ 0 (wahr), wird Schleifeninhalt ausgeführt. Solange Wiederholung, bis ausdruck = 0 Beispiel: Iteration delta = 1.e-5; err = realmax; oldy = realmax; while err > delta berechne y err = abs ( y - oldy ); end
42
if - elseif - else - Bedingungen
Syntax if ausdruck Matlab Statements elseif ausdruck Matlab Statements else Matlab Statements end Bedeutung ausdruck1 (Vergleichsausdruck) wird ausgewertet. Falls ¹ 0, werden Statements 1 ausgeführt. Sonst wird ausdruck2 ausgewertet etc. Ist kein Ausdruck wahr, wird else - Block ausgeführt, falls vorhanden. Beispiel if rem (k,2) == 0 coeff = (a-1)^k else coeff = a^k end elseif optionell else optionell
43
break - Schleife abbrechen
Syntax for oder while break end Bedeutung Schleife wird verlassen. Meist ist break in einer if-Bedingung Beispiel (3n+1 - Problem) while 1 n = input (' Eingabe n '); if isempty(n), break, end while n > if rem(n,2) == n = n/2 else n = 3*n end end end Bei Leereingabe Aussprung
44
Programmierung von Matlab
Matlab = Interpreter Interaktive Verwendung: Benutzer gibt Kommandos ein Matlab führt sie aus Matlab - Programme Matlab führt Kommandos in Datei aus M-Datei Dateiname mit Endung .m Erstellung mit Texteditor Enthält Folge von Matlab-Kommandos M-Dateien können andere und sich selber rekursiv aufrufen Datei name.m definiert Kommando name Zwei Arten Script Funktion
45
Matlab - Scripts Script Beispiel M-Datei mit Matlab-Kommandos
Kommandos wirken auf Daten im Workspace Oft: Hauptprogramm Beispiel Fibonaccizahlen >> type fibo.m % fibo.m : erzeuge Fibonaccizahlen < 1000 f = [ 1 1 ]; i = 1; while f(i) + f(i+1) < f(i+2) = f(i) + f(i+1); i = i + 1; end plot(f) >> fibo Datei fibo.m Dateiname als Kommando: führt Kommandos in Datei aus Danach sind f und i im Workspace %-Zeichen: Kommentar
46
Start-Scripts Beim Start von Matlab matlabrc.m startup.m
Zentrale Initialisierungsdatei startup.m Benutzerdefinieres Script startup.m Gesucht an zwei Stellen: ./startup.m Falls nicht vorhanden: $HOME/matlab/startup.m Anwendung: Initialisierung von Konstanten etc.
47
Funktionen (1) Funktion
M-Datei, die mit Wort function in erster Zeile beginnt Funktionsdatei name.m definert neue Funktion name Hat Ein- / Ausgabeparameter Wirkt auf Daten in eigenem (lokalem) Workspace Anwendung Großer Teil von Matlab = M-Dateien Erweiterung von Matlab
48
Funktionen (2) Beispiel: Datei mean.m mean.m = Funktions-M-Datei
function y = mean(x) %MEAN Mittelwert % Für Vektoren gibt mean(x) Mittelwert % Für Matrizen gibt mean(x) Zeilenvektor % mit Spaltenmittelwerten [m,n] = size(x) if m == 1 , m = n , end y = sum(x) / m >> mean(1:99) ® 50 mean.m = Funktions-M-Datei y = Ausgabeparameter mean = Funktionsname x = Eingabeparameter Variablen m,n, y lokal in mean Kommentar: Hilfstext (help mean)
49
Funktionen (3) Mehrfache Ein- / Ausgabeparameter
function [aus1, aus2] = fun (ein1, ein2, ein3) Beispiel function [mean, stdev] = stat (x) [m,n] = size(x); if m == 1 , m = n ; end mean = sum(x)/m; stdev = sqrt(sum(x.^2)/m - mean.^2);
50
Interaktion mit Benutzer
echo, disp, input, pause, keyboard echo Gib Kommandos am Schirm aus disp Gib Wert am Schirm aus disp (x) Falls x Text enthält, wird dieser ausgegeben input Erwarte Wert von Benutzer n = input('Eingabe n ') pause Halte an und warte auf Tastendruck. pause(n) wartet n Sekunden keyboard Nimm Benutzereingabe als Script
51
Globale Variablen Jede Matlab-Funktion hat eigene Variablen
Manchmal: mehrere Funktionen - gemeinsame Variablen Definiere globale Variablen Syntax global VAR1 VAR2 Heißt, daß VAR1 und VAR2 einem speziellen globalen Workspace angehören Global-Definitionen erforderlich in: Allen Funktionen, die globalen Wert von VAR1 und VAR2 verwenden Falls nötig: Basisworkspace Beachte: Funktionen, die VARi nicht global definieren, verwenden lokale Variable (« 3.5) Konvention: Globale Variablen werden oft in Großbuchstaben geschrieben
52
Zeichenketten Zeichenketten zwischen Einfachapostrophen
>> s = 'Hallo'; Abspeicherung: Zeilenvektor von ASCII-Werten >> size(s) ® >> abs(s) ® Konkatenieren: Blockmatrixnotation >> s = [ s, ' da!' ] ® s = Hallo da! Zeichenkettenbezogene Funktionen disp An Schirm ausgeben isstr Stelle fest, ob Zeichenkette strcmp Vergleiche Zeichenketten num2str, int2str, sprintf Verwandle Zahl in Zeichenkette
53
Die Eval-Funktion Leistungsfähige Makrofunktion Funktion
Sei t Zeichenkette mit Matlab-Kommando. eval(t) führt Text in t als Kommando aus Beispiel: Hilbertmatrix t = '1/(i+j-1)' for i = 1:n for j = 1:n a(i,j) = eval(t) end end Beispiel: Funktionen numerieren spiele = ['schach'; 'dame '; 'mühle '; 'go ']; k = input('Spielnummer eingeben: '); eval(spiele(k,:)) Beachte Leerzeichen (Matrix rechteckig!)
54
Effizienz (1) Geschwindigkeit
Eingebaute Funktionen mehr als 1 Größenordnung schneller als Interpreter Vektorisiere Algorithmen wenn Effizienz nötig ist! Beispiel: statt i = 0; for t = 0:0.01:10 i = i + 1; y(i) = sin(t); end verwende t = 0:0.01:10; y = sin(t)
55
Effizienz (2) Vektoren Speicher
Falls Vektorisierung unmöglich: reserviere Platz für Resultatsmatrizen/vektoren Beispiel: verwende y = zeros(1,100); for i = 1:100 y(i) = det(X^i); end viel schneller als wenn erste Zeile fehlte (und y wachsen müßte) Speicher Löschen von Variable fragmentiert Speicher (außer der letzten Variablen) Vergrößern von Vektoren führt zu Neuzuweisung Þ Fragmentierung Funktionsargumente werden erst in lokalen Workspace kopiert, wenn man sie ändert Kein Speicherproblem mit großen Argumentvariablen
56
Funktionale Funktionen mit Funktionen als Argumente
Numerische Quadratur (Integration) quad Bestimmtes Integral von Funktion einer Variable quad8 - " - , höhere Ordnung Nichtlineare Gleichungen, Optimierung fmin Minimiere Funktion einer Variable fmins Minimiere Funktion mehrerer Variablen (umbeschränkt) fzero Nullstelle Funktion einer Variable Numerische Integration von Differentialgleichungen ode u. 3. Ordnung Runge-Kutta Integration ode u. 5. Ordnung Runge-Kutta-Fehlberg Integration Optimization Toolbox weitere Optimierungsfunktionen
57
Quadratur Numerische Integration Beispiel:
>> type kreis.m function k = kreis(x) k = sqrt(1 - x.^2); Integriere >> 4*quad('kreis',0,1) - pi Recursion level limit reached in quad. Singularity likely. ans = e-05 Methode höherer Ordnung >> 4*quad8('kreis',0,1) - pi ans = e-07 Funktionsname als Zeichenkette
58
Optimierung, Nullstellen
Suche nach Minima einer Funktion Beispiel >> type ord4.m function s = ord4(x) s = x.^4 - 4 * x.^2 + x; >> x = linspace(-2.5,2.5); >> plot(x,ord4(x)); >> fmin('ord4',-3,3) ans = Suche nach Nullstellen >> fzero('ord4',0.1) ans = e-017 Schätzwert
59
Differentialgleichungen (1)
Lösung eines expliziten Systems gekoppelter Differentialgleichungen (Anfangswertproblem) y '( t ) = f ( t, y ) ode23 und ode45 [t, y] = odexy(F, t0, tend, y0, tol) Anfangswert von t Endwert von t Anfangswert von y Genauigkeit Ableitung f ystrich = fun(t,y) wobei F == 'fun'
60
Differentialgleichungen (2a)
Beispiel: Mathieu-Differentialgleichung Pendel mit periodisch bewegter Aufhängung j" = ( a - b sin( t ) ) sin( j ) >> type pendel.m function phip = pendel(t,phi) % Gleichung für Pendel mit % beweglicher Aufhängung: % phi" = ( a - b sin(t) ) sin(phi) % phi = [ phi; phi' ] global a b phip = [ phi(2) (a-b*sin(t)).*sin(phi(1)) ]; >> global a b , a = 1; b = 0.5; >> [t,phi] = ode23('pendel', 0, 100, [0;0.1]);
61
Differentialgleichungen (2b)
Beispiel: Mathieu-Differentialgleichung Pendel mit periodisch bewegter Aufhängung j" = ( a - b sin ( t ) ) sin ( j ) >> type pendel.m function phip = pendel(t,phi) % Gleichung für Pendel mit % beweglicher Aufhängung: % phi" = ( a - b sin(t) ) sin(phi) % phi = [ phi; phi' ] global a b phip = [ phi(2) (a-b*sin(t)).*sin(phi(1)) ]; >> global a b , a = 1; b = 0.5; >> [t,phi] = ode23('pendel', , 100, [0;0.1]); >> plot(t,phi) >> plot(phi(:,1),phi(:,2)) Besitzt chaotische Lösungen
62
Graphik (1) Übersicht Struktur: 2-D-Graphik
Graphikobjekte (Linien, Oberflächen) Manipulation der Objekte möglich, nicht erforderlich 2-D-Graphik Zeichnen plot D-Plot von Vektoren oder Spalten von Matrizen Beschriften title, xlabel, ylabel, text Titel, Achsenbeschriftung, bel. Text Wertebereiche axis Einstellen der Wertebereiche für Achsen
63
Graphik (2) 3-D-Graphik Wertepaare erzeugen meshgrid
Höhenlinien zeichnen contour, contour3 3-D-Plots mesh, meshc, meshz 3-D-Linienplot, mit Höhenlinien, mit Nullebene surf, surfc D-Oberfläche, mit Höhenlinien Beschriften title, xlabel, ylabel, zlabel, text Titel, Achsenbeschriftung, bel. Text clabel Höhenlinienbeschriftung Wertebereiche axis Einstellen der Wertebereiche für Achsen
64
2-D-Plot plot - Funktion
plot(y) Zeichnet Spalten von Matrix y gegen Index plot(x,y) Zeichnet Vektor y gegen Vektor x x oder y Matrix: Zeilen oder Spalten werden gegen Vektor gezeichnet Beispiel: t = linspace(0,2*pi); x = sin(t); y1 = sin(t+0.25); y2 = sin(t+0.5); plot(x,y1,'r-',x,y2,'g--'); Linie grün, strichliert Linie rot, durchgezogen
65
Beschriften, Linienstil
Plots beschriften (nach Plot-Kommando!) title('Phasenverschiebung') ylabel('y = sin(t+phi)') xlabel('x = sin(t)') Linienstile plot(x,y,stil) stil ist 1-3 Zeichen. Bedeutung: Farben: y m c gelb, magenta, cyan r g b rot, grün, blau w k weiß, schwarz Punkte markieren: . o x Punkt, Kreis, X + * Kreuz, Stern Linienart - durchgezogen : punktiert -. strichpunktiert -- strichliert
66
Neue Linien zu bestehender Zeichnung
Das hold-Kommando plot(x) hold on plot(y1,'--') plot(y2,'-.') hold off
67
Wertebereiche ändern 2- und 3-D-Plots finden Wertebereiche automatisch
axis Wertebereich für aktuelle Zeichnung erfragen und setzen Anwendung: nach Plot-Kommando zu geben axis([xmin, xmax, ymin, ymax]) Setze Limits explizit axis([xmin, xmax, ymin, ymax, zmin, zmax]) (für 3-D-Plots) axis('auto') Schalte automatische Skalierung wieder ein v = axis Merke aktuelle Limits in v. Später... axis(v) Setze Limits auf gemerkten Wert axis(axis) Friere Achsen auf aktuellen Wert ein axis('ij') Matrixmodus: Urprung links oben, i-Achse ¯, j-Achse ® axis('xy') Kartesisch (Voreinstellung): Ursprung links unten. axis('square') Beide Achsen gleich lang axis('equal') Beide Achsen selber Maßstab axis('off') Schalte Achsenbeschriftung aus axis('on') Schalte Beschriftung wieder ein (Voreinstellung)
68
Funktionen zeichnen Direkte Methode: plot Funktion plotten: fplot
x=(0:1/200:1)'; plot(x,cos(tan(pi*x))) Problem: Funktion oszilliert schnell Werte werden ausgelassen Funktion plotten: fplot Erzeuge Datei osz.m mit Funktion function y = osz(x) y = cos(tan(pi*x)); und verwende fplot fplot('osz',[0 1], ,20,10) Max. Subunterteilungen optionell Max. Knickwinkel Min. Unterteilungen
69
3-D-Graphik Beispiel: sin(r)/r
x = -8:0.5:8; y = x; [X,Y] = meshgrid(x,y); R = sqrt(X.^2+Y.^2+eps); Z = sin(R)./R; mesh(X,Y,Z)
70
Animation Für schnelle Wiedergabe kurzer Sequenzen: Movie-Funktion
Sonst: Anwendung objektorientierter Graphik % Lissajou-Figuren clf; m=input('m= '); n=input('n= '); x=linspace(0,2*pi,1000); p=plot(sin(m*x),sin(n*x),'k','EraseMode','None'); axis([-1.1,1.1,-1.1,1.1]); while 1 for delta=linspace(0,2*pi,40*max(m,n)) y=sin(n*x-delta); set(p,'Color','k'); set(p,'Ydata',y); set(p,'Color','y'); drawnow; end end Merke Graphikobjekt "Kurve" Kurve bleibt in Schirmspeicher stehen Lösche Kurve: Setze Farbe schwarz Ändere Daten Mache neuen Graph sichtbar
71
Beispiel zur Numerik Endliche Genauigkeit der Zahlendarstellung
Stelle ( x )3 im Intervall [ e, e ] ( e = ) auf drei Arten berechnet graphisch dar: 1. In faktorisierter Form function y = yfac(x) y = ( x ) .^ 3; 2. Hornerschema function y = yhor(x) y = x.*(x.*(x - 300) ) ; 3. Ausmultipliziert function y = yexp(x) y = x.^ * x.^ * x ; Erkläre Effekt und Größenordnung Wie wirkt dieser sich z.B. auf Nullstellensuche aus?
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.