加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Gauss_Seidel迭代法的Matlab程序

(2006-12-02 16:33:20)
分类: 自己编写的Matlab程序
function [x]=Gauss_Seidel_iterative(A,b)
% 用Gauss_Seidel迭代求解线性方程组,矩阵A是方阵
    x0=zeros(1,length(b)); % 赋初值
    tol=10^(-2); % 给定误差界
    N=1000;  % 给定最大迭代次数
    [n,n]=size(A); % 确定矩阵A的阶
    k=1;
    % 迭代过程
    while k<=N
        x(1)=(b(1)-A(1,2:n)*x0(2:n)')/A(1,1);
        for i=2:n
            x(i)=(b(i)-A(i,1:i-1)*x(1:i-1)'-A(i,i+1:n)*x0(i+1:n)')...
/A(i,i);
        end
        if max(abs(x-x0))<=tol
            fid = fopen('G_S_iter_result.txt', 'wt');
            fprintf(fid,'\n********用Gauss_Seidel迭代求解线性方程组的输出结果********\n\n');
            fprintf(fid,'迭代次数: %d次\n\n',k);
            fprintf(fid,'x的值\n\n');
            fprintf(fid, '%12.8f \n', x);
            break;
        end
        k=k+1;
        x0=x;
    end
    if k==N+1
      fid = fopen('G_S_iter_result.txt', 'wt');
      fprintf(fid,'\n********用Gauss_Seidel迭代求解线性方程组的输出结果********\n\n');
      fprintf(fid,'迭代次数: %d次\n\n',k);
      fprintf(fid,'超过最大迭代次数,求解失败!');
      fclose(fid);
    end

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有