基于wonderful MATLAB documentation,很明显,在求解线性方程组时,出于数值稳定性的考虑,最好使用X\b
至inv(X)*b
。它还注意到X^(-1)
等效于inv(X)
。但是,它没有提到X\eye(size(X))
和inv(X)
之间的关系!我想使用更简洁的表示法,inv(X)
应该是首选形式,但在文档的任何地方都找不到对此的确认。
文档提到\
使用高斯消除,而inv
使用LU分解。
当我使用类似于that provided in the documenation的示例对它们进行测试时,发现两者并不相同:
n = 500;
Q = orth(randn(n,n));
d = logspace(0,-10,n);
A = Q*diag(d)*Q';
y = inv(A);
z = A\eye(n);
disp(['Difference: ', num2str(norm(inv(A) - A\eye(n)))]);
结果:
Difference: 2.2957e-05
谁能解释这两种方法中哪个在数值上更稳定?