雅克比迭代法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
雅克比迭代法的应用
一. 题目:用雅克比迭代法求解下列方程组
⎪⎩
⎪⎨⎧=+--=-+-=--2.453.82102.7210321321321x x x x x x x x x
二.引言:
用雅克比迭代法对方程组进行求解是,突出算法简单的优点,因此编程比较简单,但是应用此法求解方程组是也有很大的局限性,如它要求方程组的系数矩阵必须是有某种特殊的性质,以保证迭代的收敛性。
三.算法:
1. 首先在程序组输入方程组所对应的系数矩阵,以及精度要求。
2. 通过循环语句的嵌套以及条件判断语句实现迭代过程
3 窗体显示迭代的详细结果的输出位置以及最终的迭代结果。
程序流程图:
四.程序设计:
Program zuoye2
implicit none
integer::i,j,k,l=30,m=3,n=3
real::e=0.0000001
real::y(3),x(3)=(/0,0,0/)
real::b(3)=(/7.2,8.3,4.2/)
real::a(3,3)=(/10,-1,-1,-1,10,-1,-2,-2,5/)
do k=0,l
write(*,*)k,x(1),x(2),x(3)
do i=1,n
do j=1,m
if((i-j)/=0) y(i)=y(i)+(-a(i,j)/a(i,i))*x(j)
end do
y(i)=y(i)+b(i)/a(i,i)
end do
if(max(abs(y(1)-x(1)),abs(y(2)-x(2)),abs(y(3)-x(3))) y=(/0,0,0/) end do end 运行结果: 0 0.0000000E+00 0.0000000E+00 0.0000000E+00 1 0.7200000 0.8300000 0.8400000 2 0.9710000 1.070000 1.150000 3 1.057000 1.157100 1.248200 4 1.085350 1.185340 1.282820 5 1.095098 1.195099 1.294138 6 1.098338 1.19833 7 1.298039 7 1.099442 1.199442 1.299335 8 1.099811 1.199811 1.299777 9 1.099936 1.199937 1.299924 10 1.099979 1.199979 1.299975 11 1.099993 1.199993 1.299991 12 1.099998 1.199998 1.299997 13 1.099999 1.199999 1.299999 14 1.100000 1.200000 1.300000 15 1.100000 1.200000 1.300000 16 1.100000 1.200000 1.300000 17 1.100000 1.200000 1.300000 五.结果及误差分析 真实值:x(1)=1,1 x(2)=1.2,x(3)=1.3 绝对误差:由于迭代的次数比较多,使得真实值和理论值相同 随着计算次数的增加,得出的结果逐渐逼近真实值,因此算法收敛。 算法评价:雅克比迭代法的优点:计算公式简单,每迭代一次只需计算一次矩阵和向量的乘法,且计算过程中原始矩阵A始终不变,比较容易并行计算。 雅克比迭代法的缺点:最大的缺点是收敛速度较慢,判断迭代次数比较麻烦,得不出真实值,得出的结果是估算值,而且占据的存储空间较大,所以工程中一般不直接用雅克比迭代法,而用其改进方法。比如说高斯——赛德尔迭代等,很多种方法。