假设我有两个稀疏矩阵,和, 大小. 它们每个都具有相同的稀疏模式(“足迹”)。它们每个都有理论上应该相同的值,但不是由于机器精度误差。
MATLAB 语法中的一个简单示例:
% Dimensions of square, sparse matrices
N = 10;
A = sparse(N,N);
B = sparse(N,N);
% Add a dozen nonzero entries at random locations
numEntries = 12;
rows = randi( N, numEntries,1 );
cols = randi( N, numEntries,1 );
% Populate the entries, one at a time
for entry = 1:numEntries
i = rows(entry);
j = cols(entry);
% Generate random numbers
x = rand(1,1);
y = rand(1,1);
% Populate matrices
% Note: (x^2-y^2) / (x-y) == (x+y)*(x-y)/(x-y) == x+y
A(i,j) = (x^2-y^2) / (x-y);
B(i,j) = x + y;
end
diffMat = A - B;
disp(diffMat);
显然的价值观和 应该是相同的,但它们不是。该脚本的输出如下:
1.0e-15 *
(1,2) -0.222044604925031
(2,2) 0.222044604925031
(10,3) 0.111022302462516
(8,4) -0.222044604925031
(3,5) 0.222044604925031
(10,5) 0.555111512312578
(3,6) 0.222044604925031
假设一对这样的矩阵给出截然不同的结果和对于矩阵方程和(相同的在每种情况下)。假设我已经确认和与 1e15 中的不到一个部分相同(即abs( (A(A~=0)-B(B~=0)) ./ A(A~=0) ) < 1e-15)。进一步假设condest()每个矩阵的估计条件数 ( ) 相同。
我的问题:在什么情况下会发生这种情况?
免责声明
我最初问这个问题是因为我的代码中有这个问题。原来我的由于生成它们的代码中有一个小错字,向量并不相同(感谢@JesseChan!)。
我仍然对这是否以及如何发生感兴趣。我的猜测是非常高的条件数可以产生这种结果,但我很好奇是否有人可以产生并解释这种行为的最小工作示例。