Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Überblick Exzerpt aus Matlab User's Guide (Version 4.0) Einführung

Ähnliche Präsentationen


Präsentation zum Thema: "Überblick Exzerpt aus Matlab User's Guide (Version 4.0) Einführung"—  Präsentation transkript:

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?


Herunterladen ppt "Überblick Exzerpt aus Matlab User's Guide (Version 4.0) Einführung"

Ähnliche Präsentationen


Google-Anzeigen