2014-12-26 149 views
-3

我有一个矩阵mydata。我把它的本征如何从矢量创建矩阵

ev <- eigen(mydata) 

       [,1]     [,2]     [,3]     [,4]     [,5]   [,6] 
[1,] -0.44852453+0i 0.11670674-0.43102606i 0.11670674+0.43102606i 0.02678808-0.00239041i 0.02678808+0.00239041i 0.013711630+0i 
[2,] -0.40701659+0i 0.17265390+0.01329737i 0.17265390-0.01329737i 0.32050237+0.31677316i 0.32050237-0.31677316i -0.946287625+0i 
[3,] -0.65381971+0i 0.35662142+0.31807798i 0.35662142-0.31807798i -0.83423480+0.00000000i -0.83423480+0.00000000i -0.265152784+0i 
[4,] -0.37545331+0i -0.72987261+0.00000000i -0.72987261+0.00000000i -0.00637960-0.10181135i -0.00637960+0.10181135i 0.004667737+0i 
[5,] -0.05763717+0i 0.02473111+0.01282302i 0.02473111-0.01282302i -0.00818839+0.03180396i -0.00818839-0.03180396i 0.122647730+0i 
[6,] -0.24778175+0i 

万一结果没有排序,我得到对应的最大特征值从而最大特征向量:

k <- which(abs(ev$values)==max(abs(ev$values))) 
G<-ev$vectors[,k] 

[1] -0.44852453+0i -0.40701659+0i -0.65381971+0i -0.37545331+0i -0.05763717+0i -0.24778175+0i 

调用这个最大特征向量

G = [克,克 ...克 ñ ] Ť

因此,在这种情况下,G = [-0.44852453 + 0I -0.40701659 + 0I -0.65381971 + 0I -0.37545331 + 0I -0.05763717 + 0I -0.24778175 + 0I,其中n = 6

我的问题是,我想从这个特征向量构建一个比率矩阵,以便B = {bij = gi/gj}。 R中有这样的函数吗?如果不是什么是最简洁的方式来获得没有循环的矩阵? {抱歉,我不知道如何在这个界面中显示数学符号。应该看,矩阵B =条目b(子ij)= g(子i)/ g(子j),g是G的成员}

回答

2

我认为这与特征值无关,想要从矢量创建矩阵B,其中 = G[i]/G[j]用于矢量G

这可以通过outer函数实现,该函数生成外部产品,但可以指定函数。

G <- 1:4 
outer(G, G, FUN='/') 
##  [,1] [,2]  [,3] [,4] 
## [1,] 1 0.5 0.3333333 0.25 
## [2,] 2 1.0 0.6666667 0.50 
## [3,] 3 1.5 1.0000000 0.75 
## [4,] 4 2.0 1.3333333 1.00 
+0

对不起,这是不正确的。例如,矩阵是6x6。对角线条目清楚地全部为1. [1,2] = -0.44852453/-0.40701659 = 1.101980954。 [2,1] = -0.40701659/-0.44852453 = 0.9074567 [5,4] = -0.05763717/-0.37545331 = 0.153513549等等。 – Ivan

+1

这个结果并没有使用你的输入向量,所以当然这些值是不正确的!试着将'outer'应用到你的实际向量上。 –

+0

对不起,duuh!谢谢。 – Ivan