Eike Meerbach meerbach@math.fu-berlin.de 6. Mai 2002 Typeset by FoilTEX
Eine Merkregel zu den Matrizenoperationen Es seien A R m n, B R n k und u R n 1. Dann gilt: Au = v AB = C (m n) (n 1) = (m 1) (m n) (n k) = (m k) ( ) 2 1 2 1 ( ) ( ) 1 5 2 1 2 = 1 2 ( ) 2 2 4 6 = 0 1 3 4 0 1 3 2 2 1 0 0 Merke also: (m n) (n k) = (m k) Typeset by FoilTEX 1
Eine weitere Merkregel zu den Matrizenoperationen A = a 11 a 12 a 1n a 21 a 22 a 2n...... a m1 a m2 a mn, (m n)-matrix. a ij - Element in i.-ter Zeile und j.-ter Spalte. Merke: Zuerst die Zeile...... Später die Spalte! (ZEILE-SPALTE) Typeset by FoilTEX 2
Arbeiten unter UNIX Hilfe für einzelne Befehle mit: man Befehl, z.b. man gv. Wichtige Befehle sind: cd Zielverzeichnis - change directory, wechseln des Arbeitsverzeichnisses. cd / wechselt ins Heimatverzeichnis. ls, anzeigen des Inhalts des aktuellen Arbeitsverzeichnisses. ls -l zeigt ausführliche Informationen. cp Quelldatei Zieldatei - copy file. rm Datei - remove file (LÖSCHEN!). mv Quelldatei Zieldatei - move file. ACHTUNG, DAS LÖSCHEN VON DATEIEN UNTER UNIX/LINUX IST UNWIEDERRUFLICH!! Typeset by FoilTEX 3
Kurzbefehle zur Einbindung des Diskettenlaufwerks: mdir- Inhalt anzeigen. mcopy Quelldatei Zieldatei- Kopieren von Dateien, z.b.: mcopy test.tex a: - kopiert die Datei test.tex aus dem aktuellen Arbeitsverzeichnis auf Diskette unter demselben Namen. mcopy /home/arbeit/test.tex a:erfolgreich - kopiert dieselbe Datei aus dem Verzeichnis /home/arbeit/ auf Diskette unter dem Namen erfolgreich. Unix/Linux Neulinge, sollten unbedingt zu den Rechnerübungen gehen! Typeset by FoilTEX 4
Das Starten von Matlab 1. Einloggen an einen Unix-Rechner, z.b.: math3.math.fu-berlin.de euklid.math.fu-berlin.de über das Startmenü der Terminals im Rechnerraum. von einem Unix/Linux-Rechner mit dem Befehl ssh, z.b. ssh math3.math.fu-berlin.de von Windows aus mit dem Programm putty.exe, download unter: www.chiark.greenend.org.uk/ sgtatham/putty/download.html 2. Aufrufen eines Terminals/Console. 3. Matlab durch Eingabe von matlab starten. Typeset by FoilTEX 5
Das Beenden von Matlab Niemals Matlab durch das Schließen des Consolefensters beenden! Immer mit quit oder Control + Z das Programm offiziell beenden. Laufende Prozesse (Endlosschleifen!) können durch Control + C abgebrochen werden. Typeset by FoilTEX 6
Vorteile von Matlab 1. Keine Initialisierung, Kategorisierung oder Deklarierung von Variablen. 2. Keine Kompilierungsprobleme. 3. Variablennamen können nahezu beliebig gewählt werden. Achtung: Zwischen GROSS- und kleinschreibung wird Unterschieden. 4. Viele Möglichkeiten graphischer Darstellungen. 5. Viele Matrizenfunktionen sind vorhanden. 6. MATLAB IST EINFACH! Typeset by FoilTEX 7
Nach dem Start Am Matlabprompt können wir nun: Variablen benennen/ Matrizen, Strings oder Vektoren eingeben etc. Funktionen aufrufen. Eigene Programme aufrufen. Den Matlabeditor aufrufen (edit). Die Matlabhilfe aufrufen (helpdesk). Typeset by FoilTEX 8
Eingabe von Vektoren, Matrizen, Skalaren und Strings Diese Objekte wollen wir Matlab übergeben: 17 (Skalar), 4 1 (Vektor), 1 0 0 6 0, 3 9 (Matrix), 5 0 1 1 Zeichenkette (String). Die Übergabe erfolgt über den Operator = : Name=Objekt. Das sieht z.b. so aus: Typeset by FoilTEX 9
>> t=17 t = 17 >> v=[4;5;1] v = 4 5 1 >> A=[1 0 0; 6 0.3-9; 0 1 1] A = 1.0000 0 0 6.0000 0.3000-9.0000 0 1.0000 1.0000 >> t= Zeichenkette t = Zeichenkette Objekte werden mit [...] zusammengefasst, Zeilensprünge mit ; angegeben, Strings durch... gekennzeichnet. Typeset by FoilTEX 10
Beispiel: lineare Gleichungssysteme 4x 1 +3x 2 +4x 3 = 27 4x 1 +5x 2 = 40 x 1 +3x 2 +2x 3 = 15 Typeset by FoilTEX 11
Beispiel: lineare Gleichungssysteme A = 4x 1 +3x 2 +4x 3 = 27 4x 1 +5x 2 = 40 x 1 +3x 2 +2x 3 = 15 4 3 4 4 5 0, b = 27 40, x = 1 3 2 15 Ax = b, det(a) 0 x = A 1 b. x 1. x 2 x 3 Typeset by FoilTEX 12
Beispiel: lineare Gleichungssysteme A = a 11 x 1 +a 12 x 2 + +a 1n x n = b 1 a 12 x 1 +a 22 x 2 + +a 2n x n = b 2....... a n1 x 1 +a n2 x 2 + +a nn x n = b n a 11 a 12 a 1n a 21 a 22 a 2n......, b = a n1 a n2 a nn Ax = b, det(a) 0 x = A 1 b. b 1 b 2. b n, x = x 1 x 2. x n. Typeset by FoilTEX 13
Drei (erste) Tips: Es macht sich bezahlt phantasievolle Variablennamen zu verwenden, um die Übersicht zu behalten!! Z.B.: drehmatrix=[0.5 0.87;-0.87 0.5] ist der Operator fürs Transponieren, d.h.: v=[4 1 5] und v=[4;1;5] erzeugen denselben Vektor! Durch Nachstellen von ; wird die Eingabebestätigung von Matlab unterdrückt, insbesondere beim Programmieren sinnvoll!! Mehrere Anweisungen auf einer Eingabezeile werden durch, getrennt. Typeset by FoilTEX 14
Die Grundfunktionen von Matlab Zum Rechnen mit Matrizen, Vektoren und Skalaren: +,-,*. Die Division / ist für Matrizen und Vektoren nicht definiert! ^ steht für potenzieren, also z.b. a^5, A^2. Durch.* können Matrizen komponentenweise multipliziert werden, z.b.: >> A=[2 1;0 1]; >> B=[3 0;1 2]; >> A.*B ans = 6 0 0 2 Typeset by FoilTEX 15
Der colon-operator Der colon-operator (colon, engl. Doppelpunkt) erzeugt einen Laufindex: Beispiel: Grenze1:Schrittweite:Grenze2 >> x=1:3:18 x = 1 4 7 10 13 16 Die Standard-Schrittweite ist 1: >> x=3:9 x = 3 4 5 6 7 8 9 Typeset by FoilTEX 16
Zugriff auf einzelne Matrizenelemente Zugriff durch: Objekt(Zeile,Spalte) Beispiel: >> B=[3 0 6;1 2 5]; >> Vorname= Roland ; >> B(2,1) ans = 1 >> Vorname(1,5) ans = n Typeset by FoilTEX 17
Bei nur einer Zeile/Spalte kann die Angabe hierfür weggelassen werden: >> Vorname(5) ans = n Die Benutzung des colon-operators leistet unschätzbare Dienste: >> B(2,1:2) ans = 1 2 Der colon-operator ohne weitere Angabe steht für ganze Zeilen/Spalten: >> B(:,1) ans = 3 1 Typeset by FoilTEX 18
Editieren von Matrixelementen Es ist einfach einzelne Matrixelemente zu editieren: >> B(1,1)=5 B = 5 0 6 1 2 5 >> B(3,4)=0 B = 5 0 6 0 1 2 5 0 0 0 0 0 >> B(3,2:3)=1 B = 5 0 6 0 1 2 5 0 0 1 1 0 Typeset by FoilTEX 19
Erzeugung spezieller Matrizen eye(n,m) - eine n m Matrix mit Einsen auf der Diagonalen, sonst Nullen. rand(n,m) - eine n m Matrix mit Zufallszahlen aus [0, 1]. ones(n,m) - eine n m Matrix, enthält nur Einsen. zeros(n,m) - eine n m Matrix, enthält nur Nullen. Typeset by FoilTEX 20
Das Zusammensetzen von Matrizen Das kombinieren von mehreren Matrizen zu einer neuen ist kein Problem. Matrix = ( A B C Diese Matrix wird einfach mit Matrix=[A B; C] eingegeben. Die Spaltenanzahl jeder Zeile muss aber übereinstimmen! ) Typeset by FoilTEX 21
Das Laden und Speichern von Daten An dieser Stelle geht es nur um 2 Dateitypen: Speichern/Laden des Workspace oder einzelner Objekte in einer.mat-datei. Speichern/Laden von Skript- oder Funktionsdateien in einer.m-datei. Typeset by FoilTEX 22
.mat-dateien : save session.mat - speichert kompletten Workspace. save session.mat A B - speichert nur die benannten Objekte A, B. Laden mit load session..m-dateien enthalten - eine Folge von Anweisungen /Programmen. - eigene Funktionen. Erstellung : mit jedem Texteditor. Abspeichern : unter name.m. Aufrufen : name vom Matlabprompt aus. Die Datei name.m muss sich im aktuellen Arbeitsverzeichnis befinden. Typeset by FoilTEX 23
Zufallszahlen Zufallszahlen: echt zufällig, z.b. tics eines Geigerzählers, Würfel,... Pseudozufallszahlen: werden durch mathematischen Algorithmus erzeugt Wünschenswerte Eigenschaften: effiziente Berechnung verhalten sich bei statistischen Tests wie echte Zufallszahlen gute statistische Eigenschaften kein zusätlicher Speicherplatz Reproduzierbarkeit von Zufallszahlenfolgen Typeset by FoilTEX 24
Der Seed-Wert Nach dem Start liegt immer derselbe seed -Wert vor! Neu setzen: rand( state,seed). Z.B.: rand( state,100*sum(clock)), setzt den Seed abhängig von der Systemzeit. Typeset by FoilTEX 25
Elementare Programmschleifen und Abfragen if -Abfragen: Wenn meine Bedingung gilt, tue die weiteren Anweisungen. Die wichtigsten Operatoren, für die Bedingungen sind: ==, =,<,>,<=,>=. Beispiel: if b~=0 c=a/b else c=0 end Typeset by FoilTEX 26
. for-schleifen: Wiederhole folgende Anweisungen so und so oft. Beispiel: for i=1:10 s=s+i end Typeset by FoilTEX 27
. while-schleifen: Tue meine Anweisung, solange diese Bedingung erfüllt ist. while-schleifen werden solange durchlaufen, bis eine Bedingung erfüllt ist. (Hervorragend zur Erzeugung von Endlosschleifen geeignet!!) Beispiel: e = 1; while (1+e) < 10 e = e+0.5; end display( Die Schleife ist jetzt zu Ende ) Typeset by FoilTEX 28
Funktions-Dateien Funktionsdateien sind Skriptdateien an die Parameter übergeben werden können. Kennzeichnend ist die erste Zeile: function Ausgabevariable/n = NAME(Eingabeparameter) Beispiele: function p=wkeit(sequenz) function [a,b]=auswertung(c,d,e) Typeset by FoilTEX 29
. Aufgerufen werden Funktionen mit: NAME(Eingabeparameter) Beispiele: >> auswertung(5,7,8) >> f=auswertung(5,7,8) >> [f,g]=auswertung(5,7,8) Typeset by FoilTEX 30
Beispiel für eine Funktionsdatei: Berechnung der Nullstellen eines quadratischen Polynoms: function [n1,n2] = NPol2(a,b,c) % Ausgabe von der Nullstellen eines quadratischen Polynoms % der Form ax^2+bx+c. if a==0 error( Es handelt sich um kein quadratisches Polynom! ) end n1=-b/(2*a)+((b/(2*a))^(2)-c/a)^(0.5) n2=-b/(2*a)-((b/(2*a))^(2)-c/a)^(0.5) Typeset by FoilTEX 31