matlab praktikum - fakultät für mathematik:: fakultät für … · 2016-09-20 · matlab...

49
Matlab Praktikum Dipl.-Math. Zülfü Taskesen

Upload: dothu

Post on 30-Mar-2019

226 views

Category:

Documents


1 download

TRANSCRIPT

Matlab Praktikum

Dipl.-Math. Zülfü Taskesen

10.12.12 Dipl.-Math Zülfü Taskesen 210.12.12 Dipl.-Math Zülfü Taskesen 2

Praktikumsübersicht

Teil 1 Erste Schritte in Matlab

• Einführung und Motivation• Einfaches Rechnen• Rechnen mit Vektoren und Matrizen

• Anwendungen zur Matrix und Vektorrechnung• Weitere Datentypen• Programmieren

Teil 2 Vertiefter Umgang mit Matlab

Teil 3 Funktionen in Matlab

• Funktionen• m-Files• Debuggen

10.12.12 Dipl.-Math Zülfü Taskesen 310.12.12 Dipl.-Math Zülfü Taskesen 3

Teil 4 Graphische Ausgaben mit Matlab

• 2D Plots• Gestalten von Graphikausgaben• Mehrdimensionale Plots• Animationen

Teil 5 Erweiterungen von Matlab

• Toolboxen• Graphische Oberflächen• Profiler

• Selbstständiges Bearbeiten einer mathematischen Fragestellung mit Hilfe von Matlab

Teil 6 Projekt

Praktikumsübersicht

10.12.12 Dipl.-Math Zülfü Taskesen 410.12.12 Dipl.-Math Zülfü Taskesen 4

Einführung und Motivation

Was ist Matlab?

• wurde in den 1970er Jahren zur Unterstützung von Kursen der Linearen Algebra und numerischen Analysis entwickelt.

• ist ein Softwarepaket für numerische Berechnungen und zur Visualisierung;

Matlab

MATrix LABoratory

10.12.12 Dipl.-Math Zülfü Taskesen 510.12.12 Dipl.-Math Zülfü Taskesen 5

Einführung und Motivation

Was kann Matlab?

Matlab bietet

• eine einfache Syntax basierend auf dem Matrix-Datentyp;

• ein breites Spektrum mathematischer Funktionen und Algorithmen aus verschiedenen Anwendungsbereichen;

• eine plattformübergreifende Programmiersprache;

• einfach zu bedienende Visualisierungsmöglichkeiten.

10.12.12 Dipl.-Math Zülfü Taskesen 610.12.12 Dipl.-Math Zülfü Taskesen 6

Einführung und Motivation

Matlab starten

Eingabefenster (Command Window):

Hier werden die Matlab Befehle eingegeben;

Nach erfolgreichem Start erscheint ein dreigeteiltes Fenster bestehend aus

Workspace Fenster:

Zeigt die definierten Variablen an;

Zeigt die zuletzt eingegebenen Befehle an;

History Fenster:

10.12.12 Dipl.-Math Zülfü Taskesen 710.12.12 Dipl.-Math Zülfü Taskesen 7

Einfaches Rechnen in Matlab

Beispiel: Berechne zu einem Kreisradius r die Fläche und den Umfang des Kreises.

>> r = 3r =3>> A_Kreis = r ^2* piA_Kreis =28.2743>> U_Kreis = 2* r*piU_Kreis =18.8496

10.12.12 Dipl.-Math Zülfü Taskesen 810.12.12 Dipl.-Math Zülfü Taskesen 8

Einfaches Rechnen in Matlab

Elementares Rechnen in Matlab:

• Variablen werden durch Zuweisungen eines Wertes mit ”=” definiert.

• Namen müssen mit einem Buchstaben anfangen und dürfen Buchstaben, Zahlen und den Unterstrich enthalten. Dabei wird Groß- und Kleinschreibung berücksichtigt.

• Die Grundrechenarten sind durch die Zeichen +,−,*, /,^, ( potenzieren) definiert.

• Bei den Operatoren gilt die übliche Auswertungsreihenfolge: Potenzieren vor Punktrechnung vor Strichrechnung. Auswertungsreihenfolgen können durch Klammerung geändert werden.

10.12.12 Dipl.-Math Zülfü Taskesen 910.12.12 Dipl.-Math Zülfü Taskesen 9

Elementare Funktionen in Matlab

Es gibt eine Vielzahl elementarer Funktionen in Matlab:

exp, pow2 Exponentialfunktion zur Basis e bzw. 2

log, log10, log2 Logarithmus Funktionen

sqrt, realsqrt Wurzelfunktionen

sin, cos, tan Trigonometrische Funktionen

asin, acos, atan Inverse der trigonometrischen Funktionen

sinh, cosh, tanh Hyperbelfunktionen

asinh, acosh, atanh Area Hyperbolicus Funktionen

round, floor, ceil runden, abrunden, aufrunden

mod, rem, sign Modul, Divisionsrest, Vorzeichen

10.12.12 Dipl.-Math Zülfü Taskesen 1010.12.12 Dipl.-Math Zülfü Taskesen 10

Konstanten in Matlab

In Matlab sind einige spezielle Zahlen definiert:

realmin, realmax kleinste bzw. größte darstellbare Gleitpunktzahl

eps relative Genauigkeit von Gleitpunktzahlen

inf, -inf ± unendlich

NaN Not a number, nicht definierter Ausdruck, z.B. 0/0

pi Kreiszahl π

i, j imaginäre Einheit

10.12.12 Dipl.-Math Zülfü Taskesen 1110.12.12 Dipl.-Math Zülfü Taskesen 11

Variablen in Matlab

• In Matlab werden Variablen durch Zuweisungen ohne vorherige Deklaration angelegt.

• In einem Workspace definierte Variablen können mit den Funktionen who und whos angezeigt werden.

• Durch Variablendefinition können vorhandene Matlab Funktionen und Variablen überschrieben werden.

• Mit clear <Variablenname> bzw. clear kann eine Variable bzw. alle Variablen im Workspace gelöscht werden.

10.12.12 Dipl.-Math Zülfü Taskesen 1210.12.12 Dipl.-Math Zülfü Taskesen 12

Komplexe Zahlen

• Komplexe und reellwertige Zahlen können in Matlab gleichzeitig ohne besondere Deklaration verwendet werden.

• Real- und Imaginärteil einer Zahl können mit den Funktionen real bzw. imag bestimmt werden.

• Der Betrag einer komplexen Zahl kann mit abs bestimmt werden.

• Vorsicht mit den Variablen i und j:

10.12.12 Dipl.-Math Zülfü Taskesen 1310.12.12 Dipl.-Math Zülfü Taskesen 13

Ausgabeformatierung

Die Ausgabeformatierung kann mit format angepasst werden.

format loose: Darstellung mit großen Abständen

format compact: kompakte Darstellung

format short: Festpunktdarstellung mit 5 Stellen

format long: Festpunktdarstellung mit 15 Stellen

format e: Gleitpunktdarstellung mit 5 Stellen

format long e: Gleitpunktdarstellung mit 15 Stellen

format rat: Rationale Näherung

10.12.12 Dipl.-Math Zülfü Taskesen 1410.12.12 Dipl.-Math Zülfü Taskesen 14

Einfache Skripte

Matlab Befehle können in Textdateien mit Endung .m gespeichert und im Workspace durch Eingabe des Dateinamens (ohne Endung) ausgeführt werden. Dazu kann der Matlab Editor edit oder jeder andere Texteditor benutzt werden.

Kegel.m

% Berechnung des Volumens% eines Kegelsr=3h=5V =1/3* r ^2* h

>> Kegelr =3h =5V =15>>

10.12.12 Dipl.-Math Zülfü Taskesen 1510.12.12 Dipl.-Math Zülfü Taskesen 15

• Zeilen, die mit einem % beginnen, werden als Kommentarzeilen behandelt.

• Lange Eingaben können durch ... auf mehrere Zeilen verteilt werden.

• Beim Aufruf im Workspace werden alle Skripte im aktuellen Verzeichnis und im Suchpfad berücksichtigt.

• Die Funktion what listet alle m-Files im aktuellen Verzeichnis auf.

10.12.12 Dipl.-Math Zülfü Taskesen 1610.12.12 Dipl.-Math Zülfü Taskesen 16

Rechnen mit Matrizen und Vektoren

• Matrizen und Vektoren können in Matlab durch Angabe der Elemente in eckigen Klammern definiert werden.

>> alpha =pi /4;>> A=[ cos ( alpha ), -sin ( alpha ); sin ( alpha ), cos ( alpha )]

A =0.7071 -0.70710.7071 0.7071

• Vektoren werden als Matrizen definiert, wobei die Zeilen- oder Spaltendimension 1 ist.• In Matlab sind Operatoren zum Rechnen mit Matrizen, Vektoren und Skalaren definiert.

10.12.12 Dipl.-Math Zülfü Taskesen 1710.12.12 Dipl.-Math Zülfü Taskesen 17

Operatoren für Matrizen

• Operationen zwischen zwei Matrizen / Vektoren: +, -, * zum Addieren, Subtrahieren, Multiplizieren.

• Operatoren zum Lösen linearer Gleichungssysteme: /, \.

• Komponentenweise Multiplikation und Division: skalare Multiplikation mit den Operatoren .* und ./:• Komponentenweises Potenzieren mit .^:

10.12.12 Dipl.-Math Zülfü Taskesen 1810.12.12 Dipl.-Math Zülfü Taskesen 18

Spezielle Matrizen

Einsmatrix- bzw. –vektor: ones(n), ones(n,m)

Nullmatrix- bzw. -vektor: zeros(n), zeros(n,m)

Einheitsmatrix bzw. -vektor: eye(n), eye(n,m)

Zufallsmatrix bzw. -vektor: rand(n,m), randn(n,m)

Diagonalelemente einer Matrix: diag(x), diag(A)

>> rand (3)ans =0.4898 0.7094 0.67970.4456 0.7547 0.65510.6463 0.2760 0.1626

10.12.12 Dipl.-Math Zülfü Taskesen 1910.12.12 Dipl.-Math Zülfü Taskesen 19

Matrixindizierung

über Zeilen- und Spaltenindizes über Indizes der Elemente

>> A =[1 2 3; 4 5 6]>> A(2, 2)ans =5>> A (2)ans =4

10.12.12 Dipl.-Math Zülfü Taskesen 2010.12.12 Dipl.-Math Zülfü Taskesen 20

Matrix-Abmessungen

• Die Abmessungen einer Matrix kann mit der Funktion size A bzw. [z,s]=size(A) ermittelt werden,

• mit length(A) kann man die Länge eines Vektors ermitteln.

• Die Funktion numel(A) gibt die Anzahl der Elemente von A zurück,

10.12.12 Dipl.-Math Zülfü Taskesen 2110.12.12 Dipl.-Math Zülfü Taskesen 21

Aufgaben -Elementares Rechnen

>> 3+4/5*6

>> 48/3-3^2

>> exp(700)

>> exp(710)

>> round(-2.6), fix(-2.6)

>>sqrt(1^2+1^2)

>> z = (3+2i)/(1-i)

>> real(z), imag(z)

>> z = 4i/(1+i)

>> conj(z)

>> angle(z)*180/pi

>> abs(z)

Ermitteln Sie das Ergebnis von

10.12.12 Dipl.-Math Zülfü Taskesen 2210.12.12 Dipl.-Math Zülfü Taskesen 22

Aufgaben - Rechnen mit Matrizen

Erzeugen Sie einen Zeilenvektor mit der ersten Koordinate 29 und der letzten 1, wobei sich die Koordinaten absteigend um 2 unterscheiden sollen.

Erzeugen Sie einen Vektor y, der die Funktionswerte des natürlichen Logarithmus an den Stellen 1; 3; 5; 7 enthält. Was ist y(1)?

>> zeros(3,2)

>> eye(3)

>> ones(2,3)

>> A = [1 2; 3 4; 5 6]

>> B = [7 8; 9 10; 11 12]

>> A.*B, A.^2+ B.^2

10.12.12 Dipl.-Math Zülfü Taskesen 2310.12.12 Dipl.-Math Zülfü Taskesen 23

Vertiefter Umgang mit Matlab

• Anwendungen zur Matrix und Vektorrechnung• Weitere Datentypen• Programmieren

10.12.12 Dipl.-Math Zülfü Taskesen 2410.12.12 Dipl.-Math Zülfü Taskesen 24

Anwendungen zur Matrix und Vektorrechnung

Polynome in Matlab

Beispiel: P(x) = 2x3 + x2 + 3.5x − 5

10.12.12 Dipl.-Math Zülfü Taskesen 2510.12.12 Dipl.-Math Zülfü Taskesen 25

Anwendungen zur Matrix und Vektorrechnung

Darstellung von Polynomen

Polynome werden in Matlab durch einen Zeilenvektor repräsentiert, wobei die Koordinaten die Koeffizienten des Polynoms darstellen. Die Reihenfolge ist absteigend festgelegt

p(x) = x^4 +8*x^3 + 2*x^2 + x -12

>> p=[1 -8 2 1 12]

Beachten Sie, dass Nullkoeffizienten mitgeführt werden müssen

10.12.12 Dipl.-Math Zülfü Taskesen 2610.12.12 Dipl.-Math Zülfü Taskesen 26

Anwendungen zur Matrix und Vektorrechnung

Auswerten von Polynomen

Polynome können mit der Funktion polyval ausgewertet werden

p(x) = x^4 +8*x^3 + 2*x^2 + x -12

>> p=[1 8 2 1 -12]

>> xo=2.5>>px = polyval(p,xo)

>> xo=-1:0.5:1>>px = polyval(p,xo)

10.12.12 Dipl.-Math Zülfü Taskesen 2710.12.12 Dipl.-Math Zülfü Taskesen 27

Anwendungen zur Matrix und Vektorrechnung

Zusammenfassung

Funktion Beschreibung

conv Multipliziert Polynome

Deconv Dividiert Polynome

poly Polynom aus Nullstellen

polyder Berechnet Ableitung

polyint Berechnet Integral

polyval Berechnet Polynomwerte

roots Berechnet Nullstellen

10.12.12 Dipl.-Math Zülfü Taskesen 2810.12.12 Dipl.-Math Zülfü Taskesen 28

Zeichenketten werden in Matlab in einfachen Hochkommata ’ ’ angegeben, gespeichert werden sie als Vektor von Buchstaben (char Array).

Weitere Datentypen

Zeichenketten

>> a= 'Hallo Bremen'

Auf die Buchstaben einer Zeichenkette kann wie auf Elemente von Matrizen zugegriffen werden.

>> a (1:5)

10.12.12 Dipl.-Math Zülfü Taskesen 2910.12.12 Dipl.-Math Zülfü Taskesen 29

Eine Verallgemeinerung von mehrdimensionalen Feldern sind Cell Arrays, in denen beliebige Datenstrukturen gespeichert werden können.

Weitere Datentypen

Cell Arrays

>> C={ rand(2,10),eye(10)}

10.12.12 Dipl.-Math Zülfü Taskesen 3010.12.12 Dipl.-Math Zülfü Taskesen 30

Programmieren

Steuerstrukturen

• for-Schleifen

• while-Schleifen

• Verzweigungen mit if

• Verzweigungen mit switch

10.12.12 Dipl.-Math Zülfü Taskesen 3110.12.12 Dipl.-Math Zülfü Taskesen 31

Programmieren

FOR-Schleifen

for variable = ausdruck

befehle

end

for n = 1:10

f = n^2

end

10.12.12 Dipl.-Math Zülfü Taskesen 3210.12.12 Dipl.-Math Zülfü Taskesen 32

Programmieren

while ausdruck

befehle

end

WHILE-Schleifen

w=0

while w > 1

w = w + 1

end

10.12.12 Dipl.-Math Zülfü Taskesen 3310.12.12 Dipl.-Math Zülfü Taskesen 33

Programmieren

If-Anweisung

if <Bedingung>

<Anweisung>

elseif <Bedingung>

<Anweisung>

else

<Anweisung>

end

if ( x >1)

disp (’ x ist kleiner als 1’);

elseif ( abstand <1)

disp (’ x ist größer als 1’);

else

disp (’ x ist keine reelle Zahl‘);

end

10.12.12 Dipl.-Math Zülfü Taskesen 3410.12.12 Dipl.-Math Zülfü Taskesen 34

Programmieren

switch Anweisung

switch <Ausdruck>

case Wert

<Anweisung>

case {Wert1, Wert2, ...}

<Anweisung>

otherwise

<Anweisung>

end

n= mod ( floor ( rand (1)*10) , 9)+1

switch n

case {1 ,4 ,9}

disp ('ist Quadratzahl ');

case {2 ,3 ,5 ,7}

disp ('ist Primzahl ');

otherwise

disp ('ist Kubikzahl ');

end

10.12.12 Dipl.-Math Zülfü Taskesen 3510.12.12 Dipl.-Math Zülfü Taskesen 35

Programmieren

Berechne eine Approximation an die Exponentialfunktion e^xdurch

10.12.12 Dipl.-Math Zülfü Taskesen 3610.12.12 Dipl.-Math Zülfü Taskesen 36

Ergebnis

ergebnis = 1;for i = 1 : n

ergebnis = ergebnis *i;

end

Fakultät

erg = 0;for i = 0 : n

erg = erg + x ^ i /ergebnis ;

end

Exponentialfunktion

10.12.12 Dipl.-Math Zülfü Taskesen 37

Graphische Ausgaben mit Matlab

Es gibt mehrere Möglichkeiten in Matlab zweidimensionale Graphen von Funktionen zu Plotten:

• Erzeugen von Punktemengen (x, f (x)) und Plotten mit der Funktion plot;

>> x =-pi: pi /20:pi;

>> y =sin(x);

>> plot (x, y, ’b’)

10.12.12 Dipl.-Math Zülfü Taskesen 38

2D Plots

• Plotten einer inline-Funktion mit der Funktion ezplot.

>> f='sin(x)‘

>> Intervall=[-pi,pi]

>> ezplot(f, Intervall)

10.12.12 Dipl.-Math Zülfü Taskesen 39

2D Plots

Zur Berechnung eines Graphen kann ein Gitter des Urbildbereichs erzeugt werden.

• linspace Operator erzeugt eine äquidistante Unterteilung eines Intervalls

• logspace erzeugt eine logarithmische Unterteilung eines Intervalls

>> linspace (0 ,1 ,5000)

>> logspace (0 ,1 ,5)

10.12.12 Dipl.-Math Zülfü Taskesen 40

2D Plots mehrerer Graphen

Soll mehr als ein Graph in ein Koordinatensystem geplottet werden, so kann dies auf verschiedene Arten erreicht werden:

• Man erstellt einen Spaltenvektor von x-Werten, erzeugt eine Matrix mit den Funktionswerten und plottet die Spalten der Matrix:

>> x =[0: pi /20:2* pi ]’;

>> plot (x, [ sin (x) cos (x )]);

• Die Graphen werden einzeln aufgelistet:

>> x =[0.1:.01:2];

>> y =[0.1:.02:2];

>> plot (x, sqrt (x), y, log (y))

10.12.12 Dipl.-Math Zülfü Taskesen 41

2D Plots mehrerer Graphen

• Mit hold werden Graphen in einem Figure nicht durch neue Plotbefehleüberschrieben. Neue Graphen werden ins Koordinatensystem eingefügt.

>> x =[0.1:.01:2];

>> plot (x, 1./x, ’g’);

>> hold on

>> ezplot (’1./ x .^2 ’, [0, 2]);

>> hold off

10.12.12 Dipl.-Math Zülfü Taskesen 42

2D Plots mehrerer Graphen

• Sollen mehrere Graphen mit unterschiedlicher Skalierung der y-Achsen geplottet werden, so kann der Befehl plotyy verwendet werden:

>> t= linspace (0, 5*pi , 1000);

>> x= exp (-t ).* sin (10.* t);

>> y= cos (t);

>> plotyy (t,x,t,y);

10.12.12 Dipl.-Math Zülfü Taskesen 43

Verschiedene Graphen in einem Bild

• Mit der Funktion subplot besteht die Möglichkeit, mehrere Bilder

untereinander und/oder nebeneinander in einer Figur zusetzen;

>> x =[0: pi /20:2* pi ];

>> subplot(2,2,1:2); plot (x, sin (x) );

>> subplot(2,2,3); plot (x, cos (x) );

>> subplot(2,2,4); plot (x, exp (x) );

10.12.12 Dipl.-Math Zülfü Taskesen 44

Plots komplexer Zahlen

Komplexe Zahlen lassen sich in 2D Plots veranschaulichen.

• compass stellt komplexe Zahlen in Polarkoordinaten dar

>> Z= eig ( randn (20));

>> compass (Z)

• feather stellt zweidimensionale Vektoren bzw. komplexe

Zahlen als Vektoren entlang einer Geraden dar.

>> feather (Z)

10.12.12 Dipl.-Math Zülfü Taskesen 45

Plots Richtungsfelder

• Mit der Funktion quiver können Vektorfelder darstellt werden:

>> [X,Y] = meshgrid(-2:0.5:2);

>> quiver(X,Y,-Y,X), grid on,

>> axis equal

10.12.12 Dipl.-Math Zülfü Taskesen 46

Gestalten von Grafikausgaben

Achsengestaltung

>> x =[0:.1:10]‘;

>> Y=[x x .^2 x .^3 x .^4 exp(x)];

>> plot (x,Y);

Mit axis kann die Skalierung der Achsen angepasst werden. Die Beschriftung der Achsen kann mit xlabel und ylabel geändert werden

>> axis ([0 2 0 16])

>> xlabel (’x’)

>> ylabel (’f(x)’)

axis( [ xmin xmax ymin ymax ] )

10.12.12 Dipl.-Math Zülfü Taskesen 47

Gestalten von Grafikausgaben

Mit box kann die Umrahmung des Bildes an und ausgeschaltet werden, ebenso kann mit axis die Achsen angezeigt oder unterdrückt werden. Grid stellt ein Gitter hinter dem Graphen dar.

>> box off

>> grid on

>> axis off

10.12.12 Dipl.-Math Zülfü Taskesen 48

Gestalten von Grafikausgaben

Beschriftungen

Eine Überschrift zu einem Graphen kann mit title festgelegt werden.

>> title (’ Potenzfunktionen ’)

Hilfreich ist es auch bei Plots mit mehreren Graphen eine Legende zu haben. Diese lässt sich mit legend hinzufügen.

>> legend (’x’, ’x^2 ’,’x^3 ’, ’x^4 ’, ’exp (x)’,’location ’, ’NE ’)

10.12.12 Dipl.-Math Zülfü Taskesen 49

Gestalten von Grafikausgaben

Textmarken

Besondere Stellen im Graphen können mit text mit einem Textfeld markiert werden. Mit befehle können auch Linien, Pfeile und andere Graphikelemente eingefügt werden. Bei der Beschriftung können im eingeschränkten Umfang Latex Kommandos verwendet werden, die entsprechend zu formatiertem Text umgesetzt werden.

>> plot(0:pi/20:2*pi,sin(0:pi/20:2*pi))

>> text(pi,0,' \leftarrow sin(\pi)','FontSize',18)