Matlab 互补投影计算中的数值问题
我正在使用matlab计算以下问题: A、 B是两个m×n正交矩阵,A'*A=I和B'*B=I,其中I是单位矩阵。m比n大很多。我在计算C=2B*B'-I*A,这也是一个正交矩阵 但在matlab中,数字的精度会导致以下问题:Matlab 互补投影计算中的数值问题,matlab,Matlab,我正在使用matlab计算以下问题: A、 B是两个m×n正交矩阵,A'*A=I和B'*B=I,其中I是单位矩阵。m比n大很多。我在计算C=2B*B'-I*A,这也是一个正交矩阵 但在matlab中,数字的精度会导致以下问题: max(max(abs(A'*A-I))) = e0 > 0 max(max(abs(B'*B-I))) = e0 > 0 并且计算出的C具有maxabsc'*C-I=e1>e0 如果我通过计算D=2C*C'-I*B来重复上述过程,那么D的误差界就会上升,随
max(max(abs(A'*A-I))) = e0 > 0
max(max(abs(B'*B-I))) = e0 > 0
并且计算出的C具有maxabsc'*C-I=e1>e0
如果我通过计算D=2C*C'-I*B来重复上述过程,那么D的误差界就会上升,随着这种迭代次数的增加,这种误差会爆炸
有没有一种方法可以在不增加误差范围的情况下进行计算
谢谢 一般来说,执行的计算和转换越多,就越需要担心浮点错误 为了减轻影响,有两种可能性: 我使用像Maple或Mathematica这样的支持精确算法的软件,这将以更大的计算负担为代价消除问题。我的理解是,Matlab不支持精确的算术,但我可能在这方面错了 2使用高于双精度的精度来减少浮点错误。例如,FEX提交文件声称支持任意大的精度格式。不过我自己从来没有用过,所以我不能评论它的效果如何 3根据矩阵中数字的相对大小,可能有一些数字技巧或转换可用于减少浮点错误。这是一个很大的话题,但总的来说,我们的想法是尝试并扩展您的问题,使所有数字在数量级上尽可能接近彼此 可能还有其他一些我不知道的可能性。我当然不是这方面的专家。我很想看看其他受访者的建议
哦,还有一件事,我刚刚偶然发现了一个非常重要的问题。谢谢你分享你的想法。这很有帮助!