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

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Fast Fourier Transformation
Eine dynamische Menge, die diese Operationen unterstützt,
Simulation komplexer technischer Anlagen
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
Schnelle Matrizenoperationen von Christian Büttner
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Telefonnummer.
Übung zur Numerische Geologie
Seminar Stochastik im WS 02/03
Matlab Einführung Tobias Wunner 16. Oktober 2006.
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Grundlagen der R Programmiersprache
Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei.
Dynamische Programmierung (2) Matrixkettenprodukt
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Kapitel 6 Differenzierbarkeit. Kapitel 6: Differenzierbarkeit © Beutelspacher Juni 2005 Seite 2 Inhalt 6.1 Die Definition 6.2 Die Eigenschaften 6.3 Extremwerte.
Imperative Programmierung
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
2D-Visualisierung von Daten
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Bewegte Bezugssysteme
AC Analyse.
Prof. Dr. Bernhard Wasmayr
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Batch-Programmierung Grundlagen
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Prof. Dr. Bernhard Wasmayr VWL 2. Semester
Heute: Scherenzange zeichnen
AWA 2007 Natur und Umwelt Natürlich Leben
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Matrix-Algebra Grundlagen 1. Matrizen und Vektoren
20:00.
Zusatzfolien zu B-Bäumen
Universität Stuttgart Wissensverarbeitung und Numerik I nstitut für K ernenergetik und E nergiesysteme Numerik partieller Differentialgleichungen, SS 01Teil.
Eine Einführung in die CD-ROM
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
für Weihnachten oder als Tischdekoration für das ganze Jahr
Syntaxanalyse Bottom-Up und LR(0)
Polynome und schnelle Fourier-Transformation
Analyse von Ablaufdiagrammen
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Geometrische Aufgaben
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Symmetrische Blockchiffren DES – der Data Encryption Standard
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
BMEVIEEA100 Grundlagen der Programmierung
PHP: Operatoren und Kontrollstrukturen
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Folie Beispiel für eine Einzelauswertung der Gemeindedaten (fiktive Daten)
1 Mathematical Programming Nichtlineare Programmierung.
Programmiervorkurs WS 2014 Referenzdatentypen
Unternehmensbewertung Thomas Hering ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List of Figures Tabellenübersicht.
Übung 2 - MdMT Methoden der Medizintechnik Übung zur Vorlesung Folge 2 – Basics Vom ersten Befehl zum Plot.
Folie Einzelauswertung der Gemeindedaten
Datum:17. Dezember 2014 Thema:IFRS Update zum Jahresende – die Neuerungen im Überblick Referent:Eberhard Grötzner, EMA ® Anlass:12. Arbeitskreis Internationale.
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
MATLAB Control Statements.
Wozu Maple? Symbolische Algebra Manche Sachen soll man besser nicht von Hand machen –kleine Rechnungs Fehler können mehrere Millionen werden – am besten.
6. Thema: Arbeiten mit Feldern
PCA Principal Component Analysis. Gliederung PCA – Warum eigentlich? PCA – Was ist zu tun? Was passiert eigentlich? Anwendungen Zusammenfassung.
 Präsentation transkript:

Ü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

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

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

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 + ,-, * , /, ^, …

Matrizen eingeben (1) Methoden Explizite Eingabe Explizit In M-Files erzeugen Aus externen Dateien laden Durch Funktionen erzeugen Explizite Eingabe Eingabe: zeilenweise A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ] ergibt A = 1 2 3 4 5 6 7 8 9 definiert Variable A als Matrix ; oder ¿ trennt Zeilen in Matrix Leerzeichen oder , trennt Elemente innerhalb Zeile

Matrizen eingeben (2) Durch M-File Externe Dateien Datei gena.m enthalte % cat gena.m A = [ 1 2 3 4 5 6 7 8 9 ] % 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

Matrixelemente (2) Matrixindizes Mit runden Klammern ( ) >> A(2,1) ® ans = 4 Erzeugen neuer Elemente >> x(5) = abs(x(1)) ® x = -1.3000 1.7321 4.8000 0 1.3000 Zusätzliche Elemente = 0 nach Bedarf eingeschoben

Blockmatrizen Aufbau großer Matrix aus kleinen Submatrix r = [ 10 11 12 ]; A = [ A ; r ] ® A = 1 2 3 4 5 6 7 8 9 10 11 12 Submatrix A(1:2,:) ® ans = 1 2 3 4 5 6 ; unterdrückt Ausgabe Ausgabe beliebiger Ausdruck durch Eingabe ohne ;

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

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 / 0 u.a.

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

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

Zahlen Dezimalnotation, mit Zehnerexponenten Eigenschaften Beispiele 3.14, -12, 1.6022e-19, 6.022e23 Imaginäre Zahlen 3i, -3e5i Eigenschaften Wertebereich: ca. 10-308 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

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

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!

Ausgabeformat (1) Format für alle weiteren Ausgaben: format - Befehl Normales Format: 4 Dezimalstellen: short-Format >> format short >> x = [ 1.2 3.7e-6 0 ] ® x = 1.2000 0.0000 0 >> format short e , x ® x = 1.2000e+000 3.7000e-006 0 >> format long , x ® x = 1.20000000000000 0.00000370000000 0 >> format long e , x ® x = 1.200000000000000e+000 3.700000000000001e-006 0 Voreinstellung exakt Null gerundet Null

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)

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

Matrixoperationen Grundregel: Syntax und Bedeutung entspricht zumeist mathematischen Konventionen Einschränkungen: Numerische Genauigkeit Zeichensatz Übersicht Transponieren Addieren, Subtrahieren Multiplizieren Dividieren: Gleichung lösen Potenzen

Transponieren Apostroph: Transponierte Matrix (reell) >> A = [1 2 3 ; 4 5 6 ; 7 8 9 ] , B = A' ® A = 1 2 3 4 5 6 7 8 9 B = 1 4 7 2 5 8 3 6 9 Spaltenvektor >> x = [ -1 0 2 ]' oder x = [ -1; 0; 2 ] ® x = -1 0 2

Adjungierte Matrix Komplexe Matrix: Apostroph bedeutet in Wirklichkeit Adjungierte Matrix >> k = [ 1 i ; 0 1 ] k = 1.0000 0 + 1.0000i 0 1.0000 >> k' ans = 1.0000 0 0 - 1.0000i 1.0000 Transponierte: verwende .' >> k.' ans = 1.0000 0 0 + 1.0000i 1.0000

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

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 = 5 8 11 Multiplikation mit Skalar (c-Zahl): Auf jedes Element angewandt A * c

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

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´105 5´10-14 100´100 Inversion 2´106 4´10-14 1000´1000 Division 7´108 5´10-13 1000´1000 Inversion 2´109 3´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)

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)

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

Elementweise Matrixoperationen Array-Operationen: Matrixelemente werden einzeln verknüpft Notation: Punkt (.) vor Operator Übersicht Addition, Subtraktion, Multiplikation, Division Vergleichsoperationen Logische Operationen Mathematische Funktionen

Binäre elementweise Operationen Addition, Subtraktion Matrixoperation elementweise definiert Multiplikation, Division .* bedeutet elementweise Multiplikation ./ .\ elementweise Division nach rechts / links Beispiel x = [ 1 2 3 ] ; y = [ 4 5 6 ] z = x .* y ® z = 4 10 18 Potenzierung .^ bedeutet elementweise Potenzierung (ein oder beide Operanden Skalar oder Vektor) z = x .^ y ® z = 1 32 729 z = x .^ 2 ® z = 1 4 9 z = 2 .^ x ® z = 2 4 8

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"

Vergleichsoperationen (2) Beispiele >> 2 + 2 ~= 4 ® ans = 0 Erkennen von Regelmäßigkeiten >> a=magic(3) a = 8 1 6 3 5 7 4 9 2 >> p=(rem(a,3)==0) p = 0 0 1 1 0 0 0 1 0 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

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

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)

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)

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

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 rot90 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

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) (falls @ 0 Þ singulär)

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

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

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

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

if - elseif - else - Bedingungen Syntax if ausdruck1 ... Matlab Statements 1 ... elseif ausdruck2 ... Matlab Statements 2 ... else ... Matlab Statements 3 ... 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

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 > 1 if rem(n,2) == 0 n = n/2 else n = 3*n+1 end end end Bei Leereingabe Aussprung

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

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) < 1000 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

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.

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

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)

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);

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

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

Zeichenketten Zeichenketten zwischen Einfachapostrophen >> s = 'Hallo'; Abspeicherung: Zeilenvektor von ASCII-Werten >> size(s) ® 1 5 >> abs(s) ® 72 97 108 108 111 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

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!)

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)

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

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 ode23 2. u. 3. Ordnung Runge-Kutta Integration ode45 4. u. 5. Ordnung Runge-Kutta-Fehlberg Integration Optimization Toolbox weitere Optimierungsfunktionen

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 = -2.7014e-05 Methode höherer Ordnung >> 4*quad8('kreis',0,1) - pi ans = -1.5979e-07 Funktionsname als Zeichenkette

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 = -1.4730 Suche nach Nullstellen >> fzero('ord4',0.1) ans = 2.9512e-017 Schätzwert

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'

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]); ®

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', ... 0, 100, [0;0.1]); >> plot(t,phi) >> plot(phi(:,1),phi(:,2)) Besitzt chaotische Lösungen

Graphik (1) Übersicht Struktur: 2-D-Graphik Graphikobjekte (Linien, Oberflächen) Manipulation der Objekte möglich, nicht erforderlich 2-D-Graphik Zeichnen plot 2-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

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 3-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

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

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

Neue Linien zu bestehender Zeichnung Das hold-Kommando plot(x) hold on plot(y1,'--') plot(y2,'-.') hold off

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)

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], ... 25,20,10) Max. Subunterteilungen optionell Max. Knickwinkel Min. Unterteilungen

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)

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

Beispiel zur Numerik Endliche Genauigkeit der Zahlendarstellung Stelle ( x - 100 )3 im Intervall [ 100 - e, 100 + e ] ( e = 0.001 ) auf drei Arten berechnet graphisch dar: 1. In faktorisierter Form function y = yfac(x) y = ( x - 100 ) .^ 3; 2. Hornerschema function y = yhor(x) y = x.*(x.*(x - 300) + 30000) - 1000000; 3. Ausmultipliziert function y = yexp(x) y = x.^3 - 300 * x.^2 + 30000 * x - 1000000; Erkläre Effekt und Größenordnung Wie wirkt dieser sich z.B. auf Nullstellensuche aus?