教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 范文大全 > 稿件大全 >

雅可比迭代实验报告

来源:网络收集 时间:2026-08-27
导读: 雅可比迭代法求解线性方程组的实验报告 一、实验题目 分别利用雅可比迭代法和高斯-塞德尔迭代法求解以下线性方程组: 10x1 x2 2x3 7.2 x1 10x2 2x3 8.3 x x 5x 4.223 1 使得误差不超过 0.00001。 二、实验引言 1.实验目的 ①掌握用迭代法求解线性方程组的基

雅可比迭代法求解线性方程组的实验报告

一、实验题目

分别利用雅可比迭代法和高斯-塞德尔迭代法求解以下线性方程组:

10x1 x2 2x3 7.2 x1 10x2 2x3 8.3 x x 5x 4.223 1

使得误差不超过 0.00001。

二、实验引言

1.实验目的

①掌握用迭代法求解线性方程组的基本思想和步骤,熟悉计算机fortran语言; ②了解雅可比迭代法在求解方程组过程中的优缺点。

2.实验意义

雅克比迭代法就是众多迭代法中比较早且较简单的一种,求解方便实用。

三、算法设计

1.雅可比迭代法原理:

设有线性方程组Ax=b 满足aii 0, 将方程组变形为: x=Bx+f, 则雅可比(Jacobi)迭代法是指X(k 1) Bxk f,即 由初始解逐步迭代即可得到方程组的解。 算法步骤如下:

(0)(0), ,xn步骤1.给定初始值x1(0),x2,精度e,最大容许迭代次数M,令k=1。

步骤2.对i=1,2,…,n依次计算

x1 (bj aijxj)/aii(aii 0,i 1,2, ,n)

j 1j in

ei |xi(1) xi(0)|

xi(1) xi(0)

步骤3.求出e max{ei},若e ,则输出结果xi(0)(i 1,2, ,n),停止计算。1 i n

否则执行步骤4.

步骤4.若k M,k 1 k,转步骤2继续迭代。若k M,表明迭代失败,停止计算。

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始终不变,比较容易并行计算。然而这种迭代方式收敛速度较慢,而且占据的存储空间较大,所以工程中一般不直接用雅克比迭代法,而用其改进方法。

附:

高斯—赛德尔程序

program G-S

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)

if(i>j) y(i)=y(i)-a(i,j)*y(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,*)"用Gauss-seidel方法解得的结果X[t]为:" write(10,"(1x,3f6.2,/)")x(:)

stop

end program

**********矩阵A的形式为**********

10.00 -1.00 -1.00

-1.00 10.00 -1.00

-2.00 -2.00 5.00

迭代次数为: 1

迭代次数为: 2

迭代次数为: 3

迭代次数为: 4

****************************************

用Gauss-seidel方法解得的结果X[t]为:

1.10 1.20 1.30

…… 此处隐藏:1190字,全部文档内容请下载后查看。喜欢就下载吧 ……
雅可比迭代实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/fanwen/754778.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)