雅可比迭代实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
雅可比迭代法求解线性方程组的实验报告
一、实验题目
分别利用雅可比迭代法和高斯-塞德尔迭代法求解以下线性方程组:
使得误差不超过 0.00001。 二、实验引言
1.实验目的
①掌握用迭代法求解线性方程组的基本思想和步骤,熟悉计算机fortran 语言;
②了解雅可比迭代法在求解方程组过程中的优缺点。
2.实验意义
雅克比迭代法就是众多迭代法中比较早且较简单的一种,求解方便实用。
三、算法设计
1.雅可比迭代法原理:
设有线性方程组Ax=b 满足0≠ii a , 将方程组变形为: x=Bx+f, 则雅可比
(Jacobi)迭代法是指f Bx X k k +=+)1(,即 由初始解逐步迭代即可得到方程组的解。
算法步骤如下:
⎪⎩⎪⎨⎧=+--=-+-=--2.453.82102.7210321
321321x x x x x x x x x
步骤1.给定初始值)0()0(2)0(1,,,n x x x ⋯,精度e,最大容许迭代次数M ,令k=1。
步骤2.对i=1,2,…,n 依次计算
)0()1()0()1(11|
|)
n ,2,1,0(/)(i i i i i ii ii j n
i j j ij j x x x x e i a a x a b x →-=⋯=≠-=∑≠=,
步骤3.求出}{max 1i n
i e e ≤≤=,若ε 步骤4.若,1,k k M k →+<转步骤2继续迭代。若,M k ≥表明迭代失败,停止计算。 2.算法流程图 四、程序设计program jacobi implicit none integer::i,j integer::k save k real,parameter::e=0.001 integer,parameter::n=3 real::x(n),y(n),b(n) data b/7.2,8.3,4.2/ real::D real::a(n,n) open (unit=10,file='1.txt') data a/10,-1,-1,-1,10,-1,-2,-2,5/ write(10,*)"**********矩阵A的形式为**********" write(10,"(1x,3f6.2,/)")a forall(i=1:n) x(i)=0 end forall k=0 100 D=0 do i=1,n y(i)=b(i) do j=1,n if(i/=j) y(i)=y(i)-a(i,j)*x(j) end do y(i)=y(i)/a(i,i) end do do j=1,n D=abs(x(j)-y(j)) end do forall(i=1:n) x(i)=y(i) end forall if(D>=e) then k=k+1 write(10,*)"迭代次数为:",k goto 100 else goto 200 end if 200 write(10,*)"****************************************" write(10,*)"用jacobi方法解得的结果X[t]为:" write(10,"(1x,3f6.2,/)")x(:) stop end program 五、结果及讨论 1.实验结果 **********矩阵A的形式为********** 10.00 -1.00 -1.00 -1.00 10.00 -1.00 -2.00 -2.00 5.00 迭代次数为: 1 迭代次数为: 2 迭代次数为: 3 迭代次数为: 4 迭代次数为: 5 迭代次数为: 6 迭代次数为:7 **************************************** 用jacobi方法解得的结果X[t]为: 1.10 1.20 1.30 2.讨论分析 (1)误差 从上述输出结果中可以看出,当迭代次数k增大时,迭代值x1,y1,z1 会越来越逼近方程组的精确解x=1.0,y=1.2,z=1.3。 (2)收敛性 在本题目中, 用雅可比迭代法和高斯-塞德尔迭代法分别求解该线性方程组,得到的近似根是收敛的 六、算法评价 优点:迭代法算法简单,编制程序比较容易。 缺点:迭代法要求方程组的系数矩阵有某种特殊性质(譬如是所谓对角占优阵)以保证过程的收敛性。高斯—塞德尔迭代法比雅可比迭代法收敛快(达到同样的精度所需迭代次数少),但这个结论,在一定条件下才是对的,甚至有这样的方程组,雅可比方法收敛,而高斯—塞德尔迭代法却是发散的。在雅可比迭代法求解线性方程组时,只要误差截断设计的合理,原则上可以得到很正确的解。而通常我们选取设计误差限或设计最大迭代次数的方法来控制。由于它的准确性,故在实际应用中比较常见,对于解一般线性方程组非常有效准确。通过该算法以及编程对求解的过程,我们不难发现,雅克比迭代法的优点明显,计算公式简单,每迭代一次只需计算一次矩阵和向量的乘法,且计算过程中原始矩阵A始终不变,比较容易并行计算。然而这种迭代方式收敛速度较慢,而且占据的存储空间较大,所以工程中一般不直接用雅克比迭代法,而用其改进方法。 附: 高斯—赛德尔程序