数学实验迭代(方程求解)

数学实验迭代(方程求解)
数学实验迭代(方程求解)

实验六 迭代(方程求解)

一.实验目的:认识迭代数列,考察迭代数列的收敛性.并学会用Mathematica 系统对线性和非线性的方程组进行迭代求解.

二.实验环境:计算机,Mathematica 数学软件,Word 文档,课本。 三.实验的基本理论和方法:

给定迭代函数f(x)以及一个初值0x 利用1(),0,1,n n x f x n +==???迭代得到数列n x ,0,1,n =???.如果数列n x 收敛与某个*

x ,则有**()x f x =.即*

x 是方程

()x f x =的解.由此用如下的方法求方程()0g x =的近似解。

将方程()0g x =改写为等价的方程()x f x =,然后选取一初值利用

1(),0,1,n n x f x n +==???做迭代.迭代数列n x 收敛的极限就是()0g x =的解.线

性方程组以及非线性方程组的求解与单变量的方程求解方法类似.实验内容和步骤

四.实验内容与结果 1.线性方程组

⑴编写给定初值0x 及迭代函数()f x ,迭代n 次产生相应的序列.

⑵给函数()(2/)f x x x =+初值为0进行迭代80次所产生的迭代序列并显示. 输入程序:

Iterate f_,x0_,n_Integer :Module t ,i,temp x0,

AppendTo t,temp ;

For i

1,i

n,i ,temp

f temp ;AppendTo t,temp

;

t

f x_:

x 2x

2;

Iterate f,1.,80

运行结果得:

1.,1.5,1.41667,1.41422,1.41421,1.41421,

1.41421,1.41421,1.41421,1.41421,1.41421,

1.41421,1.41421,1.41421,1.41421,1.41421,

1.41421,1.41421,1.41421,1.41421,1.41421,

1.41421,1.41421,1.41421,1.41421,1.41421,1.41421,

1.41421,1.41421,1.41421,1.41421,1.41421,1.41421,

1.41421,1.41421,1.41421,1.41421,1.41421,1.41421,

1.41421,1.41421,1.41421,1.41421,1.41421,1.41421,

1.41421,1.41421,1.41421,1.41421,1.41421,1.41421,

1.41421,1.41421,1.41421,1.41421,1.41421,1.41421,

1.41421,1.41421,1.41421,1.41421,1.41421,1.41421,

1.41421,1.41421,1.41421,1.41421,1.41421,1.41421,

1.41421,1.41421,1.41421,1.41421,1.41421,1.41421,

1.41421,1.41421,1.41421,1.41421,1.41421,1.41421

输入程序:

NTIterate g_,x0_,n_Integer :

Module

i,var x0,t ,h,

h x_Dt g x ,x;

For i 1,i n,i ,AppendTo t,var ;

If h var0,var N var g var h var ,20, Print"Divided by Zero after",i,

"'s iterations.";

Break ;

t

g x_:x^32;

NTIterate g,1,40

运行结果得:

1,1.3333333333333333333,1.2638888888888888889,1.2599334934499769665,1.259921050017769774,1.259921049894873165,1.259921049894873165,1.259921049894873165,1.25992104989487316,1.25992104989487316,1.25992104989487316,1.2599210498948732,1.2599210498948732,

1.2599210498948732,1.259921049894873,1.259921049894873,1.259921049894873,1.259921049894873,1.25992104989487,1.25992104989487,1.25992104989487,1.2599210498949,1.2599210498949,1.2599210498949,1.259921049895,1.259921049895,1.259921049895,1.259921049895,

1.25992104989,1.25992104989,1.25992104989,1.2599210499,1.2599210499,1.2599210499,1.259921050,1.259921050,1.259921050,1.259921050,1.25992105, 1.25992105

2. 非线性方程组

⑴对于给定的矩阵M ,数组f 和初始向量0

x ,由迭代1

n n x Mx f +=+编写迭

代程序,并选择初值分别迭代20和50次所产生的序列. 迭代40次运行结果: 输入程序:

LSIterate m_,f_List,f0_List,n_Integer :Module

i,var f0,t Table ,i,n

,For i

1,i

n,i

,t

i

var;var

m.var

f ;

t m

1,0.4,0.5,1

;f

1,1;f0

0,0;

LSIterate m,f,f0,40

运行结果得:

0,0, 1.,1., 2.4,2.5, 4.4,4.7,

7.28,7.9,11.44,12.54,17.456,19.26,

26.16,28.988,38.7552,43.068,56.9824,63.4456,

83.3606,92.9368,121.535,135.617,

176.782,197.385,256.736,286.776,372.446,416.144,

539.904,603.367,782.251,874.319,1132.98,1266.44,

1640.56,1833.93,2375.13,2655.21,3438.22,3843.78,

4976.73,5563.88,7203.28,8053.25,10425.6,11655.9,

15088.9,16869.7,21837.8,24415.1,31604.9,35335.,

45739.9,51138.5,66196.3,74009.4,95801.,107109.,

138645.,155010.,200650.,224334.,290385.,324660.,

420250.,469854.,608192.,679980.,880185.,984077.,

1.27382106,1.42417106, 1.84349106,

2.06108106,

2.66792106,2.98282106,

3.86105106,

4.31678106

迭代60次运行结果

输入程序:

LSIterate m_,f_List,f0_List,n_Integer:

Module

i,var f0,t Table,i,n,

For i1,i n,i,t i var;var m.var f;

t

m1,0.4,0.5,1;f1,1;f00,0;

LSIterate m,f,f0,60

运行结果得:

1,1.3333333333333333333,1.2638888888888888889,

1.2599334934499769665,1.259921050017769774,

1.259921049894873165,1.259921049894873165,

1.259921049894873165,1.25992104989487316,

1.25992104989487316,1.25992104989487316,

1.2599210498948732,1.2599210498948732,

1.2599210498948732,1.259921049894873,1.259921049894873,

1.259921049894873,1.259921049894873,1.25992104989487,

1.25992104989487,1.25992104989487,1.2599210498949,

1.2599210498949,1.2599210498949,1.259921049895,

1.259921049895,1.259921049895,1.259921049895,

1.25992104989,1.25992104989,1.25992104989,1.2599210499,

1.2599210499,1.2599210499,1.259921050,1.259921050,

1.259921050,1.259921050,1.25992105,1.25992105

⑵改写矩阵的等价形式,给定数组f 和初始向量0

x ,运用迭代格式

11()x I D A x D b --=-+编写迭代程序。

输入程序:

JacobIterate a_,b_List,x0_List,n_Integer :Module ad Length a ,i,j,k,var var1x0,

For i 1,i ad,i ,If a

i,i

0,

Print "a ",i,",",i,"

0.";Abort

;For i 1,i n,i ,Print var ;

For j 1,j ad,j

,

var1j

N b j

Sum a j,k var

k

,k,ad

a

j,j

var

j

,20

;var var1;;a 3,1,3,2;

b

1,1;x0

0,0;

JacobIterate a,b,x0,10

运行结果得:

0,0

0.33333333333333333333,0.50000000000000000000 0.16666666666666666667,0.1020

0.3333333333333333333,0.2500000000000000000 0.2500000000000000000,0.1020

0.3333333333333333333,0.1250000000000000000 0.291666666666666667,0.1019

0.333333333333333333,0.062500000000000000 0.312500000000000000,0.1018

0.33333333333333333,0.03125000000000000

输入程序:

JacobIterate a_,b_List,x0_List,n_Integer:

Module ad Length a,i,j,k,var var1x0,

For i1,i ad,i,If a i,i0,

Print"a",i,",",i,"0.";Abort;

For i1,i n,i,Print var;

For j1,j ad,j,

var1j

N

b j Sum a j,k var k,

k,ad a j,j var j,20

;

var var1;

;

a2,1,1,1,1,1,1,1,2;

b1,1,1;x00,0,0;

JacobIterate a,b,x0,10

运行结果得:

0,0,0

0.50000000000000000000,

1.0000000000000000000,0.50000000000000000000

1.2500000000000000000,

1.0000000000000000000,0.2500000000000000000

0.8750000000000000000,

0.5000000000000000000,0.6250000000000000000

0.062500000000000000,

0.500000000000000000,0.312500000000000000

0.406250000000000000,

1.37500000000000000,0.781250000000000000

1.57812500000000000,

1.37500000000000000,0.39062500000000000

0.99218750000000000,

0.9687500000000000,0.97656250000000000

0.4726562500000000,

0.9687500000000000,0.4882812500000000

0.2597656250000000,

1.960937500000000, 1.2207031250000000

五.实验分析

类似于单变量的方程以及线性方程组可以通过迭代的方法求解,迭代序列收敛的结果与预期结论相吻合,影响迭代向量列收敛性的主要因素是矩阵的特性。使得迭代序列收敛并尽快收敛到方程的某一解的条件是迭代函数在解的附近的导数的绝对值尽量小。

迭代法求解线性方程组的研究

迭代法求解线性方程组的研究 【摘要】:本文总结了解线性方程组的三个迭代法,Jacobi 迭代法,Gauss-seidel 迭代法,SOR 迭代法,并且介绍了现代数值计算软件MATLAB 在这方面的应用,即分别给出三个迭代法的数值实验。 【关键字】:Jacobi 迭代法 Gauss-seidel 迭代法 SOR 迭代法 数值实验 一. 引言 迭代法是用某种极限过程去逐步逼近线性方程组精确解的方法,它是解高阶稀疏方程组的重 要方法。 迭代法的基本思想是用逐次逼近的方法求解线性方程组。 设有方程组 b Ax = …① 将其转化为等价的,便于迭代的形式 f Bx x += …② (这种转化总能实现,如令b f A I B =-=,), 并由此构造迭代公式 f Bx x k k +=+)() 1( …③ 式中B 称为迭代矩阵,f 称为迭代向量。对任意的初始向量) 0(x ,由式③可求得向量序列 ∞0)(}{k x ,若*) (lim x x k k =∞ →,则*x 就是方程①或方程②的解。此时迭代公式②是收敛的,否则称为发散的。构造的迭代公式③是否收敛,取决于迭代矩阵B 的性质。 本文介绍三种解线性方程组的最主要的三种迭代法:Jacobi 迭代法,Gauss-Seidel 迭代法和SOR 迭代法。本文结构如下:第二部分介绍Jacobi 迭代法及其数值实验,第三部分介绍Gauss-Seidel 迭代法及其数值实验,第四部分介绍SOR 迭代法及其数值实验,第五部分总结。 二. 雅克比(Jacobi )迭代法 1. 雅克比迭代法的格式 设有方程组

),,3,2,1(1 n i b x a j j n j ij ==∑= …① 矩阵形式为b Ax =,设系数矩阵A 为非奇异矩阵,且),,3,2,1(,0n i a ii =≠ 从式①中第i 个方程中解出x ,得其等价形式 )(1 1 1j n j j ij ii i x a b a x ∑≠=-= …② 取初始向量),,,() 0()0(2)0(1) 0(n x x x x =,对式②应用迭代法,可建立相应的迭代公式: )(11 1)() 1(∑≠=++-=n j j i k j ij ii k i b x a a x …③ 也可记为矩阵形式: J x J k F B x k +==) () 1( …④ 若将系数矩阵A 分解为A=D-L-U ,式中 ???? ? ? ? ??=nn a a a D 2211, ?? ? ?? ?? ? ??=--00 00121323121nn n n a a a a a a L , ?? ? ??? ? ? ? ?=--00 00122311312n n n n a a a a a a D 。 则方程Ax=b 变为 b x U L D =--)( 得 b x U L Dx ++=)( 于是 b D x U L D x 1 1 )(--++=

matlab实验十七__牛顿迭代法(可打印修改)

实验十七牛顿迭代法 【实验目的】 1.了解牛顿迭代法的基本概念。 2.了解牛顿迭代法的收敛性和收敛速度。 3.学习、掌握MATLAB软件的有关命令。 【实验内容】 用牛顿迭代法求方程的近似根,误差不超过。 3210 ++-=3 10- x x x 【实验准备】 1.牛顿迭代法原理 2.牛顿迭代法的几何解析 3.牛顿迭代法的收敛性 4.牛顿迭代法的收敛速度 5.迭代过程的加速 6.迭代的MATLAB命令 MATLAB中主要用for,while等控制流命令实现迭代。 【实验重点】 1.牛顿迭代法的算法实现 2.牛顿迭代法收敛性和收敛速度 【实验难点】 1.牛顿迭代法收敛性和收敛速度 【实验方法与步骤】 练习1用牛顿迭代法求方程在x=0.5附近的近似 3210 ++-= x x x

根,误差不超过。 310-牛顿迭代法的迭代函数为 322()1()()321 f x x x x g x x x f x x x ++-=-=-'++相应的MATLAB 代码为 >>clear; >>x=0.5; >>for i=1:3 >>x=x-(x^3+x^2+x-1)/(3*x^2+2*x+1) >>end 可算的迭代数列的前3项0.5455,0.5437,0.5437。经三次迭代,就大大超过了精度要求。 练习2 用牛顿迭代法求方程的近似正实根,由此建2(0)x a a =>立一种求平方根的计算方法。 由计算可知,迭代格式为,在实验12的练习4中1()()2a g x x x =+已经进行了讨论。 【练习与思考】 1.用牛顿迭代法求方程的近似根。 ln 1x x =2.为求出方程的根,在区间[1,2]内使用迭代函数进行310x x --=迭代,纪录迭代数据,问迭代是否收敛?对迭代进行加速,对比加速前的数据,比较加速效果。 3.使用在不动点的泰勒公式,证明牛顿迭代法收敛原理。*x

数学实验迭代(方程求解)

实验六 迭代(方程求解) 一.实验目的:认识迭代数列,考察迭代数列的收敛性.并学会用Mathematica 系统对线性和非线性的方程组进行迭代求解. 二.实验环境:计算机,Mathematica 数学软件,Word 文档,课本。 三.实验的基本理论和方法: 给定迭代函数f(x)以及一个初值0x 利用1(),0,1,n n x f x n +==???迭代得到数列n x ,0,1,n =???.如果数列n x 收敛与某个* x ,则有**()x f x =.即* x 是方程 ()x f x =的解.由此用如下的方法求方程()0g x =的近似解。 将方程()0g x =改写为等价的方程()x f x =,然后选取一初值利用 1(),0,1,n n x f x n +==???做迭代.迭代数列n x 收敛的极限就是()0g x =的解.线 性方程组以及非线性方程组的求解与单变量的方程求解方法类似.实验内容和步骤 四.实验内容与结果 1.线性方程组 ⑴编写给定初值0x 及迭代函数()f x ,迭代n 次产生相应的序列. ⑵给函数()(2/)f x x x =+初值为0进行迭代80次所产生的迭代序列并显示. 输入程序: Iterate f_,x0_,n_Integer :Module t ,i,temp x0, AppendTo t,temp ; For i 1,i n,i ,temp f temp ;AppendTo t,temp ; t f x_: x 2x 2; Iterate f,1.,80 运行结果得:

1.,1.5,1.41667,1.41422,1.41421,1.41421, 1.41421,1.41421,1.41421,1.41421,1.41421, 1.41421,1.41421,1.41421,1.41421,1.41421, 1.41421,1.41421,1.41421,1.41421,1.41421, 1.41421,1.41421,1.41421,1.41421,1.41421,1.41421, 1.41421,1.41421,1.41421,1.41421,1.41421,1.41421, 1.41421,1.41421,1.41421,1.41421,1.41421,1.41421, 1.41421,1.41421,1.41421,1.41421,1.41421,1.41421, 1.41421,1.41421,1.41421,1.41421,1.41421,1.41421, 1.41421,1.41421,1.41421,1.41421,1.41421,1.41421, 1.41421,1.41421,1.41421,1.41421,1.41421,1.41421, 1.41421,1.41421,1.41421,1.41421,1.41421,1.41421, 1.41421,1.41421,1.41421,1.41421,1.41421,1.41421, 1.41421,1.41421,1.41421,1.41421,1.41421,1.41421 输入程序: NTIterate g_,x0_,n_Integer : Module i,var x0,t ,h, h x_Dt g x ,x; For i 1,i n,i ,AppendTo t,var ; If h var0,var N var g var h var ,20, Print"Divided by Zero after",i, "'s iterations."; Break ; t g x_:x^32; NTIterate g,1,40 运行结果得:

MAAB计算方法迭代法牛顿法二分法实验报告

姓名 实验报告成绩 评语: 指导教师(签名) 年 月 日 说明:指导教师评分后,实验报告交院(系)办公室保存。 实验一 方程求根 一、 实验目的 用各种方法求任意实函数方程0)(=x f 在自变量区间[a ,b]上,或某一点附近的实根。并比较方法的优劣。 二、 实验原理 (1)、二分法 对方程0)(=x f 在[a ,b]内求根。将所给区间二分,在分点 2a b x -=判断是否0)(=x f ;若是,则有根2a b x -=。否则,继续判断是否0)()(

+)(0x f 0))(('0=-x x x f 设0)('0≠x f ,则=x -0x )(') (00x f x f 。取x 作为原方程新的近似根1x ,然后将1x 作为0x 代入上式。迭代公式为:=+1 k x -0x )(')(k k x f x f 。 三、 实验设备:MATLAB 软件 四、 结果预测 (1)11x = (2)5x = (3)2x =0,09052 五、 实验内容 (1)、在区间[0,1]上用二分法求方程0210=-+x e x 的近似根,要求误差不超 过3105.0-?。 (2)、取初值00=x ,用迭代公式=+1 k x -0x )(') (k k x f x f ,求方程0210=-+x e x 的近似根。要求误差不超过3105.0-?。 (3)、取初值00=x ,用牛顿迭代法求方程0210=-+x e x 的近似根。要求误差 不超过3105.0-?。 六、 实验步骤与实验程序 (1) 二分法 第一步:在MATLAB 软件,建立一个实现二分法的MATLAB 函数文件如下: function x=agui_bisect(fname,a,b,e) %fname 为函数名,a,b 为区间端点,e 为精度 fa=feval(fname,a); %把a 端点代入函数,求fa fb=feval(fname,b); %把b 端点代入函数,求fb if fa*fb>0 error('两端函数值为同号'); end

第六章解线性方程组的迭代法

第五章 解线性方程组的迭代法 本章主要内容: 迭代法收敛定义,矩阵序列收敛定义,迭代法基本定理,雅可比迭代法,高斯-塞德尔迭代法,系数矩阵为严格对角占优阵的采用雅可比迭代、高斯-塞德尔迭代的收敛性。 教学目的及要求: 使学生了解迭代法收敛定义,迭代法基本定理,掌握雅可比迭代法、高斯-塞德尔迭代法。 教学重点: 雅可比迭代法,高斯-塞德尔迭代法。 教学难点: 迭代法基本定理的证明以及作用。 教学方法及手段: 应用严格的高等代数、数学分析知识,完整地证明迭代法基本定理,讲清雅可比迭代法与高斯-塞德尔迭代法的关系,介绍雅可比迭代法与高斯-塞德尔迭代法在编程中的具体实现方法。 在实验教学中,通过一个具体实例,让学生掌握雅可比迭代法与高斯-塞德尔迭代法的具体实现,并能通过数值计算实验,揭示高斯-塞德尔迭代法是对雅可比迭代法的一种改进这一事实。 教学时间: 本章的教学的讲授时间为6学时,实验学时4学时。 教学内容: 一 迭代法定义 对于给定的线性方程组x Bx f =+,设它有唯一解*x ,则 **x Bx f =+ (6.1) 又设(0)x 为任取的初始向量,按下述公式构造向量序列 (1)(),0,1,2,k k x Bx f k +=+=L (6.2) 这种逐步代入求近似解的方法称为迭代法(这里B 与f 与k 无关)。如果() lim k k x →∞ 存在 (记为*x ),称此迭代法收敛,显然*x 就是方程组的解,否则称此迭代法发散。 迭代法求方程近似解的关键是是讨论由(6.1)式所构造出来的向量序列() {} k x 是否收敛。为此,我们引入误差向量 (1)(1)*k k x x ε++=- 将(6.2)式与(6.1)式相减,我们可得 (1)*()*()k k x x B x x +-=- (1)(),0,1,2,k k B k εε+==L 递推下去,得 ()(1)2(2)(0)k k k k B B x B x εε--====L

迭代法实验

实验五线性方程组的迭代法实验 一. 实验目的 (1)深入理解线性方程组的迭代法的设计思想,学会利用系数矩阵的性质以保证迭代过程的收敛性,以及解决某些实际的线性方程组求解问题。 (2)熟悉Matlab编程环境,利用Matlab解决具体的方程求根问题。 二. 实验要求 建立Jacobi迭代公式、Gauss-Seidel迭代公式和超松弛迭代公式,用Matlab软件实现线性方程组求解的Jacobi迭代法、Gauss-Seidel迭代法和超松弛迭代法,并用实例在计算机上计算。 三. 实验内容 1. 实验题目 (1)分别利用Jacobi迭代和Gauss-Seidel迭代求解下列线性方程组,取x0={0 ,0,0,0,0-,o}t (2)分别取w=1、1.05、1.1、1.25和 1.8,用超松弛法求解上面的方程组,要求精度为510 。 2. 设计思想 1.Jacobi迭代: Jacobi迭代的设计思想是将所给线性方程组逐步对角化,将一般形式的线性方程组的求解归结为对角方程组求解过程的重复。 2.Gauss-Seidel迭代: Gauss-Seidel迭代的设计思想是将一般形式的线性方程组的求解过程归结为下三角方程组求解过程的重复。 3.超松弛迭代:基于Gauss-Seidel迭代,对i=1,2,…反复执行计算迭代公式,即为超松弛迭代。 3. 对应程序 1.Jacobi迭代: function [x,k]=Jacobimethod(A,b,x0,N,emg) %A是线性方程组的左端矩阵,b是右端向量,x0是迭代初始值 % N表示迭代次数上限,emg表示控制精度,k表示迭代次数,x是解 n=length(A); x1=zeros(n,1); x2=zeros(n,1); x1=x0;k=0; r=max(abs(b-A*x1)); while r>emg for i=1:n sum=0; for j=1:n if i~=j sum=sum+A(i,j)*x1(j); end end x2(i)=(b(i)-sum)/A(i,i); end r=max(abs(x2-x1)); x1=x2; k=k+1; if k>N disp('迭代失败,返回'); return; end end

求解线性方程组——超松弛迭代法(c)

求解线性方程组——超松弛迭代法 #include #include using namespace std; float *one_array_malloc(int n); //一维数组分配float **two_array_malloc(int m,int n); //二维数组分配float matrix_category(float* x,int n); int main() { const int MAX=100;//最大迭代次数 int n,i,j,k; float** a; float* x_0; //初始向量 float* x_k; //迭代向量 float precision; //精度 float w; //松弛因子 cout<<"输入精度e:"; cin>>precision; cout<>n; a=two_array_malloc(n,n+1); cout<>a[i][j]; } } x_0=one_array_malloc(n); cout<>x_0[i]; } x_k=one_array_malloc(n);

cout<<"输入松弛因子w (1>w; float temp; //迭代过程 for(k=0;k

迭代法实验报告

迭代法实验报告 一. 实验目的:掌握迭代方法的用处 二. 实验环境:Cfree5.0 三. 实验时间:2013年6月20日 四. 实验地点:电子信息楼1201教室 五. 实验内容:运用编程实现迭代方法可以更好的解线性方程组,得到线性方程的解。 六. 实验理论依据: 高斯-赛德尔(Gauss-Seidel )迭代公式 我们注意到在雅可比迭代法中并没有对新算出的分量11k x +,12k x +, , 11k i x +-进行充分利用.不妨设想,在迭代收敛的条件下,我们把 (1)()()()11211331111(1)()()()22112332222(1)()()()1122,111()1(1(k k k k n n k k k k n n k k k k n n n n n n nn x a x a x a x b a x a x a x a x b a x a x a x a x b a +++--?=---+???=---+?????=---+?? 式中第一个方程算出的11k x +立即投入到第二个方程中,代替()1k x 进行计算,当12 k x +算出后代替()2k x 马上投入到第三个方程中计算,依次进行下去,这样也许会得到 更好的收敛效果.根据这种思路建立的一种新的迭代格式,我们称为高斯-赛德尔(Gauss-Seidel )迭代公式, 高斯=赛德尔迭代法的分量形式:

(1)()()()11211331111(1)(1)()()22112332222(1)(1)(1)(1)1122,111()1(1(k k k k n n k k k k n n k k k k n n n n n n nn x a x a x a x b a x a x a x a x b a x a x a x a x b a +++++++--?=---+???=---+?????=---+?? 高斯-赛德尔迭代法的矩阵形式: (1)(),(0,1,2,)k k x Bx f k +=+= 其中 1()B D L U -=- ,1()f D L b -=- B 称为高斯-赛德尔迭代矩阵,f 称为高斯-赛德尔迭代常量.. 七. 运行代码如下: #include"stdio.h" #include"math.h" int main() { bool pan1=true; int n,n1,n2=0,k=0; double num[100][100],L[100][100],U[100][100],x[100],y[100],num1=0,b[100],D[100][100],x1[200][200],x2[200][200]; printf("\n"); printf("*******************************高斯迭代法解如下********************************"); printf("输入要输入矩阵的阶数为(按Enter 输入矩阵数字):");//

线性方程组的迭代求解java

线性方程组的迭代求解 摘要 迭代法是一种逐次逼近方法,在使用迭代法解方程组时,其系数矩阵在计算过程中始终不变。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行。迭代法具有循环的计算方法,方法简单,适宜解大型稀疏矩阵方程组 本文总结了解线性方程组的三个迭代法,Jacobi迭代法,Gauss-Seidel迭代法,SOR 迭代法,并且介绍了软件JA V A在这方面的应用。 关键词: Jacobi迭代法;Gauss-Seidel迭代法;SOR迭代法;计算

SOLUTION OF LINEAR EQUATIONS OF ITERATION WITH THE EXPERIMENTAL ABSTRACT Iteration is a kind of method to solve questions by step-by-step approximation. When we are getting the solution of linear equations by using iteration, the coefficient matrix is always staying the same in computation process. Computer could operate fastly so that it is suitable for operating again and again. Iteration is easy to operate to solve the large matrix equations by using a calculate method called circulation. This summary understanding of linear equations three kind of iteration, Jacobi iteration, Gauss-Seidel iteration, successive over relaxation method ,and introduce modern software JA V A in this respect. Key words:Jacobi iteration; Gauss-Seidel iteration; Successive Over Relaxation method ; calculating

方程求根的迭代法

§4.1 引 言 绪论中讲到方程求根得二分法,但二分法收敛速度慢,有必要掌握新的方法。 §4.1.1迭代法的思想 迭代法是一种逐次逼近法,使用某个固定公式(迭代公式)反复校正,逐步精确,直到满足精度。 迭代法求根分两步: 1) 猜测初值 2)迭代 如求解初值问题00' )(),,(y x y y x f y ==用梯形公式 111[(,)(,)2 n n n n n n h y y f x y f x y +++≈+ + (1) 看作关于1+n y 的函数方程,按欧拉公式提供猜测值),() 0(1n n n n y x hf y y +=+,代入(1)得 )],(),([2 ) 0(11) 1(1+++++ =n n n n n n y x f y x f h y y 若) 1(1+n y 仍不满足要求,则将它代入(1)式,继续得到校正值) 2(1+n y ,写成迭代公式 )],(),([2 ) (11) 1(1 k n n n n n k n y x f y x f h y y ++++++ = (2) 一般地,为了求一元非线性方程0)(=x f 的根,可以先将其转换为如下的等价形式 ()x x ?= (3) 式(3)中连续函数()x ?称为迭代函数,其右端含未知数,不能直接求解。先用根的某个猜测值0x 代入(3),构造迭代公式:()k k x x ?=+1。如果迭代值k x 有极限,则称迭代收敛,极限值k k x x ∞ →=lim * 就是方程(3)的根。 几何意义P127图4-1 为使迭代法有效,必须保证它的收敛行,()x ?满足什么条件,才能保证收敛?以最简单的线性迭代()d kx x +=?,可以看出收敛的充分必要条件()1' <=k x ?。几何意义P127 图4-2,3,4,5。 §4.1.3 压缩映像原理 设* x 是方程()x x ?=的根,则由微分中值定理 ))(()()(* '*1* k k k x x x x x x -=-=-+ε???,如果存在10<≤L ,使得 ],[b a x ∈有() k k x x L x x L x -≤-?≤+* 1*' ? ,则迭代误差0e L e k k ≤,由于10<≤L , 故0→k e ,即迭代收敛。

数学实验“线性方程组的J-迭代,GS-迭代,SOR-迭代解法”实验报告(内含matlab程序代码)

西京学院数学软件实验任务书 课程名称数学软件实验班级数0901 学号0912020107 姓名李亚强 实验课题线性方程组的J-迭代,GS-迭代,SOR-迭代方法。 实验目的 熟悉线性方程组的J-迭代,GS-迭代,SOR-迭代方法。 实验要求运用Matlab/C/C++/Java/Maple/Mathematica等其中一种语言完成。 实验内容线性方程组的J-迭代;线性方程组的GS-迭代;线性方程组的SOR-迭代。 成绩教师

实验四实验报告 一、实验名称:线性方程组的J-迭代,GS-迭代,SOR-迭代。 二、实验目的:熟悉线性方程组的J-迭代,GS-迭代,SOR-迭代,SSOR-迭代方法,编程实现雅可比方法和高斯-赛德尔方法求解非线 性方程组121231 235210 64182514 x x x x x x x x +=?? ++=??++=-?的根,提高matlab 编程能力。 三、实验要求:已知线性方程矩阵,利用迭代思想编程求解线性方程组的解。 四、实验原理: 1、雅可比迭代法(J-迭代法): 线性方程组b X A =*,可以转变为: 迭代公式(0)(1)() k 0,1,2,....k k J X X B X f +???=+=?? 其中b M f U L M A M I B J 111),(---=+=-=,称J B 为求解 b X A =*的雅可比迭代法的迭代矩阵。以下给出雅可比迭代的 分量计算公式,令),....,() ()(2)(1)(k n k k k X X X X =,由雅可比迭代公式 有 b X U L MX k k ++=+) () 1()(,既有i n i j k i ij i j k i ij k i ij b X a X a X a +- -=∑∑+=-=+1 )(1 1 )() 1(, 于

SOR迭代法求解线性方程组

实验三:用SOR 迭代法求解线性方程组 ?????? ? ??=??????? ????????? ??----------74.012.018.168.072.012.006.016.012.001.103.014.006.003.088.001.016.014.001.076.04321x x x x 取初始点T x )0,0,0,0()0(=,松弛因子05.1=ω,精度要求610-=ε。 1,建立SOR.m 函数文件,此函数文件可调用,程序源码如下: function [x,n]=SOR(A,b,x0,w,eps,M) if nargin==4 eps= 1.0e-6;%精度要求 M = 200; elseif nargin<4 error; return elseif nargin ==5 M = 200; end if(w<=0 || w>=2) error; return; end D=diag(diag(A)); %求A 的对角矩阵 L=-tril(A,-1); %求A 的下三角阵 U=-triu(A,1); %求A 的上三角阵 B=inv(D-L*w)*((1-w)*D+w*U); f=w*inv((D-L*w))*b; x=B*x0+f; n=1; %迭代次数 while norm(x-x0)>=eps x0=x; x =B*x0+f; n=n+1; if(n>=M) disp('Warning: 迭代次数太多,可能不收敛!'); return; end end

2,输入矩阵。并根据要求调用函数,运行结果如下图所示: 即经过7次迭代算出结果,且求得: 1.27151.28440.48581.2843x ?? ? ?= ? ???

线性方程组的迭代法及程序实现

线性方程组的迭代法及程序实现 学校代码:11517 学号:200810111217 HENAN INSTITUTE OF ENGINEERING 毕业论文 题目线性方程组的迭代法及程序实现 学生姓名 专业班级 学号 系 (部)数理科学系 指导教师职称 完成时间 2012年5月20日河南工程学院 毕业设计(论文)任务书 题目:线性方程组的迭代法及程序实现专业:信息与计算科学学号 : 姓名一、主要内容: 通过本课题的研究,学会如何运用有限元方法来解决线性代数方程组问题,特别是Gaussie-Seidel迭代法和Jacobi迭代法来求解线性方程组。进一步学会迭代方法的数学思想,并对程序代码进行解析与改进,这对于我们以后学习和研究实际问题具有重要的意义。本课题运用所学的数学专业知识来研究,有助于我们进一步掌握大学数学方面的知识,特别是迭代方法。通过这个课题的研究,我进一步掌握了迭代方法的思想,以及程序的解析与改进,对于今后类似实际问题的解决具有重要的意义。

二、基本要求: 学会编写规范论文,独立自主完成。 运用所学知识发现问题并分析、解决。 3.通过对相关资料的收集、整理,最终形成一篇具有自己观点的学术论文,以期能对线性方程组迭代法的研究发展有一定的实践指导意义。 4.在毕业论文工作中强化英语、计算机应用能力。 完成期限: 2012年月指导教师签名:专业负责人签名: 年月日 目录 中文摘要....................................................................................Ⅰ英文摘要 (Ⅱ) 1 综述 1 2 经典迭代法概述 3 2.1 Jacobi迭代法 3 2.2 Gauss?Seidel迭代法 4 2.3 SOR(successive over relaxation)迭代法 4 2.4 SSOR迭代法 5 2.5 收敛性分析5 2. 6 数值试验 6 3 matlab实现的两个例题8 3.1 例1 迭代法的收敛速度8 3.2 例 2 SOR迭代法松弛因子的选取 12致谢16参考文献17附录19

matlab 数学实验 迭代 _ 蛛网图(免积分)

数学实验—实验报告(免积分) 一、实验项目:Matlab实验三—迭代 二、实验目的和要求 a.熟悉MATLAB软件的用户环境,掌握其一般目的命令和MATLAB数组操作与 运算函数; b.掌握MATLAB软件的绘图命令,能够熟练应用循环和选择结构实现各种循环 选择功能; c.借助MATLAB软件的绘图功能,对函数的特性进行探讨,广泛联想,大胆猜 想,发现进而证实其中的规律。 三、实验内容 问题一:将方程53 x x x +-+=改写成各种等价的形式进行迭代 5210 观察迭代是否收敛,并给出解释。 问题二:迭代以下函数,分析其收敛性。 4 f(x)=x-a 使用线性连接图、蛛网图或费根鲍姆图对参数a进行讨论和观察,会得到什么结论? 问题一: (1)画图 x1=-6:0.01:6; x2=-3:0.01:3; x3=-1:0.01:1; x4=-0.8:0.01:-0.75; y1=x1.^5 +5*x1.^3-2*x1+1; y2=x2.^5 +5*x2.^3-2*x2+1; y3=x3.^5 +5*x3.^3-2*x3+1; y4=x4.^5 +5*x4.^3-2*x4+1; subplot(2,2,1),plot(x1,y1) ,title('图(1)') ,grid on, subplot(2,2,2),plot(x2,y2) ,title('图(2)'),grid on, subplot(2,2,3),plot(x3,y3) ,title('图(3)'),grid on, subplot(2,2,4),plot(x4,y4) ,title('图(4)') ,grid on,

数学建模迭代实验报告

非 线 性 迭 代 实 验 报 告 一、实验背景与实验目的 迭代是数学研究中的一个非常重要的工具,通过函数或向量函数由初始结点生成迭代结点列,也可通过函数或向量函数由初值(向量)生成迭代数列或向量列。 蛛网图也是一个有用的数学工具,可以帮助理解通过一元函数由初值生成的迭代数列的敛散性,也帮助理解平衡点(两平面曲线交点)的稳定性。 本实验在Mathematica 平台上首先利用蛛网图和迭代数列研究不动点的类型;其次通过蛛网图和迭代数列研究Logistic 映射,探索周期点的性质、认识混沌现象;第三通过迭代数列或向量列求解方程(组)而寻求有效的求解方法;最后,利用结点迭代探索分形的性质。 二、实验材料 2.1迭代序列与不动点 给定实数域上光滑的实值函数)(x f 以及初值0x ,定义数列 )(1n n x f x =+,Λ,2,1,0=n (2.2.1) }{n x 称为)(x f 的一个迭代序列。 函数的迭代是数学研究中的一个非常重要的思想工具,利用迭代序列可以研究函数)(x f 的不动点。 对函数的迭代过程,我们可以用几何图象来直观地显示它——“蜘蛛网”。运行下列Mathematica 程序: Clear[f] f[x_] := (25*x - 85)/(x + 3); (实验时需改变函数) Solve[f[x]==x , x] (求出函数的不动点) g1=Plot[f[x], {x, -10, 20}, PlotStyle -> RGBColor[1, 0, 0], DisplayFunction -> Identity]; g2=Plot[x, {x, -10, 10}, PlotStyle -> RGBColor[0, 1, 0], DisplayFunction -> Identity]; x0=5.5; r = {}; r0=Graphics[{RGBColor[0, 0, 1], Line[{{x0, 0}, {x0, x0}}]}]; For[i = 1, i <= 100, i++, r=Append[r, Graphics[{RGBColor[0, 0, 1], Line[{{x0, x0}, {x0, f[x0]}, {f[x0], f[x0]}}] }]]; x0=f[x0] ]; Show[g1, g2, r, r0, PlotRange -> {-1, 20}, (PlotRange 控制图形上下范围) DisplayFunction -> $DisplayFunction] x[0]=x0; x[i_]:=f[x[i-1]]; (定义序列) t=Table[x[i],{i,1,10}]//N ListPlot[t] (散点图) 观察蜘蛛网通过改变初值,你能得出什么结论? 如果只需迭代n 次产生相应的序列,用下列Mathematica 程序: Iterate[f_,x0_,n_Integer]:= Module[{ t={},temp= x0},AppendTo[t,temp]; For[i=1,i <= n, i++,temp= f[temp]; AppendTo[t,temp]]; t ] f[x_]:= (x+ 2/x)/2; Iterate[f,0.7,10]

数值计算_第4章 解线性方程组的迭代法

第4章解线性方程组的迭代法 用迭代法求解线性方程组与第4章非线性方程求根的方法相似,对方程组进行等价变换,构造同解方程组(对可构造各种等价方程组, 如分解,可逆,则由得到),以此构造迭代关系式 (4.1) 任取初始向量,代入迭代式中,经计算得到迭代序列。 若迭代序列收敛,设的极限为,对迭代式两边取极限 即是方程组的解,此时称迭代法收敛,否则称迭代法发散。我们将看到,不同于非线性方程的迭代方法,解线性方程组的迭代收敛与否完全决定于迭代矩阵的性质,与迭代初始值的选取无关。迭代法的优点是占有存储空间少,程序实现简单,尤其适用于大型稀疏矩阵;不尽人意之处是要面对判断迭代是否收敛和收敛速度的问题。 可以证明迭代矩阵的与谱半径是迭代收敛的充分必要条件,其中是矩阵的特征根。事实上,若为方程组的解,则有 再由迭代式可得到

由线性代数定理,的充分必要条件。 因此对迭代法(4.1)的收敛性有以下两个定理成立。 定理4.1迭代法收敛的充要条件是。 定理4.2迭代法收敛的充要条件是迭代矩阵的谱半径 因此,称谱半径小于1的矩阵为收敛矩阵。计算矩阵的谱半径,需要求解矩阵的特征值才能得到,通常这是较为繁重的工作。但是可以通过计算矩阵的范数等方法简化判断收敛的 工作。前面已经提到过,若||A||p矩阵的范数,则总有。因此,若,则必为收敛矩阵。计算矩阵的1范数和范数的方法比较简单,其中 于是,只要迭代矩阵满足或,就可以判断迭代序列 是收敛的。 要注意的是,当或时,可以有,因此不能判断迭代序列发散。

在计算中当相邻两次的向量误差的某种范数小于给定精度时,则停止迭代计算,视为方程组的近似解(有关范数的详细定义请看3.3节。) 4.1雅可比(Jacobi)迭代法 4.1.1 雅可比迭代格式 雅可比迭代计算 元线性方程组 (4.2) 写成矩阵形式为。若将式(4.2)中每个方程的留在方程左边,其余各项移到方程右边;方程两边除以则得到下列同解方程组: 记,构造迭代形式

实验解线性方程组的基本迭代法实验

数值分析实验报告

0 a 12 K a 1,n 1 K a 2,n 1 U O M 则有: 第一步: Jacobi 迭代法 a 1n a 2n M , 则有: A D L U a n 1,n Ax b A A x D b L U (D L U)x b Dx (L U)x b x D (L U)x D b 令 J D (L U) 则称 J 为雅克比迭代矩阵 f D b 由此可得雅克比迭代的迭代格式如下: x (0) , 初始向量 x (k 1) Jx (k) f ,k 0,1,2,L 第二步 Gauss-Seidel 迭代法 Ax b (D L U )x b (D L)x Ux b x (D L) Ux (D L) b A D L U a 11 a 12 L a 1n a 11 A a 21 a 22 L a 2n a 22 M MM MO a n1 a n2 L a nn a 11 得到 D a 22 O a nn 由 a 21 0 M M O a n 1,1 a n 1,2 L 0 a nn a n1 a n2 L a n,n a 21 L M M O a n 1,1 a n 1,2 L a n1 a n2 L a n,n 1 a 12 K a 1,n 1 a 1n 0 K a 2,n 1 a 2n O M M a n 1,n 10

令 G (D L) U ,则称G 为Gauss-Seidel 迭代矩阵 f (D L) b 由此可得 Gauss-Seidel 迭代的迭代格式如下: x (0) , 初始向量 第三步 SOR 迭代法 w0 AD L U 1 ( D 1 wL ((1 w)D wU )) (D 1 wL) ((1 w)D wU ) w w w 令M w 1 (D wL), N 1 ((1 w)D wU )则有:A MN w w Ax b AM L W N M (M N )x b Mx Nx b x M Nx M b N M, 令W f Mb 带入 N 的值可有 L W ((1 w)D wU) (D wL) 1((1 w)D wU) (D wL) f 1 b w 1(D wL) 1b 1 (D wL) w 称 L W 为 SOR 迭代矩阵,由此可得 SOR 迭代的迭代格式如下: x (0) ,初始向量 二、算法程序 Jacobi 迭代法的 M 文件: function [y,n]=Jacobi(A,b,x0,eps) %************************************************* %函数名称 Jacobi 雅克比迭代函数 %参数解释 A 系数矩阵 % b 常数项 % x0 估计解向量 x (k 1) Gx (k) f ,k 0,1,2,L (k 1) f,k 0,1,2,L

数学实验迭代:分形

迭代:分形 姓名: 学号: 班级:数学与应用数学4班

实验报告 实验目的:以迭代的观点介绍分形的基本特性以及生成分形图形的基本方法,使读者在欣赏美丽的分形图案的同时对分形几何这门学科有一个直观的了解,并从哲理的高度理解这门学科诞生的必然,激发读者探寻科学真理的兴趣。 实验环境:Mathematica软件 实验基本理论和方法: 在19世纪末及20世纪初,一些数学家就构造出一些边界形状极不光滑的图形,而这类图形的构造方式都有一个共同的特点,即最终图形F都是按照一定的规则R通过对初始图形不断修改得到的。其中最有代表性的图形是Koch曲线,Koch曲线的构造方式是:给定一条直线段,将该直线段三等分,并将中间的一段用以该线段为边的等边三 角形的另外两条边代替,得到图形,然后再对图形中的每一小段都按上述方式修改,以至无穷。则最后得到的极限曲线即是所谓的Koch曲线。 生成元:Koch曲线的修改规则R是将每一条直线段用一条折线代替,我们称为该分形的生成元。 分形的基本特性完全由生成元确定,因此,给定一个生成元,我们就可以生成各种各样的分形图形。 Julia集绘制方法:(1)设定初值p,q,一个最大的迭代次数N,图形的分辨率的大小a,b,和使用的颜色数(如K=16)(或者给定灰度 级L);(2)设定一个上界值;(3)将矩形区域

分成的网格,分别以每个网格点, ,,,作为初值利用riter做迭代(实际上,只需对满足的初值点做迭代)。如果对所有,,则将图形的像素点用黑 色显示,否则,如果从迭代的某一步开始有,则用 modK种颜色显示相应像素(或者用相应的灰度级显示)。Mandelbrot集绘制方法:设定一个最大的迭代次数N,图形的分辨率的大小a,b,和使用的颜色数(如K=16)(或者给定灰度级L);(2) 设定一个上界值;(3)将矩形区域分成 的网格,分别以每个网格点,,, ,作为参数值利用riter做迭代(实际上,只需对的初值点做迭代),每次迭代的初值均取为。如果对所有,,则将图形的像素点用黑色显示,否则,如果从迭代的某一步开始有,则用modK种颜色显示相应像素(或者用相应的灰度级显示)。IFS迭代绘制分形:设计算机屏幕的可视窗口为 , 按分辨率大小的要求将分成的网格,网格点为,这里 ,, ,, 用表示矩形区域,假设我们采取具有

相关文档
最新文档