Upload
godafrid-lais
View
114
Download
2
Embed Size (px)
Citation preview
Matlab Praktikum
Dipl.-Math. Zülfü Taskesen
11.04.23 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
11.04.23 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
11.04.23 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
11.04.23 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.
11.04.23 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:
11.04.23 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
11.04.23 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.
11.04.23 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
11.04.23 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
11.04.23 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.
11.04.23 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:
11.04.23 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
11.04.23 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>>
11.04.23 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.
11.04.23 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.
11.04.23 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 .^:
11.04.23 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
11.04.23 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
11.04.23 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,
11.04.23 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
11.04.23 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
11.04.23 Dipl.-Math Zülfü Taskesen 23
Vertiefter Umgang mit Matlab
• Anwendungen zur Matrix und Vektorrechnung• Weitere Datentypen• Programmieren
11.04.23 Dipl.-Math Zülfü Taskesen 24
Anwendungen zur Matrix und Vektorrechnung
Polynome in Matlab
Beispiel: P(x) = 2x3 + x2 + 3.5x − 5
11.04.23 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
11.04.23 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)
11.04.23 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
11.04.23 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)
11.04.23 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)}
11.04.23 Dipl.-Math Zülfü Taskesen 30
Programmieren
Steuerstrukturen
• for-Schleifen
• while-Schleifen
• Verzweigungen mit if
• Verzweigungen mit switch
11.04.23 Dipl.-Math Zülfü Taskesen 31
Programmieren
FOR-Schleifen
for variable = ausdruck
befehle
end
for n = 1:10
f = n^2
end
11.04.23 Dipl.-Math Zülfü Taskesen 32
Programmieren
while ausdruck
befehle
end
WHILE-Schleifen
w=0
while w > 1
w = w + 1
end
11.04.23 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
11.04.23 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
11.04.23 Dipl.-Math Zülfü Taskesen 35
Programmieren
Berechne eine Approximation an die Exponentialfunktion e^xdurch
11.04.23 Dipl.-Math Zülfü Taskesen 36
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