Re: [问题] 关于反矩阵inv计算爆值是正常的吗?

楼主: alen332l (alen3321)   2016-06-23 09:03:23
※ 引述《ray0215 (❺❺❻❻)》之铭言:
: 小弟我最近需要计算相关系数(correlation coefficient matri)矩阵的反矩阵
: 例如
: Martrix array([[ 1. , 0.92531576, 0.81998247, 0.92586894],
: [ 0.92531576, 1. , 0.70974912, 0.72358554],
: [ 0.81998247, 0.70974912, 1. , 0.72669914],
: [ 0.92586894, 0.72358554, 0.72669914, 1. ]])
: 这样用numpy.linalg.inv算出来的值
: 会计算出
: array([[ 6.51500296e+15, -3.18743561e+15, -7.89299760e+14,
: -3.15207310e+15],
: [ -3.18743561e+15, 1.55943840e+15, 3.86161323e+14,
: 1.54213745e+15],
: [ -7.89299760e+14, 3.86161323e+14, 9.56245323e+13,
: 3.81877116e+14],
: [ -3.15207310e+15, 1.54213745e+15, 3.81877116e+14,
: 1.52502845e+15]])
: 每个都十五次方
: 我想应该不是正确解答吧@@
: 请问要怎么解决
: 先谢谢版上的大大了
你推文说要计算R^(-1)-I 的值
R = correlation matrix
I = idendity matrix
处理矩阵时
有一个原则
能不要反矩阵 就不要算 因为算反矩阵很昂贵 又不稳定
你原本题目应该是:
R ( X + I ) = I ,其中X为你要求的矩阵.
那么,这样处理比较稳定:
R X = (I - R)
└已知┘ └已知┘
X 切成column表达:
X = [x1 │x2 │x3...] ,其中x1为向量,x2,x3...亦同
(I-R)定义成 B 好了
也切成column:
(I-R) =def= B = [b1│b2│b3...]
原问题变成
R ‧ x1 = b1
(nxn) (nx1) (nx1) →维度验算
R ‧ x2 = b2
R ‧ x3 = b3
每个问题用 BLAS 算完后
再把 x1,x2,x3...拼回来
印象中是这样,几年前处理的印象...
p.s.
1.回文如有错请高手指正 已经有一段时间没处理matrix了 谢谢
2.我没实际算...如果算出来是合理值 那就是你原本用inv时会有误差造成
行列式小时,算inv的误差会累积
通常基础线性代数不会讲
数学系的纯数课程也不会讲
作者: yogi (Yogi)   2016-06-23 17:06:00

Links booklink

Contact Us: admin [ a t ] ucptt.com