注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

Jacobi迭代法求解线性方程组  

2010-12-01 16:36:10|  分类: M&M |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
%Jacobi迭代法求解线性方程组
%本函数只能求解当A为n*n的矩阵
%2010-10-23
function x=Jacobi(A,b)
    tic;
    t=size(A);%获取A的行列
    n=t(1);
    D=zeros(n,n);
    L=zeros(n,n);
    U=zeros(n,n);%初始化三个矩阵
    x1=zeros(n,1);
    x2=zeros(n,1);%初始结果矩阵
   
    %获取三个矩阵D,L,U
    for i=1:n
        for j=1:n
            if i>j
                L(i,j)=A(i,j);
            elseif i<j
                U(i,j)=A(i,j);
            else
                D(i,j)=A(i,j);
            end
        end
    end
   
    G=-inv(D)*(L+U);%计算迭代矩阵
   
    %计算迭代矩阵的谱半径,即绝对值最大的特征值
    rho=max(abs(eig(G)));
    %rho就是G的谱半径
    if rho>1 %谱半径大于1,迭代不收敛……
        error('MATLAB:Jacobi:the Iteration Matrix may not be Astringent.See Jacobi.');
    end
   
    fid=fopen('Jacobi-Output.txt','w');%用文件保存每次迭代结果
    y=1;%y代表迭代深度
   
    while 1 %matlab中没有do-while循环,可用break跳出
        for i=1:n
            temp=0;
            for j=1:n
                if j==i
                    continue;
                end
                temp=temp+A(i,j)*x1(j);
            end
            x2(i)=(b(i)-temp)/A(i,i);
        end
       
        fprintf(fid,'%d\t',y);
        for z=1:n          %将数据写入文件
            fprintf(fid,'%2.8f\t',x2(z));
        end
        fprintf(fid,'\r\n');%输出完一次结果,换行   
        if norm(x2-x1)<1e-10 %eps是matlab中的最小精度
            break;%迭代结束
        end
        x1=x2; %继续下一轮迭代
        y=y+1;
    end
    x=x2;%返回计算结果
    fclose(fid);%关闭文件
    toc;%显示计算消耗时间
end
  评论这张
 
阅读(1488)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016