我正在尝试在没有预处理的MATLAB中实现PCG。AX = B,其中A为100 x 100 2D Laplacian矩阵,B均为1s。
n=10;
e = ones(n,1);
spe = spdiags([e -2*e e], -1:1,n,n);
Iz = speye(n);
A = kron(Iz,spe)+kron(spe,Iz);
b = ones(size(A,1),1);
[x0,fl0,rr0,it0,rv0] = pcg(A,b,1e-8,100);
但是,事实证明迭代无法启动,标志
fl0 = 4
这意味着
PCG期间计算出的标量数量之一变得太小或 太大而无法继续计算。
刚刚发现,要使用PCG,必须确定为正。因此,使用-a而不是A应该可以。