PCG
線形方程式系を解くためにMATLAB のサブルーチンを使用しています。しかし、私はそれを正確に解決したくありません。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