22.10.2015 Crash-Kurs in Matlab/Octave Der Crash-Kurs soll Studierenden, die noch keine Erfahrungen mit haben, eine kurze Einführung geben. Ziel des Kurses ist es, dass jeder Studierende anschließend in der Lage ist, folgende Arbeitsschritte mit zu absolvieren: • Der Umgang mit den wichtigsten Konzepten wie for-Schleifen, if/else-Abfragen, sowie der Darstellung von Vektoren und Matrizen in Matlab/Octave. • Das Programmieren von einfachen Programmen/Algorithmen als Skriptdatei • Das Programmieren von Funktionen • Das Formatieren von Ausgaben • Das Plotten von Funktionen Anmerkung: Diese Einführung folgt dem Prinzip “learning by doing”. Ein Großteil des hier angegebenen Codes wird nicht explizit erklärt. Die Benutzeroberfläche von Matlab/Octave Die Benutzeroberfläche von Matlab/Octave ist je nach Version und Einrichtung des Benutzers verschieden aufgebaut. Machen Sie sich mit den folgenden Elementen vertraut: • Der Pfad/Current Directory, der den aktuellen Ordner auf der Festplatte angibt, in dem man sich befindet • Unter Current Folder/File Browser werden die Dateien in diesem Ordner angezeigt • In Workspace werden alle Variablen und Daten, die Matlab/Octave bei der aktuellen Sitzung gespeichert hat, angezeigt • In dem Fenster Command History werden die letzten durchgeführten Befehle angezeigt • In dem großen Fenster Command Window befindet sich die Befehlszeile zum Eingeben von Befehlen und die Ausgabe. Einfache Befehle und Variablen Geben Sie folgende Befehle nacheinander in der Befehlszeile ein. Die einzelnen Befehle sind durch “,” getrennt, an dieser Stelle muss zum Ausführen des Befehls die Enter-Taste gedrückt werden. Betrachten Sie für jeden Befehl das Ergebnis. 2+3, 3*5, a=10, b=2^5, a*b Mit Hilfe des “=” können Variablen definiert werden, denen direkt ein Wert zugeordnet wird. Hier z.B. hat die Variable a den Wert 10, auf den später zugegriffen wird. Vektoren und Matrizen Geben Sie folgende Befehle jeweils in der Befehlszeile ein, drücken Sie Enter und betrachten Sie die Ausgabe: x=[1;1], A=[2,3;4,5], b=A*x, y=A\b, x=x*2, x.^3, ones(2,1), zeros(1,2), Mit Hilfe von [. . . ] können Matrizen (und somit Vektoren) definiert werden. Ein “;” steht für eine neue Zeile, ein “,” steht für eine neue Spalte. Vektoren lassen sich einfach als Matrix mit nur einer Spalte darstellen. Aufgabe: Definieren Sie zwei beliebige 2 × 2-Matrizen A und B. Was ist der Unterschied zwischen den Befehlen A*B und A.*B? Skriptdateien Skriptdateien sind nichts anderes als eine Sammlung von Befehlen, die nacheinander durchgeführt werden. Navigieren Sie in ihr Home-Verzeichnis und erstellen Sie eine Skriptdatei durch einen Rechtsklick in Current Folder und Klick auf New File - Script. Nennen Sie die Datei “MyFile.m” und öffnen Sie sie. Schreiben Sie einen Befehl wie oben in die erste Zeile und führen Sie die Datei aus, indem Sie oben auf “Run” klicken oder einfach F5 drücken. Schreiben Sie mehrere Befehle in die Datei, wie zum Beispiel A=eye(3,3) A(1,1)=2 A(2,1)=4 % A(3,3)=5 A*[1;2;3] Was bewirken die einzelnen Befehle (insbesondere das %)? Wenn Sie die Datei ausführen, wird jede Rechenoperation ausgegeben, was sehr unübersichtlich ist. Es ist sinnvoll, bei den meisten Code-Zeilen ein “;” am Ende einzufügen, um die Ausgabe dieser Zeile zu unterdrücken. Funktionsdateien Funktionsdateien sind so ähnlich wie Skriptdateien, nur haben sie noch die Eigenschaft, dass Eingabedaten und Ausgabedaten angegeben werden, wie bei einer Funktion im mathematischen Sinne. Die Funktion selbst kann beliebig komplex sein. Erstellen Sie eine zusätzliche Datei mit “New File - Function”, nennen Sie diese “myFunction.m” und öffnen Sie sie: In der ersten Zeile steht bereits function [output args]=myFunction(input args) Hier gilt: • function ist ein Schlüsselwort zum Definieren einer Funktion 2 • [output args] ist die Ausgabe der Funktion • myFunction ist der Name der Funktion, der gleich dem Dateinamen sein muss • (input args) ist die Eingabe der Funktion. • Die Funktion wird durch das Wort end beendet. Aufgabe: Schreiben Sie eine Funktion bestehen aus den drei Zeilen function [b]=myFunction(A,x) b=A*x; end Rufen Sie jetzt die Funktion in der Befehlszeile von Matlab/Octave auf mit dem Befehl myFunction([1,0;0,2],[1;2]) . Beispiel-Codes for-Schleifen und if/else Abfragen Aufgabe: Schreiben Sie folgende Programme (am besten in eine neue Skriptdatei) und führen Sie diese aus. • x=0; for i=1:10 x=x+i end • x=zeros(10,1); for i=1:10 x(i)=i; if(i>8) disp(’i ist groesser als 8’); else disp(’i ist kleiner oder gleich 8’); end end Aufgabe: Schreiben Sie eine Funktion, die als Eingabe eine ganze Zahl n erhält und die ersten n Fibonacci-Zahlen in einem Vektor ausgibt. Weitere Befehle Mit Hilfe des Befehles “help” erhält man eine Beschreibung von Matlab/Octave-Funktionen. Geben Sie in der Befehlszeile “help clear” ein. Finden Sie heraus, was die folgenden Befehle bewirken und probieren Sie sie ggf. aus: clear, inv, rand, linspace, zeros, while, disp, sort, size, length, norm, abs, format 3 Weitere Aufgaben Plotten einer mathematischen Funktion mit formatierter Ausgabe • Schreiben Sie eine function squareFunction , die für jeden Eingabewert x den Wert y=x.^2-2 ausgibt. (der “.” bewirkt, dass die Operation Komponentenweise durchgeführt wird, falls x ein Vektor ist. • Schreiben Sie eine neue Skriptdatei, die mit den Befehlen clear und close anfängt • In der Skriptdatei soll ein Vektor x erstellt werden, der 100 äquidistante Einträge im Intervall [0, 5] hat (benutzen Sie “linspace”) • Anschliessend soll der Vektor y=squareFunction(x) berechnet werden • Danach soll die Funktion geplottet werden mit dem Befehl plot(x,y,’g’) . • Anschliessend soll eine formatierte Ausgabe eingefügt werden mit dem Befehl disp(sprintf(’Die Funktion besitzt im Intervall [%2.2f,%2.2f] den höchsten Wert %2.2f’,x(1),x(end),max(y))) Hinweis: Das Feld %2.2f ist ein Platzhalter für die Zahlenwerte, die später angegeben werden. • Schreiben Sie eine zweite function namens “diffy” mit folgendem Inhalt: function dy=diffy(f,x) h=0.00001; for i=1:length(x) dy(i)=(feval(f,x(i)+h)-feval(f,x(i)))/h; end; • Was macht diese Funktion? Ergänzen Sie das Skript aus Aufgabe a) mit dem Befehl dy=diffy(’squareFunction’,x) und plotten Sie die Ausgabe in das Gleiche Fenster in einer anderen Farbe Hinweis: Verwenden Sie den Befehl hold on . • Verwenden Sie die Befehle legend , title , xlabel ,ylabel , um den Plot zu beschriften. 4
© Copyright 2024 ExpyDoc