%共轭斜向法求解线性方程组
%Conjugate Gradient Method
%本函数只能求解当A为n*n的矩阵
%2010-10-23
function x=CJM(A,b)
tic;
t=size(A);%获取A的行列
n=t(1);
x=ones(n,1);
r=b-A*x;
p=r;
fid=fopen('Fconj-Output.txt','w');%用文件保存每次迭代结果
y=1;%y代表迭代深度
while norm(r)>1e-10
alpha=p'*r/(p'*A*p);
x=x+alpha*p;
r=r-alpha*A*p;
beta=-(p'*A*r)/(p'*A*p);
p=r+beta*p;
fprintf(fid,'%d\t',y);
for z=1:n %将数据写入文件
fprintf(fid,'%2.8f\t',x(z));
end
fprintf(fid,'alpha=%f\tbeta=%f',alpha,beta);
fprintf(fid,'\r\n');%输出完一次结果,换行
y=y+1;
end
fclose(fid);
%Conjugate Gradient Method
%本函数只能求解当A为n*n的矩阵
%2010-10-23
function x=CJM(A,b)
tic;
t=size(A);%获取A的行列
n=t(1);
x=ones(n,1);
r=b-A*x;
p=r;
fid=fopen('Fconj-Output.txt','w');%用文件保存每次迭代结果
y=1;%y代表迭代深度
while norm(r)>1e-10
alpha=p'*r/(p'*A*p);
x=x+alpha*p;
r=r-alpha*A*p;
beta=-(p'*A*r)/(p'*A*p);
p=r+beta*p;
fprintf(fid,'%d\t',y);
for z=1:n %将数据写入文件
fprintf(fid,'%2.8f\t',x(z));
end
fprintf(fid,'alpha=%f\tbeta=%f',alpha,beta);
fprintf(fid,'\r\n');%输出完一次结果,换行
y=y+1;
end
fclose(fid);