function [k,x]=Conjugate_gradient(A,b,x0,esp)
% x0为给定初值向量
% esp为终止误差
% 输出参数
% k为迭代次数
% x为线性方程组的解矩阵
%% 共轭梯度法主程序
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;
r1=b-A*x;
if (norm(r1)<=esp | (k==n-1))
x;
break;
end
beta=norm(r1)^2/norm(r)^2;
d=r+beta*d;
end
%% 参数说明% 采用共轭梯度算法求解线性方程组
% 输入参数% A为线性方程组系数矩阵
% b为线性方程组值矩阵
% x0为给定初值向量
% esp为终止误差
% 输出参数
% k为迭代次数
% x为线性方程组的解矩阵
%% 共轭梯度法主程序
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;
r1=b-A*x;
if (norm(r1)<=esp | (k==n-1))
x;
break;
end
beta=norm(r1)^2/norm(r)^2;
d=r+beta*d;
end系数矩阵
% b为线性方程组值矩阵% x0为给定初值向量
% esp为终止误差
% 输出参数
% k为迭代次数
% x为线性方程组的解矩阵
%% 共轭梯度法主程序
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;
r1=b-A*x;
if (norm(r1)<=esp | (k==n-1))
x;
break;
end
beta=norm(r1)^2/norm(r)^2;
d=r+beta*d;
end