svd 分解后计算结果出错

这里使用的库是 LinearAlgebra ,对 144*144 的矩阵 temp 进行 svd 分解,重新乘起来的结果为 a, 对 temp 的逆进行 svd 分解,重新乘起来的结果为 b。a 和 temp 近似相等,b 和 inv(temp) 近似相等,tempinv(temp) 为单位矩阵,但是 ab的结果不但不等于单位矩阵,还相差很远,如图的 norm 所示,这是
e30e80ce9ff0cebf6958fa6e6a4fe45

这是什么问题呢?是矩阵乘法出了什么问题嘛?

甚至只是替换一点,计算的结果都不同
12c9bac30ce01d3edc86f0c9fa3cce9

可能你的矩阵 temp 比较病态,推荐阅读
https://zh.wikipedia.org/wiki/条件数

2 个赞

非常感谢您的回复!
确实 temp 会比较病态,但是既然 a 和 temp 近似相等,b 和 temp 的逆近似相等,temp * inv(temp) 都没问题,那为啥 a 和 b 矩阵乘法的结果会很奇怪呢?
再次感谢!

temp * inv(temp) 已经很奇怪了,如果正常矩阵得到的norm应当是12.0