3

版:我的问题是我试图S方程 8中找到矩阵,但这个方程有错误。

如何直接获得 R 中矩阵的右特征向量?'eigen()' 只给出左特征向量

真的是上一版,我在这里搞得一团糟,但这个问题对我来说真的很重要:

eigen()提供了一些特征向量矩阵,来自函数帮助:

" 如果 'r <- eigen(A)' 和 'V <- r$vectors; lam <- r$values',那么

                      A = V Lmbd V^(-1)                         

(直到数值模糊),其中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

我想找到右特征向量矩阵R
定义左特征向量矩阵的方程L是:

L A  = LambdaM L

定义右特征向量矩阵的方程R是:

A R = LambdaM R

并且 eigen() 仅提供矩阵V

A V = V Lmbd

我想获得矩阵R和可能是负定LambdaM的实矩阵。A

4

2 回答 2

9

一个工作的例子。

默认值(=特征向量):

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

左特征向量:

eL <- eigen(t(m))    
eL1 <- eL$vectors

(我们必须付出更多的努力,因为我们需要乘以左边的行向量;如果我们只提取一个特征向量,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
于 2013-02-16T16:44:04.773 回答
4

这应该工作

给定一个矩阵 A。

lefteigen  <-  function(A){
  return(t(eigen(t(A))$vectors))
}

每个左特征向量都是矩阵转置的右特征向量的转置

于 2013-02-16T16:40:19.270 回答