计算方法第六章(迭代法)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设迭代 xk 1 ( xk )收敛到a,充分可导,则迭代p 阶收敛
(a ) (a ) ( p1) (a ) 0, 但 ( p ) (a ) 0
加速收敛技术: 1、松弛法 选择适当的常数 (松弛因子),令
* xk xk (1 ) xk 1 ( xk 1 ) (1 ) xk 1
则牛顿迭代序列收敛于f(x) =0 在区间[a,b]上的唯一根。
利用泰勒展开容易证明, 牛顿迭代法具有二阶收 敛性,即平方收敛。收 敛速度快这是牛顿迭代 法的主要优点。 计算步骤(框图):
例子:建立求某个 正实数 c 的平方根 的迭代格式。
设函数方程 f (x) = 0 的根为 ,将 f () 泰勒展开
可用迭代法求解,迭代序列 x0 100, xn1 ( xn )
xn
误差估计:第k步迭代计算值与精确值误差为
Lk a xk x1 x0 1 L
使用迭代法求解方程值得注意的事项:
1、将要求解的方程化成 x ( x) 的形式。
2、该迭代法第一个条件不易验证。因此,实际使用时,总在 根的附近区间内进行迭代计算,以保证每次迭代的值都在 迭代区间内。 3、L很小时迭代收敛非常快,但如果L与1很接近,则收敛相 当慢。
f ( xk ) yk
xk ( yk )
1 (0) ( yk ) ( yk )(0 yk ) ( yk )(0 yk ) 2 2!
1 ( yk ) f ( xk ) f ( xk ) ( yk ) 3 f ( xk )
3
的根
迭代格式:
xk 1 3 2 xk 1 5
取 =1.15,
x xk (1 ) xk 1
* k
计算结果要求准确到小数后8位数字
2.154434739312699 2.103612082648350 2.095927464327627 2.094760599916342 2.094583304649520 2.094556363492997 2.094552269550262 2.094551647438705 2.094551552903205 2.094551538537676 2.094551536354704
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 (x) = 0 根 a 的某邻域内显然成立。
牛顿迭代法的几何意义:
一个例子:
牛顿迭代法是局部收敛。因此,只有初值选得靠近精确解时, 才能保证迭代序列收敛。 定理:设函数 f(x) 在区间[a,b]上二阶导数存在,且:
10 20 30 40
f (a) f (b) 0 f ( x) 0 , x [a, b] f ( x)不变号, x [a, b] 初值x0 [a, b] , f ( x0 ) f ( x0 ) 0
* k
( xk 1 xk )2 x xk 1 xk 1 2 xk xk 1
2
( xk 1 xk ) x xk 1 xk 1 2 xk 来自百度文库 xk 1
斯特芬森迭代(迭代两次后用Aitken加速):
xk ( xk 1 ) 2 ( xk 1 xk 2 ) xk xk 1 x 2 x x k 1 k 2 k 3
f ( x) f ( x) x x ( f ( x) 0) , ( x) x f ( x) f ( x) f ( xk ) xk 1 ( xk ) xk f ( xk )
这称为牛顿迭代,迭代序列收敛条件为:
f ( x) f ( x) ( x) L 1 2 ( f ( x))
收敛阶: 定义:设 lim xk
k
, k xk ( xk ) ,如果存在实数 p
和非零常数 c,使:
k 1 k
p
c
则称序列 p 阶收敛,特别,p=1时,称为线性收敛,p > 1 时,
称为超线性收敛,p=2时称为平方收敛。 p 越大,序列收敛越快。如果是线性收敛,则 0 < c < 1
xk 1 xk
2 f ( xk ) f ( xk ) sgn f ( xk ) f 2 ( xk ) 2 f ( xk ) f ( xk )
设函数 y = f (x) 的反函数为 x = (y), f (x) = 0 的根 为
f ( ) 0 (0)
迭代一次用插值加速,称为插值加速迭代:
x1 z0 ( x0 ) , zk ( xk ) ( xk xk 1 )( xk zk ) xk 1 xk x z x z k 1 k 1 k k
3. 对于一般的函数方程 f (x) = 0 的求解,解决方案为:构造 等价的方程 x = (x) ,利用迭代法求解。
f ( xk ) xk f ( xk )
f ( xk ) xk 1 xk f ( xk )
改进牛顿迭代 或 柯西迭代
1 2 f ( ) f ( xk ) f ( xk )( xk ) f ( xk )( xk ) 2!
f ( xk ) sgn f ( xk ) f 2 ( xk ) 2 f ( xk ) f ( xk ) xk 1 xk f ( xk )
第六章
迭代法
第一节 非线性方程求根 ( f ( x) 0 ) 1、二分法 利用连续函 数的性质进 行对分。 计算框图为:
压缩映射: 集合 A 上的映射 : A A , A 上两个点 x1 , x2 之间的距离 记为 d ( x1 , x2 ) ,如映射满足下面条件,称为压缩映射
x1, x2 A, k (0,1) , s.t. d ( ( x1 ), ( x2 )) kd ( x1, x2 ) 例:设函数 f ( x) 满足: f ( x) k 1 ,则该函数为压缩映射
同样,此法具有局部 收敛性。其收敛是超 线性收敛,收敛阶为 1.618
本例中, c 与导数异号,迭代发散
弦割法:用过 ( xk 1, f ( xk 1 )) , ( xk , f ( xk )) 两个点的直线的斜 率代替函数在点 x 处函数的导数,进行迭代。
k
迭代公式:
f ( xk )( xk xk 1 ) xk 1 xk f ( xk ) f ( xk 1 )
Aitken加速法(适用于线性收敛情况)
xk xk 1 xk 1 xk 2
( xk )( xk 2 ) ( xk 1 ) 2
2
( xk xk 1 ) xk xk 2 xk 1 xk 2 ( xk xk 1 ) x xk xk 2 xk 1 xk 2
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
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!
f ( xk ) xk 1 xk c f ( x) 迭代函数为 ( x ) x ,为使迭代序列收敛, c 应满足 c f ( x) ( x) L 1 0 2 c x [a , a ]
这称为简化牛顿法,显然,当 c 与导数同号且满足上面式子时, 迭代收敛。
f ( xk ) xk 1 xk f ( xk )
0 f ( xk ) f ( xk )( xk 1 xk )
f ( xk ) 2 xk 1 ( xk ) 2 f ( xk )
xk 1 f ( xk ) f ( ) lim lim 2 k ( x ) k 2 f ( x ) 2 f ( ) k k
( x) ( x) (1 ) x
1 ( ) ( ) (1 ) 0 1 ( )
xk 1 xk 2 xk 1 ( xk 1 ) xk 2 ( xk 2 )
例子:求方程
x 2x 5 0
得到
x0 [a, b] , xk 1 ( xk ) ( k 0,1, 2,) lim xk x , ( x ) x
* * k *
例:在区间[1,)上求解方程
x ( x) , ( x) x 1 1 1 ( x) 1 2 x 2
简化牛顿法: 目的:避免计算迭代格式中的导数 f ( xk ) 方法:将牛顿迭代中导数取为某个定点的值,如 f ( x0 ), 按如下格式 迭代
f ( xk ) xk 1 xk f ( x0 ) ( f ( xk ) 0)
几何意义 如图
进一步,取任意常数 c 代替迭代公式中的导数值,迭代公式为
定理:如果 为闭集合 A 上的压缩映射,则方程 x = (x) 在集 合 A 上有唯一解。且解可以用下面迭代得到:
x0 A , xn 1 ( xn ) xn x , x ( x )
* * *
k xn x x1 x0 1 k
*
n
2、简单迭代:
对于形如的方程
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
定理: ( x) 满足下面条件时,为压缩映射: (1)当 x [a, b] 时, ( x) [a, b] (2)存在正数 L < 1,使得
x ( x) ,可以通过迭代求解。
x [a, b] , ( x) L 1 则方程在区间上有唯一解 x* ,且解可以用下面迭代