Zweiter Teil des Tutorials

Werbung
Zweiter Teil des Tutorials
●
Workspace
●
M-files
●
Matrizen
●
Flow Control
●
Weitere Datenstrukturen
●
Gemeinsames Beispiel erarbeiten
Workspace
Im Workspace sind die Variablen mit ihrem jeweiligen Wert
gespeichert.
Hier zwei nützliche Commands:
* clear
Löscht alle gespeichteren Variablen
Wichtig in der 'Ausprobierphase' (Fehlerquelle!)
* save dateiname
Speichert alle Variablen in einem Textfile für spätere
Verwendung
M-Files
* Skripts:
Aneinanderreihung von Befehlen die der Reihe nach
abgearbeitet werden
* Funktionen:
Ähnlich wie Skripts, mit dem Zusatz von Argumenten und
Rückgabewerten
Anonymous Functions
Definition einer Funktion ohne eigenes Function m-file:
quadrat = @(x) x*x;
Verwendung mit Argument:
quadrat(2)
Rückgabe 4
Als Variable:
x = [ 1 2 3 quadrat(2) ]
Matrizen
Weitere nützliche Funktionen:
Funktion
Rückgabe
det(A)
rref(A)
inv(A)
eig(A)
linsolve(A,b)
poly(A)
Determinate
reduzierte Zeilenstufenform
Inverse von A
Spaltenvektor mit den Eigenwerten
Lösungsvektor x mit A*x = b
Zeilenvektor mit Koeffizienten
des char. Polynoms
help matfun
für vollständige Liste
Operationen
Die Standard Rechenoperationen (+,-,*,^ ... ) lassen sich in Matlab
- soweit sinnvoll mathematisch definiert - auch auf Matrizen
anwenden:
A*B
errechnet das Produkt der Matrizen A und B
sofern die Dimensionen kompatibel sind
A/B
berechnet A * inv(B)
A-8
berechnet A[i,j] - 8 für alle i,j
wie bereits erwähnt erhält man mit dem . das komponentenweise
Analogon
Beispiel
Vandermonde Matrix erstellen:
x = (1:4)'
V = [x.^0 x.^1 x.^2 x.^3]
linsolve(A,x)
Logische Ausdrücke
Unter Logischen Ausdrücken versteht man Variablen die entweder
die Werte true (1) oder false (0) annehmen.
In aller Regel benötigen wir dazu die bekannten Relationen:
<
>
kleiner
größer
<=
>=
kleiner/gleich
größer/gleich
==
~=
gleich (beachte den Unterschied von 'a = b' und 'a == b')
ungleich
If
Um den Fluss unseres Programmes abhängig von berechneten
Größen (während des Ausführens) zu steuern benutzen wir if:
if (Bedingung 1)
Code der ausgeführt wird, falls Bedingung 1 wahr ist
elseif (Bedingung 2)
Code der ausgeführt wird, falls Bedingung 1 falsch und
Bedingungen 2 wahr ist
else
Code der ausgeführt wird, falls Bedingung 1&2 falsch sind
end
Ein einfaches Beispiel
if (rem(n,2) == 0)
'n ist gerade'
elseif (rem(n,2) == 1)
'n ist ungerade'
else
'n ist keine ganze Zahl'
end
Switch & Case
Folgendes Programm leistet das Selbe wie das vorangegangene
Beispiel:
switch (rem(n,2))
case 0
'n ist gerade'
case 1
'n ist ungerade'
otherwise
'n ist keine ganze Zahl'
end
Verknüpfung Logischer Ausdrücke
||
logisches oder
&&
logisches und
Beispiel:
if( (rem(n,2) == 0) && (rem(n,3) == 0) )
'n ist durch 6 teilbar'
While Schleife
Die While Schleife funktioniert ähnlich wie das if- Statement,
allerdings wird der Code solange ausgeführt, wie die ursprüngliche
Bedingung erfüllt ist:
k=1;
while(k <= n)
if(rem(n,k) == 0)
disp(k);
end;
k = k+1;
end;
For Schleife
Hier das selbe Programm wie zuvor mit Hilfe der for Schleife:
for (k=1:n)
if(rem(n,k) == 0)
disp(k);
end;
end;
k=1;
while(k <= n)
if(rem(n,k) == 0)
disp(k);
end;
k = k+1;
end;
Break Statement
break führt dazu, dass die Schleife in der es steht, verlassen wird:
k=1;
while(1)
if(rem(n,k) == 0)
disp(k);
end;
k = k + 1;
if(k > n) break;
end;
k=1;
while(k <= n)
if(rem(n,k) == 0)
disp(k);
end;
k = k+1;
end;
Weitere Datenstrukturen
Multidimensionale Arrays
A(i,j,k) entspricht A(i,j) der k-ten Matrix
Cell Arrays:
B = { A_1 x_1; A_2 x_2; A_3 x_3 }
String (bereits verwendet):
a = 'Hallo Welt';
Ein erstes Programm
Zum Abschluss der Einführung entwickeln wir gemeinsam Schritt
für Schritt ein kleines Programm.
Versucht euch erstmal eigenständig (mit Partner) an dem ersten
Teil des Programmes:
Function m.file prim.m:
prim: |N → { 0 , 1 }
prim(n) = 1 falls n prim
0 sonst
2. Teil
Schreibe eine Funktion, die einen Vektor mit allen
Primzahlen kleiner/gleich n zurückgibt
3. Teil
Schreibe ein M-file, in dem allen Zahlen von 1 bis 1000
die Anzahl der Primzahlen kleiner gleich dieser Zahl
zugeordnet wird.
(d.h. Eine 1000 x 1 Matrix)
Plotte die Ergebnisse zusammen mit dem Graphen von
x/log(x)
Hinweis: behandele die Zahlen 1 & 2 einzeln
Herunterladen