共轭梯度法求解线性方程组-matlab通用程序

数值分析课程的大作业,教材《数值分析》李乃成.梅立泉

function x=Gongetidu2(A,b,x0,epsa)
n=size(A,1);
x=x0;
r=b-A*x;
d=r;
for k=0:(n-1)
    alpha=(r'*r)/(d'*A*d);
    x=x+alpha*d;
    r2=b-A*x; 
    if ((norm(r2)<=epsa)|(k==n-1))
       x;
       break;
    end
    beta=norm(r2)^2/norm(r)^2;
    d=r2+beta*d;
    r=r2;
end

你可能感兴趣的:(算法,matlab,function)