高维矩阵求特征根的精度问题

如何求解矩阵的平方根?

矩阵分解后,将对角矩阵中对角元素进行平方,再复原

# 求负数的平方根: sqrt(as.complex(c(4,9,-4,-9,16)))# 2+0i 3+0i 0+2i 0+3i 4+0i 

下面可证明matlab,R,python中计算高维协方差矩阵的特征根时,会因为计算精度导致特征根出现负值这一错误计算结果

例如:

rm(list=ls())

N=500;L=1000;Q=L/N #Q>1

aw <- matrix(round(rnorm(5000,0,0.35)),N,L)+matrix(round(rnorm(5000,0,1.355))*1.34,N,L);

# hist(aw)

round(aw[1:5,1:15],2)

aw <- t(apply(aw,1,scale))

cr.1 <- (aw)%*%t(aw)/(L-1)

round(cr.1[1:5,1:5],2)

# hist(cr.1)

# a.seig=eigen(cr.1);

# round(a.seig$values,4)

# a.seig$values[496:500]

# # rm(cr.1)#相关系数矩阵的特征值和特征向量

# which(a.seig$values<0)

看到没有,有很多近似与0的负特征根

如果使用python模拟的话,甚至还可能会出现复数特征根这一现象

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • UPD720114GA-9EU-A小知识 UPD720114GA-9EU-A是一款USB 2.0集线器设备,...
    剩下的盛夏0320阅读 203评论 0 0
  • 1.栈是一种线性结构(常见有:线性表,栈,队列等),具有先进后出的特征,也就是后进先出。 2.Java单继承,多实...
    Jennyni1122阅读 1,375评论 1 0
  • 中秋节后的第一天,一场秋雨悄然而至,寒意顿生。上完第二节课后,当我坐在办公桌前打开学生的手抄报时,不禁被孩...
    映山红_阅读 327评论 0 2
  • 维生素是人体极为重要的营养元素,分为脂溶性维生素和水溶性维生素。脂溶性维生素会在体内储存,供身体稍后使用。脂肪摄入...
    微笑的小月亮阅读 685评论 0 51
  • Haggen_Sun阅读 209评论 0 0