最速下降法法求解线性方程组

%最速下降法法求解线性方程组
%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的最小特征值小很多的话,收敛会很慢,这个时侯不推荐用本方法

你可能感兴趣的:(matlab)