预处理结合梯度(PCG)不能以MATLAB启动



我正在尝试在没有预处理的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应该可以。

最新更新