楼主: bebece
2426 1

[求助]R中特征向量的精度问题 [推广有奖]

  • 0关注
  • 0粉丝

本科生

32%

还不是VIP/贵宾

-

威望
0
论坛币
1166 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1236 点
帖子
66
精华
0
在线时间
92 小时
注册时间
2006-1-30
最后登录
2022-12-20

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
对数学不是很精通,所以问个低级的关于特征向量的问题。运行附在最后面的程序,得到的结果如附在最后面的结果所示。
实际上,smf应该是矩阵
1  0  0
0  1  0
0  0  1
由于误差出现了
> smf
              [,1]         [,2]          [,3]
[1,]  1.000000e+00 3.330669e-16  5.551115e-17
[2,] -7.401487e-17 1.000000e+00 -4.996004e-16
[3,]  1.060880e-15 1.554312e-15  1.000000e+00

再求它的特征值与特征向量,与矩阵
1  0  0
0  1  0
0  0  1
相比,特征值是一致的,但特征向量的区别很大,两个特征向量分别如下所示,so想问问这种区别是正常的么?特征向量能不能用呢?
     [,1] [,2] [,3]
[1,]    0    0    1
[2,]    0    1    0
[3,]    1    0    0
$vectors
          [,1]       [,2]       [,3]
[1,] 0.2592065  0.8079332 -0.5292031
[2,] 0.7595129 -0.5089880 -0.4050573
[3,] 0.5966173  0.2969431  0.7455687


程序:
f<-array(c(2,3,5,1,3,5,5,3,2),dim=c(3,3))
smf<-f%*%solve(f)
smf
eigen(smf)
eigen(array(c(1,0,0,0,1,0,0,0,1),dim=c(3,3)))

结果:
> f<-array(c(2,3,5,1,3,5,5,3,2),dim=c(3,3))
> smf<-f%*%solve(f)
> smf

              [,1]         [,2]          [,3]
[1,]  1.000000e+00 3.330669e-16  5.551115e-17
[2,] -7.401487e-17 1.000000e+00 -4.996004e-16
[3,]  1.060880e-15 1.554312e-15  1.000000e+00
> eigen(smf)
$values
[1] 1 1 1
$vectors
          [,1]       [,2]       [,3]
[1,] 0.2592065  0.8079332 -0.5292031
[2,] 0.7595129 -0.5089880 -0.4050573
[3,] 0.5966173  0.2969431  0.7455687
> eigen(array(c(1,0,0,0,1,0,0,0,1),dim=c(3,3)))
$values
[1] 1 1 1
$vectors
     [,1] [,2] [,3]
[1,]    0    0    1
[2,]    0    1    0
[3,]    1    0    0
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:特征向量 vectors Vector values value 求助 特征向量 精度

回帖推荐

epoh 发表于2楼  查看完整内容

答案是对的. 在matlab也会有所不同 a=[2 1 5 3 3 3 5 5 2] %f b=inv(a) %solve(f) c=a*b %f%*%solve(f) [vn,dn]=eig(c,'nobalance') vn = -0.7879 -0.3581 0.8752 0.3176 0.4202 -1.0000 1.0000 1.0000 0.9878 dn = 1.0000 0 0 0 1.0000 0 0 0 1.000 ...

本帖被以下文库推荐

沙发
epoh 发表于 2010-2-12 13:23:05 |只看作者 |坛友微信交流群
答案是对的.
在matlab也会有所不同
a=[2    1    5
      3    3    3
      5    5    2]    %f
b=inv(a)           %solve(f)
c=a*b               %f%*%solve(f)
[vn,dn]=eig(c,'nobalance')

vn =

   -0.7879   -0.3581    0.8752
    0.3176    0.4202   -1.0000
    1.0000    1.0000    0.9878


dn =

    1.0000         0         0
         0    1.0000         0
         0         0    1.0000

c*vn - vn*dn

ans =

  1.0e-015 *

    0.2220    0.0555   -0.4441
    0.4441    0.3331   -0.2220
   -0.1110   -0.1110         0
已有 1 人评分论坛币 收起 理由
crystal8832 + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-29 01:26