matlab: nützliches für mathematik iv · lehrstuhl für numerische mathematik ubersicht vektoren...
TRANSCRIPT
Lehrstuhl fürNumerische Mathematik
MATLAB: Nutzliches fur Mathematik IV
Mario T.P.
Mehr Unterlagen unter Einfuhrung in die Programmierung (MA8003)
02.05.2019
Zentralubung 2
Lehrstuhl fürNumerische Mathematik
Ubersicht
• Vektoren
• Matrizen
• Diagonalstrukturen
• Plot der Besetzungstruktur
• Vergleich des Speicherplatzes
• Losung von LGS
• Eigenwerte und Eigenvektoren
• Funktionen in 2D plotten
• Funktionen in 3D plotten
JJ J I II 0 1 2 3 4 5 6 7 8 9 10 11
Lehrstuhl fürNumerische Mathematik 1 Vektoren
Vektoren
• Erstellung:
• >> v = [1 2 3 4]; // Zeilenvektor
• >> v = [1;2;3;4]; // Spaltenvektor
• >> v = 1:4;
• Zugriff auf das i-te Element (Achtung: Indizierung beginnt mit 1):
• >> i = 2; a = v(i);
• Zugriff auf Elemente i− j (Slicing):
• >> i = 2; j = 4; w = v(i:j); // w = [2 3 4]
• Multiplikation:
• >> l = v'*v; // Skalarprodukt (v' ist v transponiert)
• >> l = v*v; // Fehler
• >> w = v.*v; // Elementweise Multiplikation
JJ J I II 0 1 2 3 4 5 6 7 8 9 10 11
Lehrstuhl fürNumerische Mathematik 2 Matrizen
Matrizen
• Erstellung:
• >> M = [1 2 3; 4 5 6; 7 8 9]; // M ist 3x3-Matrix
• Zugriff auf das (i, j)-te Element:
• >> i = 2; j = 3; m = M(i,j); // m = 6
• Slicing:
• >> A = M(1:3,2:3); // A = [2 3; 5 6; 8 9]
• Multiplikation:
• >> Msqrd = M*M // Matrixmultiplikation• >> Msqrd_ew = M.*M // Elementweise Multiplikation• >> Mv = M*v // Matrix-Vektor-Multiplikation
• >> M*[1 2] // Fehler: Dimensionen!
JJ J I II 0 1 2 3 4 5 6 7 8 9 10 11
Lehrstuhl fürNumerische Mathematik 3 Diagonalstrukturen
Diagonalstrukturen
• Erstellung mit diag:
• >> v = [1 2 3 4]; D = diag(v);
D =
1 0 0 00 2 0 00 0 3 00 0 0 4
• >> v = diag(D); // v = [1 2 3 4]
• >> D1 = diag(v,1);
D =
0 1 0 0 00 0 2 0 00 0 0 3 00 0 0 0 40 0 0 0 0
• Nachteil: Matrizen werden voll abgespeichert!
JJ J I II 0 1 2 3 4 5 6 7 8 9 10 11
Lehrstuhl fürNumerische Mathematik 4 Diagonalstrukturen
Diagonalstrukturen
• Erstellung dunnbesetzter Matrizen mit spdiags:
• >> e = ones(n,1);
• >> A = spdiags([e -2*e e], -1:1, n, n);
A =
2 −1−1 2 −1
. . . . . . . . .−1
−1 2
Vorteil: Es werden nur die Eintrage auf den (Sub-)Diagonalen abgespeichert.
JJ J I II 0 1 2 3 4 5 6 7 8 9 10 11
Lehrstuhl fürNumerische Mathematik 5 Plot der Besetzungsstruktur
Plot der Besetzungsstruktur
• Plot der Besetzungsstruktur mit spy:
• >> spy(A);
0 10 20 30 40 50 60 70 80 90 100
0
10
20
30
40
50
60
70
80
90
100
nz = 460
JJ J I II 0 1 2 3 4 5 6 7 8 9 10 11
Lehrstuhl fürNumerische Mathematik 6 Vergleich des Speicherplatzes
Vergleich des Speicherplatzes
0 2 4 6 8 10 12 14 16 18 200
500
1000
1500
2000
2500
3000
3500
n: Dimension der n x n Matrix
Spe
iche
rpla
tzbe
darf
in B
ytes
Speicherplatzbedarf einer Tridiagonalmatrix
schwach besetztvoll besetzt
JJ J I II 0 1 2 3 4 5 6 7 8 9 10 11
Lehrstuhl fürNumerische Mathematik 7 Losung von LGS
Losung von LGS
• Backslash-Operator:
• >> x = A\b; // x ist Loesung von Ax=b
0 20 40 60 80 100 120 140 160 180 2000
0.002
0.004
0.006
0.008
0.01
0.012
n: Dimension der n x n Matrix
gem
esse
ne G
esch
win
digk
eit a
uf P
4 in
[s]
Geschwindigkeit Lösen eines Tridiagonalsystems mit \
schwach besetztvoll besetzt
JJ J I II 0 1 2 3 4 5 6 7 8 9 10 11
Lehrstuhl fürNumerische Mathematik 8 Losung von LGS
Losung von LGS
• Inverse berechnen (NIE anwenden → Speicherplatz, Rundungsfehler, ...):
• >> A_inv = inv(A);
Figure 1: Matrix A Figure 2: Matrix A−1
JJ J I II 0 1 2 3 4 5 6 7 8 9 10 11
Lehrstuhl fürNumerische Mathematik 9 Eigenwerte und Eigenvektoren
Eigenwerte und Eigenvektoren
• Nur Eigenwerte:
• >> k = 4; d = eigs(A,k); // d enthaelt die k groessten EW
• Eigenzerlegung:
• >> [O, D] = eig(A);
• Beispiel: A = ODO> mit
A =
−2 1 01 −2 10 1 −2
, D =
−3.4142 0 00 −2 00 0 −0.5858
und
O =
0.5 −0.7071 −0.5−0.7071 0 −0.7071
0.5 0.7071 −0.5
JJ J I II 0 1 2 3 4 5 6 7 8 9 10 11
Lehrstuhl fürNumerische Mathematik 10 Funktionen in 2D plotten
Funktionen in 2D plotten
• Mehrere Funktionen plotten mit plot:
• >> x = -2:0.01:2;
• >> y1 = x.*sin(4*x);
• >> y2 = (x+1).*sin(4*x);
• >> plot(x, y1, 'o', x, y2, '--')
JJ J I II 0 1 2 3 4 5 6 7 8 9 10 11
Lehrstuhl fürNumerische Mathematik 11 Funktionen in 3D plotten
Funktionen in 3D plotten
• Plotten mit surf:
• >> [X,Y] = meshgrid(-5:.2:5);
>> Z = sin(X).*sin(Y);
>> surf(X,Y,Z)
JJ J I II 0 1 2 3 4 5 6 7 8 9 10 11