MATLAB高斯迭代算法,matlab实现高斯赛德尔迭代法解方程组
已知方程组
Ax=b
文章图片
使用高斯赛德尔迭代法
要求精度达到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实现高斯赛德尔迭代法解方程组】计算结果收敛!
推荐阅读
- matlab555定时器,数字电子时钟课程设计报告-电工
- 拓端tecdat|拓端tecdat|MATLAB用Lasso回归拟合高维数据和交叉验证
- MATLAB R2020b Mac/win(商业数学软件)中文版
- 案例 | 助力上汽安吉物流批量化迭代AI模型,让物流管理更智慧
- #|基于蒙特卡洛法的规模化电动汽车充电负荷预测(Python&Matlab实现)
- #|最详细matlab 2018a安装教程步骤.
- 利用Matlab绘制有趣图像的示例代码
- 还在用递归,试试迭代吧
- R语言向量自回归VAR的迭代多元预测估计 GDP 增长率时间序列
- 三相异步电机矢量控制变频调速matlab|三相异步电机矢量控制变频调速matlab,基于MATLAB/SIMULINK异步电机矢量控制系统的仿真...