Qbi*_*bik 3 r function eigenvalue eigenvector
版本:我的问题中的问题是我试图S从等式8中找到矩阵,但这个等式有误差.
如何在R中直接获得矩阵的右特征向量?'eigen()'仅给出左特征向量
真的是上一版,我在这里弄得很乱,但这个问题对我来说非常重要:
eigen()从函数帮助中提供一些特征向量矩阵:
"如果'r < - eigen(A)'和'V < - r $ vectors; lam < - r $ values',那么
A = V Lmbd V^(-1)
Run Code Online (Sandbox Code Playgroud)
(最多数字模糊),其中Lmbd =diag(lam)"
也就是说A V = V Lmbd,现在我们检查它是V是矩阵:
set.seed(1)
A<-matrix(rnorm(16),4,4)
Lmbd=diag(eigen(A)$values)
V=eigen(A)$vectors
A%*%V
> A%*%V
[,1] [,2] [,3] [,4]
[1,] 0.0479968+0.5065111i 0.0479968-0.5065111i 0.2000725+0i 0.30290103+0i
[2,] -0.2150354+1.1746298i -0.2150354-1.1746298i -0.4751152+0i -0.76691563+0i
[3,] -0.2536875-0.2877404i -0.2536875+0.2877404i 1.3564475+0i 0.27756026+0i
[4,] 0.9537141-0.0371259i 0.9537141+0.0371259i 0.3245555+0i -0.03050335+0i
> V%*%Lmbd
[,1] [,2] [,3] [,4]
[1,] 0.0479968+0.5065111i 0.0479968-0.5065111i 0.2000725+0i 0.30290103+0i
[2,] -0.2150354+1.1746298i -0.2150354-1.1746298i -0.4751152+0i -0.76691563+0i
[3,] -0.2536875-0.2877404i -0.2536875+0.2877404i 1.3564475+0i 0.27756026+0i
[4,] 0.9537141-0.0371259i 0.9537141+0.0371259i 0.3245555+0i -0.03050335+0i
Run Code Online (Sandbox Code Playgroud)
我想找到合适的特征向量的矩阵R,
方程,它定义了左特征向量的矩阵L是:
Run Code Online (Sandbox Code Playgroud)L A = LambdaM L
定义右特征向量矩阵的方程R是:
Run Code Online (Sandbox Code Playgroud)A R = LambdaM R
和eigen()只提供矩阵V:
Run Code Online (Sandbox Code Playgroud)A V = V Lmbd
我想获得矩阵R和LambdaM真实矩阵A,这可能是负定的.
一个有效的例子.
默认(= 右特征向量):
m <- matrix(1:9,nrow=3)
e <- eigen(m)
e1 <- e$vectors
zapsmall((m %*% e1)/e1) ## right e'vec
## [,1] [,2] [,3]
## [1,] 16.11684 -1.116844 0
## [2,] 16.11684 -1.116844 0
## [3,] 16.11684 -1.116844 0
Run Code Online (Sandbox Code Playgroud)
左特征向量:
eL <- eigen(t(m))
eL1 <- eL$vectors
Run Code Online (Sandbox Code Playgroud)
(我们需要付出更多的努力,因为我们需要乘以左边的行向量;如果我们只提取一个特征向量,R对行/列向量差异的无知会使它"做正确的事"(即(eL1[,1] %*% m)/eL1[,1]
只是工作).)
zapsmall(t(eL1) %*% m/(t(eL1)))
## [,1] [,2] [,3]
## [1,] 16.116844 16.116844 16.116844
## [2,] -1.116844 -1.116844 -1.116844
## [3,] 0.000000 0.000000 0.000000
Run Code Online (Sandbox Code Playgroud)