MATLAB高斯迭代算法,matlab实现高斯赛德尔迭代法解方程组

已知方程组
Ax=b
MATLAB高斯迭代算法,matlab实现高斯赛德尔迭代法解方程组
文章图片

使用高斯赛德尔迭代法
要求精度达到0.0001
迭代初始向量[0 0 0 0 0 0 0 0 0]
最大限制迭代50次
---------------------------------------------------------分--割--线---------------------------------------------------------
function[x]=GS(A,b,xi,eps,N)
%x为方程组的解A为系数矩阵b为常数项x0为迭代初值eps为误差N是限定的迭代次数
%首先要将A分解为上下三角矩阵
L=triu(A)-A;
U=tril(A)-A;
D=A+L+U;
Bs=inv((D-L))*U;
fs=inv((D-L))*b;
%得到迭代格式Bs为迭代阵fs为常向量
i=0; con=0;
%其中con是用来记录计算结果是否收敛
while i
i=i+1;
x=Bs*xi+fs;
for
j=1:length(b)
il(i,j)=x(j);
end
if
norm(x-xi)
con=1;
break
end
xi=x;
end
%以下是将迭代过程写入txt文档文件名为iteration.txt
fid=fopen('iteration.txt','w');
fprintf(fid,'iteration');
for j=1:length(b)
fprintf(fid,' x%d',j);
end
for j=1:i
fprintf(fid,'\n%6d ',j);
for
k=1:length(b)
fprintf(fid,'
%10.6f',il(j,k));
end
end
if con==1
fprintf(fid,'\n计算结果收敛!');
end
if con==0
fprintf(fid,'\n迭代步数过多可能不收敛!');
end
fclose(fid);
x=xi
---------------------------------------------------------分--割--线---------------------------------------------------------
运行结果:
x =
2.9999
2.0000
1.0000
2.9999
2.0000
1.0000
3.0001
1.9999
0.9997
---------------------------------------------------------分--割--线---------------------------------------------------------
在iteration.txt可看到迭代过程
iteration x1 x2 x3 x4 x5 x6 x7 x8 x9
1 2.000000 3.090909 1.977273 3.625000 1.681818 0.767045 3.375000 1.772727 -1.750000
2 5.017045 1.253099 0.084452 2.798295 2.052169 1.087810 3.596333 1.533152 -1.700695
......
32 2.999845 2.000006 1.000027 2.999932 2.000028 1.000027 3.000146 1.999896 0.999577
33 2.999884 2.000005 1.000020 2.999949 2.000021 1.000020 3.000110 1.999922 0.999683
34 2.999913 2.000004 1.000015 2.999962 2.000016 1.000015 3.000082 1.999941 0.999762
【MATLAB高斯迭代算法,matlab实现高斯赛德尔迭代法解方程组】计算结果收敛!

    推荐阅读