Eigenwaarden en eigenvectoren: Eigenwaarden en eigenvectoren in MATLAB
Eigenwaarden en eigenvectoren
Eigenwaarden en eigenvectoren kun je in MATLAB berekenen met de functie eig
, zowel toegepast op numerieke als symbolische matrices. We geven hieronder twee voorbeelden: \[A=\matrix{1 & -3 & 3 \\ 3 & -5 & 3\\ 6 & -6 & 4}\quad\text{en}\quad \matrix{-1 & 1 & -1 \\ -7 & 5 & -1\\ 6 & -6 & -2}\] Deze twee matrices hebben dezelfde karakteristieke veelterm \((t+2)^2(t - 4)\), maar \(A\) is diagonaliseerbaar, terwijl \(B\) dat niet is. Dit komt omdat de eigenruimte bij eigenwaarde \(-2\) in het geval van matrix \(A\) twee eigenvectoren heeft die geen veelvoud van elkaar zijn, terwijl dat in het geval van matrix \(B\) niet zo is.
>> A = [1 -3 3; 3 -5 3; 6 -6 4]
A =
1 -3 3
3 -5 3
6 -6 4
>> B = [-3 1 -1; -7 5 -1; -6 6 -2]
B =
-3 1 -1
-7 5 -1
-6 6 -2
>> syms t; symA = sym(A); symB = sym(B);
>> charpoly(symA,t) % karakteristieke veelterm van A in t
ans =
t^3 - 12*t - 16
>> factor(ans) % ontbinding in factoren
ans =
[ t - 4, t + 2, t + 2]
>> [V,D] = eig(symA) % eigenvectoren en eigenwaarden van A
V =
[ 1/2, 1, -1]
[ 1/2, 1, 0]
[ 1, 0, 1]
D =
[ 4, 0, 0]
[ 0, -2, 0]
[ 0, 0, -2]
>> % kolomvectoren van V zijn eigenvectoren
>> % diagonaalelementen van D zijn eigenwaarden
>> symA*V - V*D % check
ans =
[ 0, 0, 0]
[ 0, 0, 0]
[ 0, 0, 0]
>> factor(charpoly(symB, t)) % factoren van karakteristieke veelterm van B in t
ans =
[ t - 4, t + 2, t + 2]
>> [V,D] = eig(symB) % eigenvectoren en eigenwaarden van B
V =
[ 0, 1]
[ 1, 1]
[ 1, 0]
D =
[ 4, 0, 0]
[ 0, -2, 0]
[ 0, 0, -2]
>> symB*V - V*(D(1:2,1:2))
ans =
[ 0, 0]
[ 0, 0]
[ 0, 0]
Numerical computations are more efficient, but the output differs (in a non-essential sense).
>> [V,D] = eig(A) % eigenvectoren en eigenwaarden van A
V =
-0.4082 -0.8103 0.1933
-0.4082 -0.3185 -0.5904
-0.8165 0.4918 -0.7836
D =
4.0000 0 0
0 -2.0000 0
0 0 -2.0000
>> A*V-V*D
ans =
1.0e-14 *
-0.0888 0.1554 0.0333
-0.0444 0.1110 0.0444
-0.0888 0.0999 0.0444
>> [V,D] = eig(B) % eigenvectoren en eigenwaarden van B
V =
0.0000 -0.7071 0.7071
-0.7071 -0.7071 0.7071
-0.7071 0.0000 0.0000
D =
4.0000 0 0
0 -2.0000 0
0 0 -2.0000
>> B*V-V*D
ans =
1.0e-14 *
-0.0685 -0.1776 0.1332
0.0888 -0.0444 -0.0222
0.0444 -0.0540 -0.0792
Merk op dat je in dit geval zelf moet bedenken dat de laatste twee kolomvectoren van \(V\) een veelvoud van elkaar zijn en dat de eigenruimte van \(B\) bij eigenwaarde \(-2\) door één eigenvector opgespannen wordt.