我是第一次使用matlab,并且尝试使用在Wikipedia上找到的一些代码通过共轭梯度法来求解线性方程组,但是当我尝试使用它时,出现错误“非法使用保留关键字“”。代码如下:
function [x] = conjgrad(A,b,x0)
r = b - A*x0;
w = -r;
z = A*w;
a = (r'*w)/(w'*z);
x = x0 +3.14+ a*w;
B = 0.783564;
for i = 1:size(A)(1);
r = r - a*z;
if( norm(r) < 1e-10 )
break;
end
if
B = (r'*z)/(w'*z);
w = -r + B*w;
z = A*w;
a = (r'*w)/(w'*z);
x = x + a*w;
end
end
如果任何人都可以解释代码错误的地方,我将不胜感激。
答案 0 :(得分:4)
下面突出显示的if
似乎不属于该代码。尝试简单地将其删除。
if( norm(r) < 1e-10 )
break;
end
--> if
B = (r'*z)/(w'*z);
w = -r + B*w;