非线性方程的数值解法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
注:条件 ( II ) 可改为 在[a, b] 满足Lipschitz条件, 定理结论仍然成立(定理2.2.1)。
算法: 不动点迭代
给定初始近似值 x0 ,求x = g(x) 的解. 输入: 初始近似值 x0; 容许误差 TOL; 最大迭代次数 Nmax.
输出: 近似解 x 或失败信息.
Step 1 Set i = 1; x0 = 初始给定值; Step 2 While ( i Nmax) do steps 3-6 x Step 3 Set x = g(x0); /* 计算 xi */ Step 4 If | x x0 | < TOL then Output (x); /*成功*/ STOP; Step 5 Set i = i +1; Step 6 Set x0 = x ; /* 更新 x0 */ STOP.
1 2
法3
x1 1.34840 x2 1.36738 x3 1.36496 x4 1.36526 x4 1.37517 x5 1.365225 x11 1.365230013
法4
x1 1.37333 x2 1.36526
x3 1.365230014 x11 1.365137821 x4 1.365230013 x29 1.365230013
a 1, b 1.5, 10 2 ;
ln( b a ) ln n 1 ln 2
ln(1.5 1) ln 10 1 ln 2
2
4.64
n5
优点
①简单; ② 对f (x) 要求不高(只要连续即可) .
①无法求复根及偶重根 ②收敛慢
缺点
注:用二分法求根,最好先给出 f (x) 草图以确定根的大 概位置。或用搜索程序,将[a, b]分为若干小区间,对每一 个满足 f (ak)· f (bk) < 0 的区间调用二分法程序,可找出区 间[a, b]内的多个根,且不必要求 f (a)· f (b) < 0 。
p1 y=g(x) x1 y=x x
p0 p1 x1 x0 x*
x x0 x*
p1
x
x1
例 2: 已知方程 x 3 4 x 2 10 0在[1, 2]上有一个根(正根) 下面选取5种迭代格式:
1、x
x x 4 x 10
3 2
即
g( x ) x x3 4 x 2 10
1 | x k 1 x k | ? 1 L
| x* x k | | x* x k 1| | x k 1 x k| L| x* x k| | x k 1 x k|
| x k 1 x k |来 Lk 可用 | x1 x0 | ? ⑤ | x * xk | 1 L 控制收敛精度 | xk 1 xk | | g( xk ) g( xk 1 ) | | g( ξ k )( xk xk 1 ) |
就找到了三次、四次方程的求根公式,但直到19世纪才证明大 于等于5次的一般代数方程式不能用代数公式求解,而对于超
n个根(考虑重数)。早在16世纪
n
越方程就复杂的多,如果有解,其解可能是一个或几个,也可 能是无穷多个。一般也不存在根的解析表达式。因此需要研究
数值方法求得满足一定精度要求的根的近似解。
求方程 f ( x ) 0 几何意义
Th2.2.1 考虑方程 x = g(x), 若
( I ) 当 x[a, b] 时, g(x)[a, b]; ( II ) 0 L < 1 使得
Lipschitz条件成 立的充分条件
对 x[a, b] 成立。 g( x ) L 1
则任取 x0[a, b],由 xk+1 = g(xk) 得到的序列 x k k 0收 敛于g(x) 在[a, b]上的唯一不动点。并且有误差估计式:
Step 6 If |x1- x2 | < TOL , STOP; Output the solution x= (x1+ x2 )/2.
Step 7 If f(x2)*f(a)<0 , Set b= x2; Else Set a= x2; Step 8 x1=x2 ; Compute x2=(a+b)/2; Set k=k+1; Step 9 Output “Maximum iterations exceeded ”; STOP.
§2 迭代法的理论 /* Theory of Iteration Method*/
一、不动点迭代 /*Fixed-Point Iteration*/
f (x) = 0
等价变换
x = g (x)(迭代函数)
x g (x) 的不动点
f (x) 的根 x
从一个初值 x0 出发,计算 x1 = g(x0), x2 = g(x1), …, 思 xk+1 = g(xk), … 若 x k k 0 收敛,即存在 x* 使得 路 lim x k x *,且 g 连续,则由 lim x k 1 lim g x k 可 k k k 知 x* = g(x* ),即x* 是 g 的不动点,也就是f 的根。
输出: 近似根 x.
Step 1 Set k = 1; Step 2 Compute x1=(a+b)/2;
Step 3 If f(x1Baidu Nhomakorabea*f(a)<0 , Set b= x1; Else Set a= x1;
Step 4 Compute x2=(a+b)/2; Step 5 While ( k Nmax) do steps 6-8
L | xk xk 1 | ...... Lk | x1 x0 |
x xk 1 ⑥ lim g ( x) ? k x x k
lim
k
L 越 小 收敛越快
x * x k 1 g( ξ k )( x * xk ) lim g( x*) k x * xk x * xk
y f ( x)
y
以 此 类 推
ab x3 2
o
a
x
b
x
a1 b1 x2 2
ab x1 2
When to stop? 终止法则? a x1 x* x2
b
x k 1 x k ε1
或
f ( xk ) ε2
不能保证 x 的精度
2
x* x
二分法算法
给定区间[a,b] ,求f(x)=0 在该区间上的根x. 输入: a和b; 容许误差 TOL; 最大对分次数 Nmax.
x1 0.875 x2 6.732 x3 469.720 x4 1.0275 10
法5
8
法1
x1 1.28695 x2 1.40254 x3 1.34546 x4 1.37517 x4 1.37517 x5 1.37517
法2
x1 0.81650 x2 2.99691 x3 ( 8.65086)
ak bk 1 , 且 x xk 1 k 1 b a , k 1, 2, 3、 xk 1 2 2
4、对分次数的计算公式:
x xk 1
k
1 2
k 1
b a
1
令
ln b a ln ln 2
例1:用二分法求方程 x 3 x 1 0在区间 [1, 1.5] 上的 根,误差限为 102 ,问至少需对分多少次? 解:
③ 当k 时, xk 收敛到 x* ?
| x * xk | | g( x*) g( xk 1 ) | | g(ξ k 1 ) | | x * xk 1 |
L | x * xk 1 | ...... Lk | x * x0 | 0
④ | x * xk |
看起来很简单,令人 如何判定这种方法 有点不相信,那么问 是收敛的呢? 题是什么呢?
x k 1 g ( x k )
k 0,1, 2,
(*)
几何意义
y p1 p0 y=x y=g(x) y p0 y=x
x0 y x1 x* y=x x x0 y y=g(x) p0 x* y=g(x)
第二章 非线性方程的数值解法
/* Numerical Solutions of Nonlinear Equations*/
本章主要内容:
1、二分法
2、不动点迭代的构造及其收敛性判定 3、Newton和Steffensen迭代 4、弦割法(割线法)与抛物线法
历史背景
代数方程的求根问题是一个古老的数学问题。理论上, 次代数方程在复数域内一定有
1 | x k 1 x k | | x * xk | 1 L
| x * xk | 且存在极限
L | x1 x0 | 1 L
k
( k = 1, 2, … )
lim
k
x * x k 1 g x * x * xk
g( x ) 连续时
证明:① g(x) 在[a, b]上存在不动点?
§1
二分法
/* Bisection Method */
原理:若 f C[a, b],且 f (a) ·f (b) < 0,则 f 在 (a, b) 上至 少有一实根。
基本思想:逐步将区间分半,通过判别区间端点函数值的符号,
进一步搜索有根区间,将有根区间缩小到充分小,从而求
出满足给定精度的根
x 的近似值。
2、 4x
2
2
10 x
3
1 1 1 1 3 2 3 2 g x 10 x x 10 x 即 2 2
10 10 4x x 4x 3、 x x x
1 2
1 2
10 g x 4 x 即 x
当 x 很大时,此 处可改为 x x0 TOL
Step 7 Output (The method failed after Nmax iterations); /*不成功 */
二、局部收敛性 /*Local Convergence*/ (局部收敛性 ) Def 2.1 g 若存在 的不动点 x 的一个闭邻域 N ( x ) [ x , x ]
由二分法的过程可知:
1、
a, b a1 , b1 ak , bk f ak f bk 0, x ak , bk
1 1 2、 bk ak bk 1 ak 1 k b a 2 2
y
y f ( x)
a
o
x* b
x
基本定理
Th2.1 如果函数 f ( x ) 在 [a , b] 上连续,且 f ( a ) f ( b ) 0 则至少有一个数 使得 f ( ) 0 ,若同时f ( x ) 的一阶
导数 f ( x ) 在 [a , b ] 内存在且保持定号,即 f ( x ) 0 (或 f ( x ) 0 )则这样的 在 [a , b ] 内唯一。
1 2
1 2
10 10 x 4、 4 x 即 g x 4 x f ( x) x 3 4 x 2 10 g( x ) x 5、 x x 即 f ( x ) 3x 2 8 x
取 x 0 1.5 计算结果如下:
令 f ( x ) g( x ) x
f ( x ) 有根
a g( x ) b
f ( a ) g(a ) a 0 , f ( b ) g ( b ) b 0
② 不动点唯一?
~ g( x ~ ),则 设还有 x ~ ) g(ξ ) ( x * x ~ ), 在 x * 和 x ~ 之间。 ~ g( x*) g( x x* x ~ )(1 g(ξ )) 0 ~ ( x* x 而 | g(ξ ) | 1 x* x