第五章 非线性方程的数值解法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算结果如下表,其中最后一个结果x10满足精度要求。
-
1 2
n 0 1 2
xn
0.5 0.60653 0.54524
xn xn1
0.10653 -0.61929
n 6 7 8
xn
0.56486 0.56884 0.56641
xn xn1
-0.00631 0.00358 -0.00203
ab () c 1 取 ,若 f (c) ,则停机,否则转(2); 2
(2) f (a )f (c) 0,取a1 a,b1 c; 若 若f (a)f (c) 0,取a1 c,b1 b,则得新的有根 区间[a1,b1 ],并令a1 a,b1 b,转( ); 1
♀优点:程序简单,对函数性质要求低,只要连续就
可以了,收敛速度不算太低。 ♀缺点:不能求偶数重根,也不能求复根和虚根。
§5.2 迭代法
♀ 迭代法是一种逐次逼近法,可用来求解代数方程、
超越方程、微分方程、方程组以及求矩阵的特征值等。 存在收敛性及收敛快慢的问题。
♀ 已知非线性型方程的一个近似根后,可用迭代法

——5.4
证毕。
※ 为了控制迭代次数,我们给出如下定理。
★定理5.2: 对一切x,若有 ( x) q 1(q为某定数),则有
q 误差估计: xn x xn xn 1 (证略)。 ——5.5 1 q
*
※ 上机时,可利用(5.5)结束运算。
通常取一个非常小的数 0,使 xn xn1 即可。
具有线性收敛性。
en1 ( x)en
显然,( x* )越小,格式xn1 ( xn )收敛的速度越快,
对牛顿法有( x* ) 0,这时 ( x* ) * ( x ) ( x* ) ( x xn )2 2 代入(5.9)得 ( x* ) 2
2.几何意义:
y
x* x2 x1 x0
x
图5-3
牛顿法的几何意义
3.收敛性: 设将所给方程f ( x) 0改写成下列等价形式
f ( x) x x ( x) f ( x) 那么对这一方程建立的迭代格式xn1 ( xn )
显然就是牛顿公式(5.6)。
由于
f ( x) f ( x) ( x) 2 f ( x)
——5.3 为迭代公式, ( x)为迭代函数。 3.迭代序列的收敛性与几何解释: 由xn1 ( xn )得到一个近似根的序列{xn },当n
时,若xn x*,则称{xn }收敛于x*。
{xn }是否收敛,且是否收敛于f ( x) 0的根,可归结为找直 线y x与曲线y ( x)的交点横坐标,由下图可知,可能 收敛,也可能发散。
使这个根逐步精确化,一直到满足精度为止。
一、迭代公式:
1.改写:将f ( x) 0转化为等价形式x ( x)。 ——5.2
[如]令 ( x) f ( x) x x
2.迭代: 在有根区间[a, b]上任取一点x0 (称为初值),
代入 ( x),得x1 ( x0 )。 称xn1 ( xn )
第五章 非线性方程的数值解法
§5.1 §5.2 §5.3 §5.4 二分法 迭代法 牛顿法 弦截法

※非线性方程: ※代数方程:

指次数不低于二的代数方程和超越方程。
16世纪:找到三次、四次方程的求根公式; 19世纪:证明了5次以上的一般代数方程无公式解。
※工程中常有此类方程,例如:在风道设计计算 中,
再考察误差en xn x*的性态。 对一般的迭代格式xn1 ( xn ),由
xn1 x* ( xn ) ( x* )
利用微分中值定理知
*
——5.9
*
en1 ( )en
这里 为xn与x 之间的某一点,因而当xn在根x 的附近时, 将有
即误差en1是en的线性函数,这时称迭代过程xn1 ( xn )
有根区间 (2,3) (2,2.5) (2,2.25) (2,2.125) (2.0625,2.125) (2.09375,2.125) (2.09375,2.109375)
*
故取x x7 2.1015625,而x 2.0945515
二、算法与流程图:
1.算法: 取定一个非常小的数 0
三、误差估计定理:(证明略)
给定方程f ( x) 0,设f ( x)于[a, b]上连续,且f (a)f (b) 0, 则由二分法产生序列{xk }收敛于方程f ( x) 0的根x,且 ba xk x k 0 (k 1, 2,) 2

1 如前例误差限为: 7 0.078125 2
证明:设x*是方程x ( x)的根,即x* ( x*)。由微 分中值定理:x * xn 1 ( )( x * xn )( 位于x *,xn之
间),又已知 ( x) q 1,所以:
x* xn 1 q x* xn q 2 x* xn 1 q n 1 x* x0
2.流程图:(略) 3.C-程序:
# include <math.h> # include <stdio.h> # define A 2 # define B 3 float f(x) float x; { float y; y=x*x*x-2*x-5; return(y); }
main() { float a=A,b=B,x; x=(a+b)/2; if(f(x)<=1e-8) printf("The root is %f\n",x); while(fabs(f(x))>1e-5) { if(f(a)*f(x)<0) b=x; else a=x; x=(a+b)/2; } printf("x=%f\n",x); }
通常采用柯氏公式:
1 B 2.51 2lg( ) 3.7 D Re
——5.1
计算管壁的摩擦阻力系数,这实际就是求解方程(5.1)。
※解题步骤: (即求方程f ( x) 0的根)
№1 确定初始区间:
由零点定理,使f (a) f (b) 0,且f ( x)单调。
一般题中给出或画出函数图形或由实际意义得到。 №2 通过二分法求得一个比较粗糙的近似值。
x
n
xn
0 0.5
*
1 2 3 0.57102 0.56716 0.56714
精确解x 0.56714329040978
☆ 收敛速度远高于前一种迭代格式
二、算法与流程图:
1.流程图:(略) 2.C程序:
#include "math.h" #include "stdio.h" #define X0 0.5 #define E 1e-10 double g(x) double x; { double y; y=x-(x-exp(-x))/(1+x); return y; }
即 f ( x0 ) f ( x0 )( x x0 ) 0
f ( x0 ) x1 x0 f ( x0 ) 一般地,取初值x x0,有迭代公式 f ( xn ) xn1 xn ——5.6 f ( xn )
这就是牛顿(Newton)法的迭代公式。
♀优点:收敛速度快,可计算复数根。 ♀缺点:需要计算导数值。
※ 上述定理条件可减弱为
( x)在x*上连续,且 ( x* ) q 1。
♀优点:逻辑结构简单
1 3 ln [例]求x e 在[ , 2]中的根,取 10 。 2
x
1 [解] 取 ( x) e ,当x [ , 2]时有 ln 2
x
( x) e x e =0.606531, 由定理5.1可知,迭代格式xn 1 e xn 收敛。
这两种过程都收敛吗?
1 ( x) 2 , [解](1)x 1 2 ,g1 x x3 ( x) 2 1, 当x 1.5时, 1 g 3.375 故迭代格式( )收敛。 1
()g 2 ( x) 1 x 1
3Βιβλιοθήκη Baidu
, g 2 ( x)
3x 2 2 ( x 1)
y p1 p0 y=x y=g(x) y y=g(x) p0 y=x

x x0 x1 x* x0 x*
p1

x
x1
图5-2
迭代法的几何意义
二、收敛条件:
★定理5.1: 若函数 ( x)对一切x都有 ( x) q (q为某定数),则上述迭代序列{xn }对任 1
意的初值x 0 均收敛,其极限就是方程x ( x)的根。且 q越小,收敛越快。
en 1
2
en
对(5.7)求导知 于是有
( x* ) f * ( x ) f ( x* ) f ( x* ) 2 en1 en * 2 f ( x )
由此可见,牛顿法的误差en1与en的平方成正比,
由于误差的这一特点而称牛顿法具有平方收敛性。
1 ln [例]用牛顿法求x e 在[ , 2]中的根 2 xn e xn 1 xn e xn [解]xn1 xn exn x exn xn 1 x 取x0 0.5 n n
——5.7
根据上节的结果,则可知牛顿法的迭代公式收敛的一个 充分条件是
f ( x) f ( x) ( x) q 1 2 f ( x)
——5.8
若x*是方程f ( x) 0的一个单根(即f ( x* ) 0,f ( x* ) 0), ( x* ) 0,可见在单根x*得附近,牛顿 则由(5.7)可知 法恒收敛,且收敛的速度很快。
3 3

g 2 (1.5) 1,故迭代格式(2)发散。
§5.3 牛顿法
♀将非线性函数线性化;
在单根附近收敛快,且可计算代数方程的复根。
一、公式及误差分析:
1.公式:
方程f ( x) 0,f ( x)在[a, b]上连续,且f (a)f (b) 0。
用曲线y f ( x)在点( x0 , f ( x0 ))的切线近似代替函数f ( x), 即取y f ( x0 ) f ( x0 )( x x0 )的零点x1作为f ( x) 0的根x* 的近似值。
由q 1,有 lim xn x*,
n
即证明了迭代序列{xn }对任意初值x0均收敛,且极限值即是 方程x ( x)的根。
往证q越小,收敛越快。
对给定的,要使 x* xn q n x* x0 ,只须
nln q ln

x x0
*
ln ,即n

x* x0 ln q
3
4 5
0.57970
0.56006 0.57117
0.34446
-0.1964 0.0111
9
10
0.56756
0.56691
0.00115
-0.00065
[例]为求方程x
3
x 1 0在x0 1.5附近一根,现将
2
方程转化为等价形式且建立迭代公式:
1 1 (1)x 1 2 ,迭代公式xn 1 1 2 g1 ( xn ) x xn 1 1 2 ()x 3 ,迭代公式xn1 g2 ( xn ) 3 x 1 xn 1
※几何意义:
a
x1 a
x*
b x2
b
xk 1 xk ε1

f ( x ) ε2
图5-1
二分法的几何意义
用二分法求x3 2x 5 0在(2, 3)之间的根。 [例]
[解]
n
1 2 3 4 5 6
函数值符号 f(2)=-1<0 f(3)=16>0 f(2.5)>0 f(2.25)>0 f(2.125)>0 f(2.0625)<0 f(2.09375)<0 f(2.109375)>0
№3 利用其它解法求得精度较高的近似值。
§5.1 二分法
一、二分法:
设f ( x)在[a, b]上连续,且f (a)f (b) (设f (a) 0, 0 f (b) 0), , b)为有根区间,且只有唯一一个根, (a 每次把含根区间逐步分半,检查函数值符号的变 化,以便确定含根的充分小区间。
相关文档
最新文档