计算方法-迭代法讲义

合集下载

计算方法(方程组的迭代法)

计算方法(方程组的迭代法)
定理 5 如果 A 是对称正定矩阵,则线性方
程组 Ax b 的 Seidel 迭代对任何初始向量 x0 都收敛。
利用上述三个判别定理(定理 3,4,5),可以 根据线性方程组 Ax b的系数矩阵 A的特点,可以 方便地判断出对应的 Jacobi 迭代和 Seidel 迭代 是否收敛,但要注意它们都是充分条件。
…… ………
x=
.. x2
cn1 cn3
cn4 … 0
xn
a11
D= a22..
g=
ann
g1 .g. 2
易看出:BJ =D-1(D-A)=I-D-1A
gn
Jacobi迭代公式
xi(k 1 )jn 1a a ii ijx(jk)a b iii j i
i 1 ,2 , ,n
Jacobi迭 代 的 矩 阵 格 式 x(k1) BJx(k)gJ
这说明 k D L U 也是严格对角占优矩阵。易证严
格对角占优矩阵是非奇异矩阵,从而有
det k
DL
U
0
。这与式(*)矛盾,矛盾说明
k 1。由 k 的任意性,可得 BS 的谱半径 BS 1。
根据定理 5.2,可知 Seidel 迭代对任意的初始向 量 x0 都收敛。
第三个判别定理针对线性方程组的系数 矩阵也是比较特殊的矩阵,这种矩阵称为对称 正定矩阵。
反复利用上式,有:
xk1 x B2 xk1 x Bk1 x0 x (1)
由 x0 的任意性及lim xk x,可得 k
lim Bk 0
k
(2)
所以lim Bk 0,又因定理 1 及Bk Bk Bk ,所 k
以 B 1,必要性得证。
反过来,假设 B 1,则矩阵 I B 是非奇异

2.2 迭代法

2.2 迭代法

x k +1 = 3 x k + 1
计算结果如下: 计算结果如下:
k=0,1,2,3…….
计算方法
k 0 1 2 3 4
xk
1.5 1.35721 1.33086 1.32588 1.32494
k 5 6 7 8
xk
1.32476 1.32473 1.32Байду номын сангаас72 1.32472
精确到小数点后五位
x = 1.32472
′( x* ) = ϕ ′′( x* ) = L = ϕ ( p−1) ( x* ) = 0, ϕ ( p ) ( x* ) ≠ 0 ϕ 邻域是p阶收敛的。 则迭代过程在 x * 邻域是p阶收敛的。
证: 由于 ϕ ′( x * ) = 0 * ′( x* ) < 1 , 即在 x 邻域 ϕ ϕ ( xk ) 在 x * 处 有局部收敛性, 所以 xk+1 = ϕ( xk ) 有局部收敛性, 将 泰勒展开
计算方法
一、迭代法的基本思想: 迭代法的基本思想: 为求解非线性方程f(x)=0的根,先将其写成便于 的根, 为求解非线性方程 的根 迭代的等价方程
x = ϕ ( x)
的连续函数。 其中ϕ ( x ) 为x的连续函数。 的连续函数
(2.3)
计算方法
即如果数 α 使 f(x)=0, 则也有 α = ϕ (α ) , 反之, 反之, 若α = ϕ (α ) ,则也有 f (α ) = 0 的右端, 任取一个初值 x ,代入式 x = ϕ ( x ) 的右端, 得到 0
ϕ ′( x ) ≤ L < 1
计算方法
则对于任意的初始值 x0 ∈ S ,由迭代公式 收敛于方程的根。 产生的数列 { xn } 收敛于方程的根。 (这时称迭代法在 α 的S邻域具有局部收敛性。) 邻域具有局部收敛性。)

计算方法第六章(迭代法)

计算方法第六章(迭代法)
2 * k
3、插值加速法
由线性插值公式:
x xk x xk 1 y xk xk 1 xk 1 xk xk xk 1
x xk x xk 1 x xk xk 1 xk 1 xk xk xk 1
xk 1 xk 1 xk 2 x xk 1 2 xk xk 1
2.102599958448522 2.094749937881704 2.094556446501749 2.094551657513653 2.094551538972266 2.094551536038016
x=2.5 10 y=x x=(2*y+5)**(1.0/3.0) if (abs(x-y).lt.0.00000001) then goto 15 endif 15 x=2.5 goto 10 20 y=x x=(2*y+5)**(1.0/3.0) x=1.15*x+(1.0-1.15)*y if (abs(x-y).lt.0.00000001) then goto 30 endif goto 20 30 end
1 2 f ( ) f ( xk ) f ( xk )( xk ) f ( xk )( xk ) 2! 1 (n) 1 n f ( xk )( xk ) f ( n 1) ( k )( xk ) n 1 n! (n 1)!
f ( ) f ( xk ) f ( xk )( xk )
f ( xk ) f ( xk ) 2 改进牛顿法: xk 1 xk f ( xk ) 3 f ( xk ) 2 f ( xk )
牛顿迭代法的收敛性: 牛顿迭代法二阶收敛,两种改进牛顿迭代法三阶收敛
1 0 f ( ) f ( xk ) f ( xk )( xk ) f ( xk )( xk ) 2 2!

2.2 迭代法

2.2 迭代法
* lim | x xk | 0 要证结论(1)成立,即要证 k
首先用归纳假设证明如下不等式
| x* xk | Lk | x* x1 |
38
当k=1时 x x1 L x x0 ,已证成立。
k 1 x x L x x0 成立,可得 假设 k 1
不动点迭代的几何解释 y=f(x)=x y=g(x)
38
不动点判定定理
设g是一连续函数,且 { pn } 是由不动点迭代 n 0
生成的序列。若 lim pn p ,则p是g(x)的不动点
n
pn 1 p pn p ,则 lim 证:lim n n
g ( p ) g (lim pn ) lim g( pn ) lim pn1 p
1 1 x xk x k 1 x k ( x k ) ( x k 1 ) 1 L 1 L L Lk x k x k 1 x1 x0 1 L 1 L

L越小,收敛越快
38
不动点迭代的图形解释
一般来说从 f ( x ) 0 , 构造 ( x )不止一种,有的
38
由介值定理,存在 x [a , b] 使 f ( x ) 0



x ( x ).
②设方程 x ( x ) 还有一根 , 即 a (a ). 则由微分中值定理有
x ( x ) ( ) ( )( x ) L x
x4 2x 2 x 3 0 x 2 ( x)
x 4 1
x 3 ( x) x4 2x2 3
(其中第二式 x4 2 x 2 1=x 4 )

常用算法(一)——迭代法

常用算法(一)——迭代法

常用算法——迭代法一、迭代法迭代法是用于求方程或方程组近似根的一种常用的算法设计方法。

设方程为f(x)=0,用某种数学方法导出等价的形式x=g(x),然后按以下步骤执行:(1)选一个方程的近似根,赋给变量x0;(2)将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0;(3)当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤(2)的计算。

若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的x0就认为是方程的根。

上述算法用C程序的形式表示为:【算法】迭代法求方程的根{ x0=初始近似根;do {x1=x0;x0=g(x1);/*按特定的方程计算新的近似根*/} while ( fabs(x0-x1)>Epsilon);printf(“方程的近似根是%f\n”,x0);}迭代算法也常用于求方程组的根,令X=(x0,x1,…,xn-1)设方程组为:xi=gi(X) (I=0,1,…,n-1)则求方程组根的迭代算法可描述如下:【算法】迭代法求方程组的根{ for (i=0;i<n;i++)x=初始近似根;do {for (i=0;i<n;i++)y=x;for (i=0;i<n;i++)x=gi(X);for (delta=0.0,i=0;i<n;i++)if (fabs(y-x)>delta) delta=fabs(y-x);} while (delta>Epsilon);for (i=0;i<n;i++)printf(“变量x[%d]的近似根是%f”,I,x);printf(“\n”);}具体使用迭代法求根时应注意以下两种可能发生的情况:(1)如果方程无解,算法求出的近似根序列就不会收敛,迭代过程会变成死循环,因此在使用迭代算法前应先考察方程是否有解,并在程序中对迭代的次数给予限制;(2)方程虽然有解,但迭代公式选择不当,或迭代的初始近似根选择不合理,也会导致迭代失败。

22第二节 迭代法

22第二节 迭代法

上述令p→∞, 及limxk+p=x* (p→∞)即得第一式.
L x xk xk xk 1 1 L

数学学院 信息与计算科学系
3 2 f ( x ) x 4 x 10 0 在 例2 用迭代法求方程
[1,2] 内的一个近似根,取初始近似值 x0 1.5

原方程的等价方程可以有以下不同形式
x ( x ) ( ) ( )( x ) L x
此式仅当 x 0 才能成立, 因此 x 。 ( 2) 再证迭代格式 xk 1 ( xk ) 收敛 任取 x0∈[ a, b ],由微分中值定理,有
数学学院 信息与计算科学系
10 x n 1 4 xn xn 1 3 xn 1 10 xn 2 10 xn 1 4 xn
数学学院 信息与计算科学系
考察四种迭代法在根附近的收敛情况,取根的 x0 1.5。 近似值为 解
(1) ( x ) x x 3 4 x 2 10
( x ) 1 3 x 2 8 x (1.5) 17.75 1
e k 1 c ( k , c 0) p ek 则称迭代格式 xk 1 ( xk ) 是 p 阶收敛的.
特别地, p = 1时称为线性收敛, p = 2 时称为二阶(平方)收敛,
p>1时称为超线性收敛. 显然, 收敛阶越大, 收敛越快
利用微分中值定理及泰勒展式可得下面的定理3.
数学学院 信息与计算科学系
定理 3
x x ( x ) 设x 为 之根,在 的邻域 U内
x x ( x ) 在[a , b]上有唯一根 ;
(2) 对任意迭代初值 x0∈[a , b],迭代序列 xk 1 ( xk ) ( k 0,1, 2,) 收敛于 x 。

计算方法迭代法PPT课件

计算方法迭代法PPT课件
第8页/共33页
不动点原理(迭代过程收敛)
•定理3.1 (不动点原理) 设映射g(x)在[a,b]上有连 续的一阶导数且满足
1o 封闭性:x [a,b], g(x) [a,b] ,
2o 压缩性: L (0,1)使对x [a,b], |g'(x)|L,
则 在 [a,b] 上 存 在 唯 一 的 不 动 点 x* , 且 对 x0
1 x j 1
g~mj 0 g~mj 0
x 1
G~
n g~mj
j 1
n g~mj x j
j 1
max
1in
n j 1
g~ij x j
G~x
第27页/共33页
Gauss-Seidel迭代收敛性证明
记 那么 存在k使得
,其中y迭代G矩~阵x y D1(Ly Ux)
G~ (L D)1U
x x(k ) k 0
第19页/共33页
2 Jacobi迭代和Gauss-Seidel迭代
• 例3.7
• 解:变形
1x01x1
x2 2x3 7.2 10x2 2x3 8.3
x1 x2 5x3 4.2
x1 x2
0.72 0.1x2 0.83 0.1x1
0.2x3 0.2x3
第24页/共33页
3 迭代的收敛性
• 定理3.4 设G的某种范数||G||<1,则x=Gx+f存在唯一解,且对任意初值,迭代序列 x(k)= Gx (k-1) + f
收敛于x*,进一步有误差估计式
k
x x G x x G • 证明思路:(1)解的存在唯一(k性) ; (2)解的收敛性;((3k))误差估(k计1式) (习题)。

线性代数方程组迭代法PPT课件

线性代数方程组迭代法PPT课件

超松弛法
收敛速度快
总结词
总结词
计算量较大
ABCD
详细描述
超松弛法具有较快的收敛速度,尤其对于大型线 性方程组,能够显著减少迭代次数。
详细描述
由于超松弛法的计算量较大,因此在实际应用中 可能需要考虑计算效率的问题。
CHAPTER 04
迭代法的实现步骤
初始化
设置初值
为方程组的解向量设定一个初始值。
迭代法的应用场景
当方程组的系数矩阵难以直接求解时 ,迭代法可以作为一种有效的替代方 案。
在科学计算、工程技术和经济领域中 ,许多问题可以转化为线性代数方程 组求解,而迭代法在这些领域有广泛 的应用。
迭代法的优缺点
优点
迭代法通常比直接法更加灵活和通用,对于大规模和高维度的线性代数方程组, 迭代法更加高效。
缺点
迭代法需要选择合适的迭代公式和参数,并且需要满足收敛条件,否则可能无 法得到正确的解。此外,迭代法的计算过程比较复杂,需要较高的计算成本。
CHAPTER 02
迭代法的基本原理
迭代法的数学模型
迭代法是一种求解线性代数方程组的数值方法,通过不断迭代逼近方程的 解。
迭代法的数学模型通常表示为:$x_{n+1} = T(x_n)$,其中$x_n$表示第 $n$次迭代时的近似解,$T(x)$表示迭代函数。
03
非线性方程组的迭代法在求解优化问题、控制问题 等领域有广泛应用。
在优化问题中的应用
01
迭代法在优化问题中也有广泛应用,如求解无约束优化问题、 约束优化问题和多目标优化问题等。
02
常见的优化问题迭代法包括梯度下降法、牛顿法和共轭梯度法
等。
这些方法通过不断迭代来逼近最优解,广泛应用于机器学习、

迭代法

迭代法

2 迭代法2.1 迭代法的一般概念迭代法是数值计算中一类典型方法,不仅用于方程求根,而且用于方程组求解,矩阵求特征值等方面。

迭代法的基本思想是一种逐次逼近的方法。

首先取一个精糙的近似值,然后用同一个递推公式,反复校正这个初值,直到满足预先给定的精度要求为止。

对于迭代法,一般需要讨论的基本问题是:迭代法的构造、迭代序列的收敛性天收敛速度以及误差估计。

这里,主要看看解方程迭代式的构造。

对方程(1.1),在区间],[b a 内,可改写成为:)(x x ϕ= (2.1)取],[0b a x ∈,用递推公式:)(1k k x x ϕ=+, Λ,2,1,0=k(2.2)可得到序列:∞==0210}{,,,,k k k x x x x x ΛΛ(2.3) 当∞→k 时,序列∞=0}{k k x 有极限x ~,且)(x ϕ在x ~附近连续,则在式(2.2)两边极限,得,)~(~x x ϕ=即,x ~为方程(2.1)的根。

由于方式(1.1)和方程(2.1)等价,所以,x x ~*= 即,*lim x x k k =∞→ 式(2.2)称为迭代式,也称为迭代公式;)(x ϕ可称为迭代函数。

称求得的序列∞=0}{k k x为迭代序列。

2.2 程序和实例下面是基于MATLAB 的迭代法程序,用迭代格式)(1n n x g p =+,求解方程)(x g x =,其中初始值为0p 。

**************************************************************************function[p,k,err,P]=fixpt(f1021,p0,tol,max1)% f1021是给定的迭代函数。

% p0是给定的初始值。

% tol 是给定的误差界。

% max1是所允许的最大迭代次数。

% k 是所进行的迭代次数加1。

% p 是不动点的近似值。

% err 是误差。

% P = {p1,p2,…,pn}P(1) = p0;for k = 2:max1P(k) = feval('f1021', P(k-1));k, err = abs(P(k) - P(k-1))p = P(k);if(err<tol),break;endif k == max1disp('maximum number of iterations exceeded');endendP=P;****************************************************************************例2.1 用上述程序求方程0sin 2=-x x 的一个近似解,给定初始值5.00=x ,误差界为510-。

计算方法方程迭代法54页PPT

计算方法方程迭代法54页PPT
计算方法方程迭代法
51、没有哪个社会可以制订一部永远 适用的 宪法, 甚至一 条永远 适用的 法律。 ——杰 斐逊 52、法律源于人的自卫本能。——英 格索尔
53、人们通常会发现,法律就是这样 一种的 网,触 犯法律 的人, 小的可 以穿网 而过, 大的可 以破网 而出, 只有中 等的才 会坠入 网中。 ——申 斯通 54、法律就是法律它是一座雄伟的大 夏,庇 护着我 们大家 ;它的 每一块 砖石都 垒在另 一块砖 石上。 ——高 尔斯华 绥 55、今天的法律未必明天仍是法律。 ——罗·伯顿
1、最灵繁的人也看不见自己的背脊。——非洲 2、最困难的事情就是认识自己。——希腊 3、有勇气承担命运这才是英雄好汉。——黑塞 4、与肝胆人共事,无字句处读书。——周恩来 5、阅读使人充实,会谈使人敏捷,写作使人精确。——培根
Байду номын сангаас

第2章迭代法

第2章迭代法
(2) (ex ) 0.6 1 0.5 x 0.6 e 0.5 0.606 e 0.6 0.5488
图 2.5
表 2―3
因此用迭代公式
由表可见
x exk k 1
为方程
x x10
x ex
例 对方程 x3 x 2 1 0 在区间[1.4,1.6]建立两种收敛的迭代格
例 求方程 x=e –x在x=0.5附近的一个根,按5位小数计算, 结果的精度要求为ε=10 –3.

迭代公式 xk+1=e –xk ,取φ (x)=e –x,
| (0.5) || (e0.5 ) | e0.5 0.61 1
迭代公式 xk+1=e –xk 收敛。
x0=0.5,
一个实根 x*。
微分中值定理 如果函数 f (x) 在 [a, b] 连续,在
( a,b)可微,则在( a,b)内至少有一点 存在,使
f (b) f (a ) f ( )(b a )
a b
§2 迭代法
迭代法的基本思想是:首先将方程(2.1)改写成某种 等价形式,由等价形式构造相应的迭代公式,然后选取方 程的某个初始近似根x0,代入迭代公式反复校正根的近 似值,直到满足精度要求为止。迭代法是一种数值计算 中重要的逐次逼近方法。
lim
k
ek 1 ek p
c
则称序列 xk 是 p 阶收敛的。c 称渐进误差常数。 特别地, p 1称为线性收敛, p 2 称为平方
收敛, p 1时称为超线性收敛。
迭代函数的导数和收敛阶。
定理 对迭代过程 xk1 (xk ) ,若 ( p) (x) 在所求根 x* 邻近
33 (1 1.42 )2

常用算法——迭代法

常用算法——迭代法

常用算法——迭代法迭代法是一种常见的算法设计方法,它通过重复执行一定的操作来逐步逼近问题的解。

迭代法是一种简单有效的求解问题的方法,常用于求解数值问题、优化问题以及函数逼近等领域。

本文将介绍迭代法的基本概念、原理以及常见的应用场景。

一、迭代法的基本概念迭代法的思想是通过反复应用一些函数或算子来逐步逼近问题的解。

对于一个需要求解的问题,我们首先选择一个初始解或者近似解,然后通过不断迭代更新来逼近真实解。

迭代法的核心是找到一个递推关系,使得每次迭代可以使问题的解越来越接近真实解。

常见的迭代法有不动点迭代法、牛顿迭代法、梯度下降法等。

这些方法的求解过程都是基于迭代的思想,通过不断逼近解的过程来得到问题的解。

二、迭代法的原理迭代法的基本原理是通过不断迭代求解迭代方程的解,从而逼近问题的解。

迭代法的求解过程通常分为以下几个步骤:1.选择适当的初始解或者近似解。

初始解的选择对迭代法的收敛性和效率都有影响,一般需要根据问题的特点进行合理选择。

2.构建递推关系。

通过分析问题的特点,构建递推关系式来更新解的值。

递推关系的构建是迭代法求解问题的核心,它决定了每次迭代如何更新解的值。

3.根据递推关系进行迭代。

根据递推关系式,依次更新解的值,直到满足收敛条件为止。

收敛条件可以是解的变化小于一定阈值,或者达到一定的迭代次数。

4.得到逼近解。

当迭代停止时,得到的解即为问题的逼近解。

通常需要根据实际问题的需求来判断迭代停止的条件。

三、迭代法的应用迭代法在数值计算、优化问题以及函数逼近等领域有广泛的应用。

下面将介绍迭代法在常见问题中的应用场景。

1.数值计算:迭代法可以用于求解方程的根、解线性方程组、求解矩阵的特征值等数值计算问题。

这些问题的解通常是通过迭代的方式逼近得到的。

2.优化问题:迭代法可以应用于各种优化问题的求解,如最大值最小化、参数估计、模式识别等。

迭代法可以通过不断调整参数的值来逼近问题的最优解。

3.函数逼近:迭代法可以应用于函数逼近问题,通过不断迭代来逼近一个函数的近似解。

迭代解法(全章)讲解ppt课件

迭代解法(全章)讲解ppt课件

10/18/2023
第六章 线性方程组的迭代解法
21
§3 常用的三种迭代解法
一、 Jacobi迭代法
对于线性方程组 Ax=b
(1)
设 det(A)≠ 0 ,aii ≠ 0,i=0,1,2,…,n ,按照如下方式对A
进行分裂:
A=L+D+U
(2)
10/18/2023
第六章 线性方程组的迭代解法
22
则由 Ax=b 得到 (L+D+U) x=b >D x=-(L+U)x+b
或 向量序列 {x(k)} 收敛于向量 x* ,当且仅当它的每一 个分量序列收敛于x* 的对应分量,即
10/18/2023
第六章 线性方程组的迭代解法
7
二、矩阵的范数
矩阵范数是反映矩阵“大小”的一种度量,具体定义如下。 定义6.3 设||·||是以n阶矩阵为变量的实值函数,且满足 条件:
(1) || A ||≥0,且|| A ||=0时,当且仅当A=0
矩阵1-范数:
列和
矩阵2-范数:
矩阵∞-范数:
行和
以上三种范数都满足矩阵范数的条件,通常将这三种 矩阵范数统一表示为||A ||p,P=1 ,2 ,∞。
10/18/2023
第六章 线性方程组的迭代解法
9
例6.2 设矩阵
求矩阵A的范数||A ||p,P=1 ,2 ,∞ 。 解 根据定义
由于 则它的特征方程为:
25
对于 n 元线性方程组 其一般式为:
从中解出:
得Jacobi迭代格式
通过|| x(k+1)-x(k)||<ε 控制迭代次数。
10/18/2023

第2节 迭代法

第2节  迭代法

x * xk 1 4)lim g( x*) k x * x k
1 x * xk xk 1 xk 1 L
例8.3 确定xex –1=0 在[0.5,0.65] 内是否存在唯 一实根,如果存在,试构造一收敛的迭代格式,并 求出近似解,精度要求为ε=10-5 。 解:将原方程改写成如下的形式 x = e-x,则g(x) = e-x
x22= 0.56714303 | x21 - x22 |=0.00000072< 0.000001=10-6
关于解的唯一性的判别,还可以借助于根的存 在性定理。我们用另一种方法完成上面的例子。 解法二:令 f(x)=xex-1, 有 f(0.5)= -0.176 , f(0.65)= 0.5220
i 11 12 13 14 15 16 17 18 19 20 21
xi 0.56727720 0.56706735 0.56718636 0.56711886 0.56715714 0.56713543 0.56714774 0.56714076 0.56714472 0.56714248 0.56714375
1
– xk 求
0.61k 0.61k 于是 x * xk x1 x0 0.10653 10 5 1 0.61 1 0.61 5 0.39 10 k 0.61 3.66 10 5 0.10653
两边取对数得到: k lg 0.61<-5+lg 3.66 查表计算得到: -0.21 k <-4.43
定理8.2 (迭代法局部收敛性定理):如果方程 x=g(x) 满足条件: 1). g(x)在方程的解x* 的邻域内连续可微; 2). |g’(x*)|< 1 (由于g(x)在x* 的邻域内连续可微, 故一定存在 L 使得 |g’(x*)| ≤L < 1 ) ;

C语言迭代法详细讲解

C语言迭代法详细讲解

迭代法迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。

迭代法又分为精确迭代和近似迭代。

“二分法”和“牛顿迭代法”属于近似迭代法。

迭代算法是用计算机解决问题的一种基本方法。

它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。

利用迭代算法解决问题,需要做好以下三个方面的工作:一、确定迭代变量。

在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。

二、建立迭代关系式。

所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。

迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。

三、对迭代过程进行控制。

在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。

不能让迭代过程无休止地重复执行下去。

迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。

对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。

例 1 :一个饲养场引进一只刚出生的新品种兔子,这种兔子从出生的下一个月开始,每月新生一只兔子,新生的兔子也如此繁殖。

如果所有的兔子都不死去,问到第12 个月时,该饲养场共有兔子多少只?分析:这是一个典型的递推问题。

我们不妨假设第 1 个月时兔子的只数为u 1 ,第 2 个月时兔子的只数为u 2 ,第 3 个月时兔子的只数为u 3 ,……根据题意,“这种兔子从出生的下一个月开始,每月新生一只兔子”,则有u 1 = 1 ,u 2 =u 1 +u 1 ×1 = 2 ,u 3 =u 2 +u 2 ×1= 4 ,……根据这个规律,可以归纳出下面的递推公式:u n =u n - 1 × 2 (n ≥ 2)对应u n 和u n - 1 ,定义两个迭代变量y 和x ,可将上面的递推公式转换成如下迭代关系:y=x*2x=y让计算机对这个迭代关系重复执行11 次,就可以算出第12 个月时的兔子数。

08-课件:55.2 迭代法

08-课件:55.2 迭代法

大连理工大学罗晓芳算法思想:利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,每次执行这组指令(或步骤)时,都从变量原值推出一个新值。

关键步骤:1、确定迭代变量:也就是直接或间接地不断由旧值递推出新值的变量。

2、建立迭代关系式: 指如何从变量的前一个值推出其下一个值的公式(或关系)。

3、对迭代过程进行控制。

在什么时候结束迭代过程?迭代算法一般结构小猴在一天内摘了若干个桃子,当天吃掉一半多一个;第二天吃掉剩下的一半桃子多一个;以后每天都吃尚存桃子的一半零一个。

直到第7天早上要吃时,只剩下一个了,问小猴共摘了多少个桃子?例4:小猴吃桃子问题问题分析:先从最后一天推出倒数第二天的桃子,再从倒数第二天推出倒数第三天的桃子,……设第n天的桃子为x,它是前一天的桃子数的一半少一个x n = xn-1/2-1前一天的桃子数为:xn-1=(xn+1)×2(递推公式)设迭代变量x x=(x+1)*2#include "stdio.h"int main(){int i, x;x=1;printf("第7 天的桃子数为:1只\n");for(i=6; i>=1; i--){x=(x+1)*2;printf("第%d 天的桃子数为:%d 只", i , x);printf("\n");}return 0;小猴吃桃子问题迭代关系,迭代:原值推出新值//迭代变量赋初值思考:小猴在一天内摘了94个桃子,当天吃掉一半多一个;以后每天都吃尚存桃子的一半多一个,问小猴直到第几天早上要吃时只剩下一个了?例5:用迭代法求a 的算术平方根。

公式:x n =0.5*(x n-1+a/x n-1)确定初值为x0,新值为x1 取a/2为x0的初值,迭代结束条件:|x1-x0|<=10-5.#include <stdio.h>#include <math.h>int main( ){ float a, x0, x1;scanf("%f",&a);x0=a/2; x1=(x0+a/x0)/2; while (fabs(x1-x0)>1e-5){x0=x1;x1=(x0+a/x0)/2; }printf("sqrt(a)=%f\n", x1);零非零|x1-x0|>10-5?x0=x1x1=(x0+a/x0)/2x0=a/2x1=(x0+a/x0)/2输出a ,x1迭代:原值推出新值// 迭代变量赋初值//新值变原值//将循环结束条件取反1.分析:程序采用逐位分离的方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算 xi(k1) 时,
x(k 1) j
(
j
i)的值已经算出
所以迭代公式可以修改成:
X (k1) D1LX(k1) D1UX (k) D1b
或写成分量形式
i1
n
x(k1) i
(bi
aij
x
( j
k 1)
aij x(jk) ) / aii
j 1
j i 1
7
把矩阵A 记为 A = D – L – U ,则方程组等价为 (D – L)X = UX+b , 从而有: X = (D – L)-1 UX + (D – L)-1b
2
4.1、雅可比(Jacobi)迭代法
把矩阵A 记为 A = D – L – U ,则方程组等价为
DX = (L+U)X+b ,
若 det(D)0, 则有:
X = D-1(L + U)X + D-1b
得到雅可比迭代矩阵:
BJ = D-1(L + U),b’= D-1b 从而,得到雅可比迭代公式:
注意:这里的对角 矩阵的D-1是非常 容易计算的。
(精度要求)
得到满足要求的近似解。
例子:p.55(p.52)例8 ,10-3的精度,迭代10 次。
3x1x12xx22
5 5
x( 1
k
1)
x(k) 2 3
5 3
x2( k
1)
x(k) 1
2
5 2
x(0 1
x2(0
) )
0 0
6
4.2、高斯-赛德尔迭代法 雅可比方法中
X (k1) D1(L U) X (k) D1b
|| B || 0.62875, || B ||1 0.648065375,
|| B ||2 0.52151, (B) 0.1285
收敛,迭代次数 7。
(B0) 0.36 (BGS ) 0.13
23
p.65(p.62)例11:
4 2 4
2 17 10
4 10 X 9
10
X(k+1)= (D-L)-1[(1- )D+U]X(k) + (D-L)-1b 迭代矩阵 B= (D-L)-1[(1- )D+U]
18
其中 是松弛因子,当 >1 时为超松弛,当 <1 时为低松弛,当 =1 时即为高斯-赛德尔迭代法。
SOR方法的分量形式: 由G-S迭代有
i 1
n
x(k1) i
举例:
8 4
x1 x1
3x2 2x3 11x2 x3
20 33
6 x1 3 x2 12x3 36
精确解
3 2 1
13
(1)简单迭代法
8 3 2 7 3 2 B I A I 4 11 1 4 10 1
6 3 12 6 3 11 20 b' 33 36
5 3
x2( k
1)
x(k 1) 1
2
5 2
x(0 1
x2(0
) )
0 0
8
➢ 雅可比方法与高斯-赛德尔方法的比较 • 收敛与否? • 收敛快慢?
当 A 的主对角线元素全为正,其它元素都≤0时, G-S方法与J方法同收敛或否,且G-S收敛快。
当 A 的元素全为正时,G-S方法优于J方法。
可以试验一下一般情况下两种算法的比较,参见 GSvsJ.m和JvsGS.m两个程序。
(bi
a x( k1) ij j
aij
x
(k j
)
)
/
aii
j 1
j i 1
i 1
n
x(k) i
(bi
a x( k1) ij j
aij
x
( j
k
)
)
/
aii
j 1
ji
x~i(k )
19
计算新的近似值,得到SOR方法:
x( k1) i
x~i(k )
(1 ) xi(k )
i 1
n
x(k) i
(bi
a x( k1) ij j
aij
x
( j
k
)
)
/
aii
j 1
ji
不同的 的值会影响SOR迭代的收敛性、收敛 速度。
20
例(7)SOR迭代法
8 3 2 A 4 11 1
6 3 12
取 =1.5,则迭代矩阵:
1 / 2 9 / 16
3 / 8
B 3 /11 71/ 88 15 / 44
§4、迭代法 解 AX = b 等价形式: X = BX + b’ 得到迭代公式: X(k+1)=B X(k)+b’ 从而由某个初值 X(0)开始逐次计算得到序列 {X(k)}。 B 称为迭代矩阵。 例如,简单迭代法:
X = X-AX+b = (I-A)X + b = BX + b 得到迭代矩阵 B = I-A , b’= b 。
(4)Gauss-Seidel迭代法
0 B 0
0
3/8 3 / 22 27 / 176
1/ 4 2 / 11
7
/
88
2.5
b'
2.0909
1.22727
|| B || 0.625, || B ||1 0.66, || B ||2 0.53, (B) 0.13
收敛,迭代次数8。
3 / 11 21/ 176 61/ 176
15 / 4
b'
27 /11
135 / 176
|| B || 23 / 16 1.4375, || B ||1 131/ 88 1.49,
|| B ||2 1.23, (B) 0.71
收敛,迭代次数45。
21

2
1.03453 ,则迭代矩阵:
定理8 Bk 0, k 的充要条件是:
(B) 1
且 (B) 越小,收敛越快。
10
定理5 若迭代公式 X(k+1) = BX(k)+b’ 的迭代矩阵 B 的某个算子范数 || B || = q < 1,则: (1)对任意的初始向量 X(0), 该迭代收敛于原方 程的唯一解 X*;
(2)
||
X*
4x1 2x2 8x3 24 9x3 24 4x1 2x2 x3
15
1 3 / 4 2 / 4
B
4
/
9
2 / 9
1/ 9
4 / 9 2 / 9 1 / 9
5
b
'
33
/
9
24 / 9
|| B || 2.25, || B ||1 1.89, || B ||2 1.37 , (B) 0.85
17
4.4 逐次超松弛迭代法
AX = b AX = b 记A=D–L–U
(D – L – U)X = b DX - LX = UX + b DX - LX = (1- )DX + UX + b (D - L)X = [(1- )D + U]X + b X= (D - L)-1[(1- )D+U]X+ (D - L)-1b 得到逐次超松弛迭代(SOR)公式:
什么时候收敛?收敛速度如何?
1
如果收敛,设:
lim X (k) X * lim || X (k) X * || 0
k
k
则: X * BX * b ' 就是原方程组的解。
X (k1) X * BX (k) BX *
B(X (k) X * ) B X (k) X *
所以,当 B q 1 时,迭代收敛。且有: || X (k ) X * || 1 || X (k1) X (k ) || 1 q
25
作业: (5)第三章p.73(p.69)第10题;
上机作业: (4)p.182(p.154)第7题。
26
|| B ||2 0.5560, (B) 0.153
收敛,迭代次数 8。
(B0 ) 0.36 (BGS ) 0.13
22
取 0.99 ,则迭代矩阵:
0.01 B 0.0036
0.37125 0.12365
0.2475 0.1791
0.004059 0.153165375 0.8818525
SOR迭 代( 1.3545), 17次 , (B) 0.452847
BSOR (D L)1[(1 )D U ] I (D L)1 A
定理9: 若系数矩阵的主对角元素全不为0,则 0<<2 是松弛法收敛的必要条件。
定理10:若A对称正定, 0<<2 ,则对任意初 值,SOR方法收敛。

n
| ajj | | aij | j 1,2, , n
i1 i j
则雅可比迭代法与高斯-赛德尔迭代法都收敛到原 方程的唯一解 X*。
12
定理7 若方程组 AX=b 的系数矩阵 A 对称正定, 则高斯-赛德尔迭代法收敛。
证明提要:A = D – L – U U = LT
迭代矩阵 B = (D – L)-1U 只要证明 (B)<1
X (k 1) BJ X (k ) b '
其中:
当||BJ||<1时,雅可 比迭代收敛。
3
计算时用到的Jacobi迭代矩阵:
0
a12 a11
a1(n1) a11
BJ
a21
a22
0
a2(n1)
a22
0
an1
ann
an2 ann
an(n1) ann
相关文档
最新文档