作者w0005151 (小科)
看板MATLAB
标题[问题]关於矩阵计算精确度
时间Fri Oct 18 02:12:18 2013
最近遇到一种问题是这样
A,B,C是三个矩阵
A*(B+C)=A*B+A*C
这在数学上是成立的
但在matlab里面有时却会遇到两种计算方法得到不同的结果
而且误差大到不能忽略
将运算的矩阵乘上适当的factor做scaling之後有时可以解决问题
但这样就变得很麻烦
因为在计算物理问题时对某个量做这种scaling代表其他参数也要跟着修正
而这可能又会衍生出新的误差
而且在一个庞大的程式之中如果出现这种错误真的是很难抓出来
两种算法也不一定哪个一定是对的哪个一定是错的
简单的例子之中我们或许可以用手算或物理直觉来知道哪一种算法是正确的
但问题变得复杂之後就会变得很麻烦 没办法知道哪时该用哪一种写法
例如我现在碰到一个问题是解这种eigenvalue problem
[V,D]=eig(A*(B+C)-D)
这在数学上等价於 [V,D]=eig(A*B+A*C-D)
但这两种写法算出来的eigenvalue却可以差到数十倍以上
导致我现在十分困扰
这除了慢慢try之外有什麽办法可以解决吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.34.32.221
1F:→ infernodimon:把digits调多一点试试看呢? 10/19 00:07
2F:推 alamabarry:矩阵的数字因次最大最小差多少 10/19 17:27
3F:→ w0005151:差三个因次而已 应该不算多吧 10/19 22:51
4F:推 alamabarry:这样很少~~应该不至於差异太大 10/20 00:36