%最速下降法法求解线性方程组
%Steepst Descent Method
%本函数只能求解当A为n*n的矩阵
%2010-10-23
function x=SDM(A,b)
tic
t=size(A);
n=t(2);
x=ones(n,1);
r=b-A*x;
fid=fopen('FFast-Output.txt','w');%用文件保存每次迭代结果
y=1;%y代表迭代深度
while norm(r)>1e-10
alpha=r'*r/(r'*A*r);
x=x+alpha*r;
r=b-A*x;
fprintf(fid,'%d\t',y);
for z=1:n %将数据写入文件
fprintf(fid,'%2.8f\t',x(z));
end
fprintf(fid,'alpha=%f',alpha);
fprintf(fid,'\r\n');%输出完一次结果,换行
y=y+1;
end
fclose(fid);
toc;
end
%如果A的最大特征值比A的最小特征值小很多的话,收敛会很慢,这个时侯不推荐用本方法
%Steepst Descent Method
%本函数只能求解当A为n*n的矩阵
%2010-10-23
function x=SDM(A,b)
tic
t=size(A);
n=t(2);
x=ones(n,1);
r=b-A*x;
fid=fopen('FFast-Output.txt','w');%用文件保存每次迭代结果
y=1;%y代表迭代深度
while norm(r)>1e-10
alpha=r'*r/(r'*A*r);
x=x+alpha*r;
r=b-A*x;
fprintf(fid,'%d\t',y);
for z=1:n %将数据写入文件
fprintf(fid,'%2.8f\t',x(z));
end
fprintf(fid,'alpha=%f',alpha);
fprintf(fid,'\r\n');%输出完一次结果,换行
y=y+1;
end
fclose(fid);
toc;
end
%如果A的最大特征值比A的最小特征值小很多的话,收敛会很慢,这个时侯不推荐用本方法