我有两个矩阵J1(稀疏)= J2(完整)。
矩阵的维数为~5200x2600
然后当我这样做时:
hlm1 = (J1'*J1 + u*I)\g, I = eye(n);
和
hlm2 = (J2'*J2 + u*I)\g, I = eye(n);
我之后:norm(hlm1 - hlm12, Inf)
是4.8625e-05
...
这个区别是我的问题,使用matrice稀疏的方式是否正确?。
THX。
答案 0 :(得分:1)
这不是一个完整的答案,但我认为它可能有用。我可以使用一些随机数据来部分重现这种差异:
H1=sprand(1000,1000,.4);
g=sprand(1000,1,.5);
x=H1*g;
H2=full(H1);
x2=full(x);
g1=H1\x;
g2=H2\x2;
difference=norm(g1-g2,Inf)
errorSparse=norm(g1-g,Inf)
errorFull=norm(g2-g,Inf)
标准最终大约为O(1e-12)。我认为差异是由于用于求解稀疏方程组的方法。解决稀疏系统将使用稀疏函数,并且求解完整矩阵将使用不同的函数集。当然这些功能会有所不同,我认为这可能会造成一些差异。我无法解释为什么错误很大。
参见the documentation for mldivide
,其中包括一些关于稀疏矩阵的简短讨论以及解决它们的一些方法。