我正在运行一个需要计算矩阵逆的优化算法。该算法的目标是从矩阵 A 中消除负值并获得新的矩阵 B。基本上,我从相同大小的已知方阵 B 和 C 开始。
我首先计算矩阵 A,它等于:
A = B^-1 * C
或者在 Matlab 中:
A = B\C;
我使用这个是因为 Matlab 告诉我B\C
比inv(B)*C
.
然后将 A 中的负值除以 2,然后对 A 进行归一化,使其行长度为 1。使用这个新 A,我计算一个新 B:
(1/N) * A * C' = B^-1
其中 N 只是一个比例因子(A 中的列数)。然后,这个新的 B 将在第一步中再次使用,这些迭代将继续进行,直到 A 中的负数消失。
我的问题是我必须从第二个等式计算 B 然后对其进行归一化。
invB = (1/N)*A*C'; B = inv(invB);
我一直在使用 B 计算,inv(B^-1)
但经过几次迭代后,我开始收到B^-1
“接近奇异或缩放不良”的消息。
该算法实际上适用于较小的矩阵(大约 70x70),但是当它达到大约 500x500 时,我开始收到这些消息。
有没有更好的计算方法inv(B^-1)
?