sunny819 发表于 2006-3-28 15:24

请问 高斯-赛德尔迭代 实例如何编程???

刚接触matlab ,遇到“高斯-赛德尔迭代编程”,头大了!请高手指点!<BR>

happy 发表于 2006-3-28 15:29

回复:(sunny819)请问 高斯-赛德尔迭代 实例如何编...

<P>function x=gaussdiedai(A,b,n)</P>
<P>%用高斯-赛德尔迭代解线性方程组</P>
<P>Len=length(A);</P>
<P>%求A的维数</P>
<P>U=-triu(A,1);B=A+U;</P>
<P>if (norm(B)==0)</P>
<P>x='Error!';</P>
<P>%若B不可逆,给出错误信息,程序中止</P>
<P>else</P>
<P>   B2=inv(B)*U;f2=inv(B)*b;</P>
<P>    rou=max(abs(eig(B2)))</P>
<P>    %否则计算B2谱半径</P>
<P>    if (rou&gt;=1)</P>
<P>      x='Not convergent!'; </P>
<P>%谱半径&gt;=1,不收敛,中止程序</P>
<P>    else</P>
<P>      %否则进行n次高斯-赛德尔迭代,输出结果</P>
<P>      x=ones(Len,1);</P>
<P>      for i=1:n</P>
<P>            x=B2*x+f2;</P>
<P>      end</P>
<P>    end</P>
<P>end</P>

supernew 发表于 2009-5-26 14:08

还有有没有其他的?
页: [1]
查看完整版本: 请问 高斯-赛德尔迭代 实例如何编程???