数值计算方法 非线性方程方程组数值解法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
记新的有根区间为 [a2 ,b2 ] , 则
[a1,b1 ] [a2 ,b2 ]
且
b2
a2
1 2
(b1
a1 )
二分法
对 [a2 ,b2 ]重复上述做法得
[a1, b1 ] [a2 ,b2 ] ...... [an ,bn ] ......
且
bn
an
1 2 n1
(6) a x ,转 3) 注:如果对足够小的步长h扫描失败。
说明:
在 [a,b] 内无根 在 [a,b] 内有偶重根
二分法
用二分法(将区间对平分)求解。
令
a1
a, b1
b, c1
ቤተ መጻሕፍቲ ባይዱ
1 2
(a1
b1 )
若 f (a1) f (c1) 0 ,则 [a1, c1]为有根区间,否 则 [c1,b1]为有根区间
简单迭代收敛情况的几何解释
2.2.2 Steffensen加速收敛法
迭代法收敛的阶
定义2.2.1 设序列 { xn}0 收敛到 x*,若有实
数 p 1和非零常数C,使得
lim
n
en1 enp
C
其中,en xn x*,则称该序列是p 阶收敛的, C 称为渐进误差常数。
迭代法收敛的阶
破性开拓和补充,许多问题的求解,在解析方法无能为力
时,数值方法则可以借助于计算机出色完成.
2.1二分法
求非线性方程 f (x) 0 的根的方法 分为两步:
确定方程的有根区间 计算根的近似值
首先确定有限区间:依据零点定理。
设 f (x) C[a,b] ,且 f (a) f (b) 0 , 则方程 f (x) 0在区间 (a,b)上至少有一个根。 如果 在f ' (x) 上(a恒,b)正或恒负,则此根唯 一。
第2章
非线性方程与方程组的数值解法
本章重点介绍求解非线性方程 f (x) 0的几种常见和有
效的数值方法,同时也对非线性方程组
fi (x1, x2,, xn ) 0 (i 1,2,, n)
求解,简单介绍一些最基本的解法.无论在理论上,还是在
实际应用中,这些数值解法都是对经典的解析方法的突
继续以上步骤。
等步长扫描算法
算法:(求方程 f (x) 0的有根区间)
(1) 输入 a,b, h ;
(2) f0 f (a) ;
(3) x a h, 停机。
f1
f
(x),若
x b 输出失败信息,
(4)若 f1 0。输出x ,已算出方程的一个根,停
机。
等步长扫描算法
(5) 若 f0 f1 0 。输出 a, x,[a, x] 为有根区间, 停机
当p=1时,称为线性收敛; 当p>1时,称为超线性收敛; 当p=2时,称为平方收敛或二次收敛。
迭代法收敛的阶
定理2.2.2 设x* 是方程 x (x) 的不动 点, 若为足够小的正数 [x* , x* ]。 如果 (x) C 且 | (x* ) | 1 ,则从任意 x0 出发,由 xk1 (xk )产生的序列 收 {xn }0 敛到 x*,当(x) 0 时敛速是线性的。
方程的有根区间为[1.3,1.4].
又 f ' (x) 3x2 1 0, x [1.3,1.4] 即 f (x) 0在 [1.3,1.4]有唯一根。
2.2一般迭代法
2.2.1 迭代法及收敛性
对于 f (x) 0 有时可以写成 x (x) 形式
如: x3 x 1 0 x 3 x 1
x 1 x3
x cosx 0 x cosx
迭代法及收敛性
考察方程 x (x)。这种方程是隐式方 程,因而不能直接求出它的根,但如果
给出根的某个猜测值
x
,
0
代入x
(x)
中
的右端得到 x1 (x0 ),再以 x1为一个猜
测值,代入 x (x) 的右端得 x2 (x1)
y
y
x
(x)
交点的横坐标
y=x
x* x2
x1
x0
简单迭代法
将f (x) 0变为另一种等价形式 x (x)。
选取x 的某一近似值 x0 [a,b] ,则按递推 关系 xk1 (xk ) k 0,1,.....产. 生的迭代序列 {xk } 。这种方法算为简单迭代法。
由条件2)(x) 是 [a,b] 上的连续函数 所以 (x) 是[a,b] 上的连续函数。 故由零点定理 (x) 0 在 [a,b] 上至少有一根
x (a,b)
压缩映像原理
再证根的唯一性
设有 x1 , x2 [a, b] 均为方程的根 则 | x1 x2 || (x1 ) (x2 ) | L | x1 x2 | 因为 0<L<1 ,所以只可能 x1 x2 , 即根是唯一的。
lim en2 lim en1 C 0
e e n
n
n1
n
当n充分大时有
en2 en1 en1 en
即
xn2 x* xn1 x*
xn1 x* xn x*
Steffensen迭代格式
展开有:(xn2 x* )( xn x* ) xn21 2xn1x* (x* )2
1
L 1
3
33 4
所以 (x)满足条件(2)。
x [1,2]
故(x) 3 x 1在[1,2]满足压缩映像原理。
例题
若取迭代函数 (x) x3 1 ,
因为 | '(x) || 3x2 | 3 x [1,2]
不满足压缩映像原理,故不能肯定 xn1 (xn ) n 0,1,.... 收敛到方程的根。
即
lim
n
xn
x
压缩映像原理
误差估计
若 x (x) 满足定理2.2.1条件,则
|
xn
x
|
L 1 L
|
xn
xn1
|
这是事后估计,也就是停机标准。L越小,收敛速度越快。
|
xn
x
|
Ln 1 L
|
x1
x0
|
这是事前估计。选取n,预先估计迭代次数。
例题
例2.2.2 证明函数(x) 3 x 1 在区间[1, 2]上满足迭代收敛条件。
反复迭代得 xk1 (xk ) k 0,1,......
迭代法及收敛性
若
{xk }收敛,即
lim
k
xk
x
则得 x 是 x (x) 的一个根
lim
n
xn
1
lim
n
(
xn
)
(lim n
xn
)
x
(x)
迭代法的几何意义
x
(x)
的序列{xk1}.收敛于 x 。
压缩映像原理
证明:不失一般性,不妨设
(a) a,(b) b
否则 a或b为方程的根。 首先证明根的存在性
令 (x) (x) x
压缩映像原理
则 (a) (a) a 0 , (b) 0 即 (a) (b) 0
(1)x [a,b] (x) [a,b]
(2)(x) 满足Lipschitz条件
即 x1, x2 [a,b] 且 0 L1 。
有 (x1) (x2 ) L x1 x2
压缩映像原理
则 x (x) 在 [a,b] 上存在 唯一解 x ,
且对 x0 [a,b] ,由 xk1 (xk ) 产生
else [a1, b1][x, b1].
endw hile;
3)输出:
x;
a1
x
h 10
; b1
a1
h;
endw hile;
例题
例1 设方程 f (x) x3 x 1,[a,b] [1,2]
解:取h=0.1,扫描得:
f (1.3) 0.61 0 f (1.4) 0.344 0
例题
例2.2.1 试用迭代法求方程
f (x) x3 x 1 0
在区间(1,2)内的实根。 解:由x 3 x 1 建立迭代关系
xk1 3 xk 1 k=10,1,2,3…….
计算结果如下:
例题
精确到小数点后五位
x 1.32472 1 105
2
例题
等步长扫描法求有根区间
用计算机求有根区间:等步长扫描法。
设h>0是给定的步长,取 x0 a, x1 a h ,
若 f (x0 ) f (x1) 0 则扫描成功;否则令 x0 x1, x1 x0 h ,继续上述方法,直到成
功。如果 x1 b 则扫描失败。再将h 缩小,
证明:
因为
' (x)
1
(
x
1)
2 3
0
x [1,2]
3
所以 (x)是区间[a,b]上严格单调增函数。
例题
而(1) 3 2 1,(2) 3 3 2
即[(1),(2)] [1,2],所以(x)满足条件(1)。
又
| '(x)
||
1
(x
2
1) 3
|
但如果由 x x3 1建立迭代公式
xk1 xk3 1 k 1,2,...
仍取 x0 1.5,则有 x1 2.375 ,x2 12.39 显然结果越来越大,{xk } 是发散序列
迭代法的收敛性
定理2.2.1(压缩映像原理)
设迭代函数 (x) 在闭区间 [a,b]上满足
1)while f (a1) f (b1) 0做a1 a; b1 a1 h; endw hile;
2)while | b1 a1 | 时做
10
x
1 2
(a1
b1 ); 计算f
(x);
求方程f(x)=0的全部实根的二分法算法
20 if f (x) 0转(3);
30 if f (a1) f (x) 0 then [a1, b1][a1, x]
为
x 的 近似解
求方程f(x)=0的根的二分法算法
(1) 输入 : 有根区间[a, b]的a, b值及精度控制量 ;
(2) if f (a) f (b) 0 then 返回第1步, 重新
输入a, b值else转第3步;
(3)while | a b | 时做
1)令x 1 (a b),计算f (x); 2
迭代法收敛的阶
证明:
满足压缩映像原理
由| (x* ) | 1及 ' (x) C知,
足够小时,有|(x) | L 1 (x )
因此,对于x 有
| (x) x* || (x) (x*) || ( ) || x x* || x x* |
2)if f (a) f (x) 0 then
[a, b][a, x];
else [a, b][x, b].
endw hile; (4)输出x 1 (a b).
2
求方程f(x)=0的全部实根的二分法算法
(1) 输入 : a, b, h, ;
(2) a1 a; b1 a1 h; (3)while b1 b时做
压缩映像原理
最后证迭代序列的收敛性
由于
因为
| xn x || (xn1) (x) | L | xn1 x |
......
Ln | x0 x | x0, x 与n 无关,而0<L<1
所以
lim
n
|
xn
x
||
x0
x
|
lim Ln
n
0
xn2 xn xn x* xn2 x* (x* )2 xn21 2xn1x* (x* )2 xn2 xn xn x* xn2 x* xn21 2xn1x* x* (xn xn2 2xn1) xn2 xn xn21
迭代法收敛的阶
即(x) ,所以(x)满足压缩映像原理,
故{xn}0 收敛到 x*。
敛速是线性的
因为lim n
en1 en
lim
n
(
xn ) xn
(
x*
x*
)
(x*)
0
所以{xn}0 线性收敛到 x* 。
Steffensen迭代格式
由线性收敛知
(b
a
)
二分法
设 所求的根为 x,
则 x [an ,bn ] n 1,2......
即 an x bn n 1,2......
lnim(bn
an )
lim
n
1 2 n 1
(b
a)
0
lim
n
an
lim
n
bn
x
取
x
cn
1 2
(an
bn )