2016-11-26 1 views
0

Я пытаюсь внедрить PCG в MATLAB без предусловителя. Ax = b, в котором A представляет собой матрицу лапласиана 100 на 100 2D, а b - все 1s.Предварительно обусловленный конъюгатный градиент (PCG) не может запускаться в MATLAB

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

Это означает

Один из скалярных величин, вычисленных в ходе ГКП стал слишком мал или слишком большой, чтобы продолжить вычисление.

ответ

0

Только что выяснилось, что для использования PCG A должно быть положительно определенным. Поэтому использовать -A вместо A должно быть хорошо.

 Смежные вопросы

  • Нет связанных вопросов^_^