Werken met R bij wiskunde: Lineaire algebra in R
Eigenwaarden en eigenvectoren
Eigenwaarden en eigenvectoren kun je in R berekenen met de functie eigen
. 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 <- matrix(c(1, -3, 3, 3, -5, 3, 6, -6, 4), nrow=3, byrow=TRUE); A [,1] [,2] [,3] [1,] 1 -3 3 [2,] 3 -5 3 [3,] 6 -6 4 > B <- matrix(c(-3, 1, -1, -7, 5, -1, -6, 6, -2), nrow=3, byrow=TRUE); B [,1] [,2] [,3] [1,] -3 1 -1 [2,] -7 5 -1 [3,] -6 6 -2 > evA <- eigen(A) # eigenwaardenprobleem van A opgelost > evA$values # eigenwaarden van A [1] 4 -2 -2 > evA$vectors # kolomvectoren zijn eigenvectoren van A [,1] [,2] [,3] [1,] -0.4082483 0.2440012 -0.4070223 [2,] -0.4082483 -0.4162191 -0.4070223 [3,] -0.8164966 -0.6602203 0.0000000
> D <- diag(evA$values); V <- evA$vector
> # kolomvectoren van V zijn eigenvectoren > # diagonaalelementen van D zijn eigenwaarden
> round(A %*% V - V %*%D, 3) # controle
[,1] [,2] [,3] [1,] 0 0 0 [2,] 0 0 0 [3,] 0 0 0
> evB <- eigen(B) # eigenwaardenprobleem van B opgelost > evB$values # eigenwaarden van B [1] 4 -2 -2 > evB$vectors # kolomvectoren zijn eigenvectoren van B [,1] [,2] [,3] [1,] 6.567298e-17 7.071068e-01 -7.071068e-01 [2,] -7.071068e-01 7.071068e-01 -7.071068e-01 [3,] -7.071068e-01 2.257218e-08 2.257218e-08 > round(.Last.value, 3) # afronding van getallen voor beter overzicht [,1] [,2] [,3] [1,] 0.000 0.707 -0.707 [2,] -0.707 0.707 -0.707 [3,] -0.707 0.000 0.000
Merk op dat je in dit geval zelf moet bedenken dat de laatste twee kolomvectoren van de resultaatmatrix een veelvoud van elkaar zijn en dat de eigenruimte van \(B\) bij eigenwaarde \(-2\) door één eigenvector opgespannen wordt.