本文主要是介绍高斯-赛德尔迭代法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
高斯-赛德尔迭代法的代码实现
function x=agui_GS(a,b)
n=length(b);
N=100;
e=10^(-4);
x0=zeros(n,1);
x=x0;
x0=x+2*e;
k=0;
a1=tril(a);
a2=inv(a1);
while norm(x0-x,inf)>e&k<Nk=k+1;x0=x;x=-a2*(a-a1)*x0+a2*b;format longkdisp(x')
end
if k==N warning('已达最大迭代次数');end
如求以下方程
输入代码
a=[5 2 1;-1 4 2;2 -3 10]
b=[-12;20;3]
x=agui_GS(a,b)
得到如下结果
a =5 2 1-1 4 22 -3 10b =-12203
k =1-2.40000000000000 4.40000000000000 2.10000000000000k =2-4.58000000000000 2.80500000000000 2.05750000000000k =3-3.93350000000000 2.98787500000000 1.98306250000000k =4-3.99176250000000 3.01052812500000 2.00151093750000k =5-4.00451343750000 2.99811617187500 2.00033753906250k =6-3.99931397656250 3.00000273632813 1.99986361621094k =7-3.99997381777344 3.00007473745117 2.00001718479004k =8-4.00003333193848 2.99998307462036 2.00000158877380x =-4.000033331938482.999983074620362.00000158877380
这篇关于高斯-赛德尔迭代法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!