预条件共轭梯度(PCG)无法在MATLAB中启动

时间:2016-11-26 20:03:51

标签: matlab iteration

我正在尝试在MATLAB中实现一个没有预处理器的PCG。 Ax = b,其中A是100乘100的2D拉普拉斯矩阵,b都是1。

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期间计算的标量之一变得太小或太小   太大而无法继续计算。

1 个答案:

答案 0 :(得分:0)

刚刚发现,为了使用PCG,A必须是肯定的。所以使用-A代替A应该没问题。