1

我正在使用 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
4

0 回答 0