用MATLAB pcg解决不了解问题

时间:2013-10-03 23:37:22

标签: matlab

我正在使用MATLAB的PCG子程序来求解线性方程组。但是,我不希望它完全解决。我希望它只运行20次迭代,如果它不收敛,我希望它在第20次迭代时返回值。 然而,MATLAB(我的版本是最新版本)正在做的是返回零向量,如果它没有通过20次迭代找到可接受的解决方案。有没有办法在不更改pcg.m的源代码的情况下覆盖它?

我有一个我写的代码(我刚刚从维基百科中复制过)但很明显,它与MATLAB版本的强大程度无关。

function [x] = conjgrad(A,b,x)
r=b-A*x;
p=r;
rsold=r'*r;

for i=1:20
    Ap=A*p;
    alpha=rsold/(p'*Ap);
    x=x+alpha*p;
    r=r-alpha*Ap;
    rsnew=r'*r;
    if sqrt(rsnew)<1e-10
          break;
    end
    p=r+rsnew/rsold*p;
    rsold=rsnew;
end

0 个答案:

没有答案