--- format: pdf fontsize: 11pt bibliography: ../MV_Referenzen_Seminar.bib include-in-header: ../MV_Header_Seminar.tex lang: de --- # (3) Eigenanalyse Ziel dieser Sitzung ist es, die Begriffe der Eigenanalyse, Orthonormalzerlegung und Singulärwertzerlegung in **R** anhand der in der Vorlesung diskutierten Beispiele nachzuvollziehen. ## Eigenwerte und Eigenvektoren Wir betrachten das in der Vorlesung betrachtete Beispiel zur Berechnung von Eigenwerten und Eigenvektoren. In **R** erlaubt der Befehl `eigen()` die Eigenanalyse einer quadratischen Matrix. \footnotesize ```{r} # Matrixdefinition A = matrix(c(2,1, 1,2), nrow = 2, byrow = TRUE) # Eigenanalyse EA = eigen(A) # Eigenwerte von A print(EA$values) # Eigenvektoren von A print(EA$vectors) ``` \normalsize Für ein tieferes intuitives Verständnis können die Eigenvektoren einer $2 \times 2$ Matrix mithilfe folgenden **R** Codes visualisiert werden. Die resultierende Abbildungs ist als @fig-eigenvektoren dargestellt. \footnotesize ```{r, eval = F} library(latex2exp) # Abbildungsparameter par( family = "sans", mfcol = c(1,1), pty = "s", bty = "l", lwd = 1, las = 1, mgp = c(2,1,0), xaxs = "i", yaxs = "i", font.main = 1, cex = 0.95, cex.main = 1.2) # Plot-Objekt plot(NULL, xlab = TeX("$x_1$"), ylab = TeX("$x_2$"), xlim = c(-2.6,2.6), ylim = c(-2.6,2.6)) grid() # Pfeildarstellung der Eigenvektoren von A arrows( x0 = c(0,0), y0 = c(0,0), x1 = c(EA$vectors[1,1], EA$vectors[2,1]), y1 = c(EA$vectors[1,2], EA$vectors[2,2]), angle = 20, length = 0.1, lwd = 2, col = c("black", "black"), xpd = TRUE) # Ausgabe der Matrixprodukte Av_1, Av_2 Av_1 = A %*% EA$vectors[,1] Av_2 = A %*% EA$vectors[,2] print(Av_1) print(Av_2) # Pfeildarstellung der Matrixprodukte Av_1, Av_2 arrows( x0 = c(0,0), y0 = c(0,0), x1 = c(Av_1[2,1], Av_2[2,1]), y1 = c(Av_1[1,1], Av_2[1,1]), angle = 20, length = 0.1, lwd = 1, col = c("gray", "gray"), xpd = TRUE) # Annotation text( 1/sqrt(2), 0.9, TeX("$v_1$")) text( 1/sqrt(2), -0.9, TeX("$v_2$")) text( 2/sqrt(2), 2.4, TeX("$Av_1 = \\lambda_1 v_1$")) text(-1/sqrt(2), -0.4, TeX("$Av_2 = \\lambda_2 v_2$")) # PDF-Speicherung dev.copy2pdf( file = "./Abbildungen/eigenvektoren.pdf", width = 4, height = 4) dev.off() ``` \normalsize ![Visualisierung von Eigenvektoren einer $2 \times 2$ Matrix.]("./Abbildungen/eigenvektoren.pdf"){#fig-eigenvektoren fig-align="center" width=90%} ## Orthonormalzerlegung Wie in der Vorlesung diskutiert, können die Ergebnisse der Eigenanalyse der Matrix \begin{equation} A := \begin{pmatrix} 2 & 1 \\ 1 & 2 \end{pmatrix} \end{equation} aufgrund ihrer Symmetrie und bei Wahl von normierten Eigenvektoren für eine Orthonormalzerlegung von $A$ genutzt werden. Diese Einsicht wird in folgendem **R**-Code reproduziert. \footnotesize ```{r} # Eigenanalyse der Beispielmatrix A = matrix(c(2,1, 1,2), nrow = 2, byrow = TRUE) EA = eigen(A) # Überprüfung der Länge der von R ermittelten Eigenvektoren cat( "Länge von v_1:", sqrt(t(EA$vectors[,1]) %*% EA$vectors[,1]), "\nLänge von v_2:", sqrt(t(EA$vectors[,2]) %*% EA$vectors[,2]), "\n") # Definition der Orthonormalzerlegungsmatrizen Q = EA$vectors Lambda = diag(EA$values) # Validierung der Orthonormalzerlegung von A A = Q %*% Lambda %*% t(Q) print(A) ``` \normalsize \newpage ## Singulärwertzerlegung Zuletzt wollen wir den in der Vorlesung hergestellten Zusammenhang zwischen der Singulärwertzerlegung und der Eigenanalyse einer Matrix mithilfe des **R**-Befehls `svd()` an einem Beispiel verdeutlichen. \footnotesize ```{r} # Definition einer 2 x 3 Matrix Y Y = matrix(c(1,2,3, 4,5,6), nrow = 2, byrow = TRUE) print(Y) # Singulärwertzerlegung von Y mithilfe von svd() USV = svd(Y) U = USV$u S = diag(USV$d) V = USV$v # Eigenanalyse von YY^T mithilfe von eigen() EAYYT = eigen(Y %*% t(Y)) print(EAYYT$vectors) print(EAYYT$values) print(U) print(diag(S) ** 2) # Eigenanalyse von Y^TY mithilfe von eigen() und Fokus auf die von Null verschiedenen Eigenwerte EAYTY = eigen(t(Y) %*% Y) print(EAYTY$vectors[,1:2]) print(EAYTY$values[1:2]) print(V) print(diag(S) ** 2) ```