第六讲 非线性方程求根
第6章 非线性方程求根(1、二分法、迭代法)
(2) 如果将原方程化为等价方程 x = 仍取初值
x0 = 0
3
3
x+1 2
x1 =
x0 + 1 = 2
3
3
1 ≈ 0 .7937 2
1 .7937 ≈ 0 .9644 2
x2 =
依此类推,得 依此类推, x3 = 0.9940 同样的方程 x4 = 0.9990 不同的迭代格式 x5 = 0.9998 x6 = 1.0000 有不同的结果 x7 = 1.0000 已经收敛, 已经收敛,故原方程的解为 x = 1.0000
用一般迭代法求方程x lnx= 在区间( 例:用一般迭代法求方程x-lnx=2在区间(2,∞) 内的根,要求|x 内的根,要求|xk-xk-1|/|xk|<=10-8 f(x)=x-lnx解:令f(x)=x-lnx-2 f(2)<0,f(4)>0,故方程在 2,4) 故方程在( f(2)<0,f(4)>0,故方程在(2,4)内至少有一个根
y p1 p0
y=x y=g(x)
y p0
y=x
p1 x x0 y y=g(x) x1 x* y=x y y=g(x) p0 x0 x* x1
y=g(x)
x
y=x
p0 p1 x x1 x0 x* x0 x* x1 p1 x
f(x)=0化为等价方程x=g(x)的方式是不唯 f(x)=0化为等价方程x=g(x)的方式是不唯 化为等价方程x=g(x) 一的,有的收敛,有的发散. 一的,有的收敛,有的发散. example: For example:2x3-x-1=0
1 3 ( x + 1 ) = g ( x ) 进行迭代,则在 进行迭代,则在(1, 3
非线性方程求根
几何含义:求曲线 y = (x) 与直线 y = x 的交点
18:28:03
Numerical Analysis
9
y p0 x0 y
18:28:03
y=x
p1
y= (x)
✓
y p0
y=x
✓
p1 y= (x)
x x1 x2 x*
x0
(x) ( y) L x y
则(x) 在 [a,b] 上存在唯一的不动点 x*
证明:P216
18:28:03
Numerical Analysis
12
收敛性分析
不动点迭代的收敛性
定理:设 (x) C[a,b] 且满足
(1) 对任意的 x[a,b] 有 (x)[a,b]
(2) 存在常数 0<L<1,使得任意的 x, y[a,b] 有
for k = 1 : n x = g(x); fprintf('k=%2d, x=%.7f\n',k,x); if abs(x-xt)<tol, break, end
end xt = fzero(f,[3,4]);
fprintf('True solution: x = %.7f\n', xt)
% Steffenson 加速
性质:若
lim
k
xk
x *,则不动点迭代收敛,且 x*
是 f(x)=0 的解;否则迭代法发散。
18:28:03
Numerical Analysis
11
解的存在唯一性
解的存在唯一性
定理:设 (x) C[a,b] 且满足
非线性方程求根—牛顿迭代法(新)
非线性方程求根——牛顿迭代法一、牛顿迭代法的基本思想基本思想:将非线性方程逐步归结为某种线性方程求解。
设方程f (x )=0有近似根x k (f `(x k )≠0),将f (x )在x k 展开:(ξ在x 和x k 之间)2()()()()()()2!k k k k f f x f x f x x x x x ξ'''=+-+-()()()()k k k f x f x f x x x '≈+-可设记该线性方程的根为x k +1,则()()()0k k k f x f x x x '+-=1()()k k k k f x x x f x +=-'故f (x )=0可近似表示为即为Newton 法迭代格式。
(k =0,1,……)例:用Newton 迭代法求方程310x x --=在x 0=1.5附近的近似实根。
解:32()1,()31f x x x f x x '=--=-迭代公式为312131kk k k k x x x x x +--=--计算步骤如下:(1)取初值x 0=1.5;(2)按照迭代公式计算x 1;(3)若|x 1-x 0|<=0.00001,终止迭代;否则,x 0=x 1;转(2);(4)输出迭代次数和近似根.二、牛顿迭代法的实现MATLAB求解程序设计:方程及一阶导数函数:function[fun,dfun]=fun0(x)fun=x^3-x-1;%求原函数的值dfun=3*x^2-1;%求一阶导数的值计算主程序:clearx0=1.5;[fun,dfun]=fun0(x0);x1=x0-fun/dfun;i=1;while abs(x1-x0)>1e-5x0=x1;[fun,dfun]=fun0(x0);x1=x0-fun/dfun;i=i+1;enddisp('the solution is x1=')x1disp('the iter time is ')i计算结果为:the solution is x1=x1 =1.3247the iter time isi =4可见经过4次迭代即到达要求的精度,原方程的一个近似实数根为1.3247.三、牛顿迭代法的收敛性牛顿迭代法的迭代函数:)()()(x f x f x x '-=ϕ222)]([)()()]([)()()]([1)(x f x f x f x f x f x f x f x '''='''-'-='ϕ设f (x *)=0,f `(x *)≠0,则ϕ`(x *)=0,故Newton 迭代法在x *附近至少平方收敛。
非线性方程求根方法
0 y
输 出x 结束
n
x a
n
例2 证明方程 x3 2x 5 0 在区间[2, 3]内有一个根,
使用二分法求误差不超过0.5×10-3 的根要二分多少 次? 证明 令 f ( x) x3 2x 5则 f (2) 1 0, f (3) 16 0 且f(x)在[2, 3]上连续,故方程f(x) =0在[2,3]内至少有一
第六章 非线性方程的数值解法
6.1 引言
在科学研究和工程设计中, 经常会遇到的一大类 问题是非线性方程
f(x)=0
(6.1)
的求根问题,其中f(x)为非线性函数。
方程f(x)=0的根, 亦称为函数f(x)的零点.
如果f(x)是多项式函数,则称为代数方程,否则 称为超越方程(三角方程,指数、对数方程等)。一 般称n次多项式构成的方程
an xn an1xn1 L a1x a0 0 (an 0)
为n次代数方程,当n>1时,方程显然是非线性的 一般稍微复杂的3次以上的代数方程或超越方程,
很难甚至无法求得精确解。本章将介绍常用的求解 非线性方程的近似根的几种数值解法
通常方程根的数值解法大致分为三个步骤进行
① 判定根的存在性。即方程有没有根?如果有 根,有几个根?
满足不等式
|
xn
x*
|
ba 2n1
证 因为an x* bn , 所以
|xn
x
*|=|1 2
(an
bn )-x*|
=
1 2
|
(an
-x*
)
(bn
-x
*
)|
1 2
(|
(an
-x*
)
|
第六讲 非线性方程求根
设方程f(x)=0有近似根xk(f `(xk)0),将f(x)在xk 展开: (在x和xk之间)
f ( ) 2 f ( x) f ( xk ) f ( xk )( x xk ) ( x xk ) 2!
可设
f ( x) f ( xk ) f ( xk )( x xk )
x
f (x ) x f ( x )
例:采用切线法求方程在区间[0.5,2]上的一个根。
x x 20
3
>> r=NewtonRoot('sqrt(x)-x^3+2',0.5,2)
r= 1.4759
弦截法(割线法) 在Newton迭代格式中,用差商近似导数,
f ( xk ) f ( xk 1 ) f ( xk ) xk xk 1
function r=FindRoots(f,a,b,eps) f_1=subs(sym(f),findsym(sym(f)),a); %两端点的函数值 f_2=subs(sym(f),findsym(sym(f)),b); mf=subs(sym(f),findsym(sym(f)),(a+b)/2); %中点函数值 if(f_1*mf>0) t=(a+b)/2; r=FindRoots(f,t,b,eps); %右递归 else if(f_1*mf==0) r=(a+b)/2; else if(abs(b-a)<=eps) r=(b+3*a)/4; else s=(a+b)/2; r=FindRoots(f,a,s,eps); %左递归 end end end 注:SUBS:Symbolic substitution. Also used to evaluate expressions numerically. SYM ; Construct symbolic numbers, variables and objects. FINDSYM:Finds the symbolic variables in a symbolic expression or matrix.
《应用数值分析》课件数值分析6非线性方程(组)求根
这种格式称为简化Newton迭代法
精度稍低
迭代法的局部收敛性
无论哪种迭代法:Newton迭代法 简化Newton法
是否收敛均与初值的位置有关.
例3 f (x) x3 x 3, 精确解x* 1.6717
用Newton迭代法求解: xk1 xk (xk3 xk 3) / (3xk2 1)
收敛
定理6.4.1假设 x* 是 f (x)的单根,f (x)在根
的邻域 :x x 内具有二阶连续导数,
且对任意 x 有 f x 0,又因初值x0 ,
则当邻域 充分小时,牛顿法具有2阶收敛速度.
改进的Newton迭代
• 简化Newton迭代 • 拟Newton法(Broyden方法) • 离散Newton法
6.6. 非线性方程组的迭代法 把非线性方程组改写成 x (x) (1(x),2 (x), ,n (x))T
并构造不动点迭代法 x(k1) (x(k) ), k 0,1,
给定初始点 x(0), 生成迭代序列 x(k)
若 lim x(k) x*, 且 (x) 是连续的, 则 x* 满足 x* (x*) k
与 x 轴的交点,作为下一个迭代点 xk1,
即x k 1
xk
f (xk ) f '(xk )
Newton法的改进
Newton迭代法
xk 1 xk
f ( xk ) f ( xk )
需要求每个迭代点处的导数 f (xk )
用x0近似替代f (xk )中的xk , 得
复杂!
xk 1 xk
f ( xk ) f ( x0 )
表
k0
x1(k )
0
x
(k 2
)
0
第六章非线性方程求根-席解析
非线性方程 f (x) 0的解称为 f (x) 的根或零点。
本章主要研究单个非线性方程求根的一些方 法,如图解法、二分法、牛顿迭代法、割线法等, 另外简单介绍一下求解非线性方程组的逐次代换 法和牛顿迭代法。
MATLAB命令
例1:解方程 8x9 17x3 3x 1 解:在MATLAB里输入命令:
if ( abs(c-a)<=tolerance )
fprintf('Tolerance is satisfied. \n');break%终止for或
%while循环,在嵌套循环中,只跳出内层循环
end
if ( it>it_limit )
fprintf( 'Iteration limit exceeded.\n' ); break
else
while 1 %while后面为非零值时表示重复执行循环语句
it = it + 1;
b = (a + c)/2; Yb = feval(f_name, b );
fprintf('%3.0f %10.6f, %10.6f', it, a, b );
fprintf('%10.6f, %10.6f, %10.6f, %10.6f\n', c, Ya, Yb, Yc );
,
否则:若
f
a
2
b
0
,令
a1
a
2
b ,b1
b
反之
b1
a
2
b
,
a1 a.
2)对 [a1,b1] 重复 1)的计算,共产生[a2,b2], ,[an,bn] 3) 当区间小于给定的容许误差时,得到
数值分析课件 第六章非线性方程求根
§3. Fixed-Point Iteration y p1 p0 y=x y=g(x) y p0 y=x
几个根?
• 哪儿有根?确定有根区间
• 根的精确化:已知一个根的近似值后,能否
将它精确到足够精度?
本章假设 f C[a, b],且 f (a) · (b) < 0,则 f 在 (a, b) f 上至少有一根,(a,b)即为有根区间。问题1、2得到解 决。
1. 逐步搜索法
§2 根的搜索
x0=a xk-1 x* xk b
第六章 非线性方程求根
/* Solutions of Nonlinear Equations */ §1 Introduction
科学技术中常遇到高次代数方程或超越方程 的求根问题。大于4次的代数方程无求根公式。 因此需要研究函数方程求根问题的数值方法。
求 f (x) = 0 的根或零点x*
求根问题包括下面三个问题: • 根的存在性:即f(x)=0有没有根?若有,有
③ 当k 时, xk 收敛到 x* ?
| x * x k | | g ( x *) g ( x k 1 ) | | g ( ξ k 1 ) | | x * x k 1 |
L | x * x k 1 | ...... L | x * x 0 | 0
说明:①迭代函数不唯一,②迭代点列可能收敛,也可 能发散,迭代收敛与否不仅与迭代函数有关,还与初 始点有关。
第六章 非线性方程(组)的求解
* * 又当 n 充 分 大[ 以 a ,b 后 ] , (x ,x ), 于是 m 为偶数 n n 时, x [ a ,b ],f (x ) 0 ,不 变 号 了 ! n n
2)二分法线性收敛,收敛因子为1/2。
* x x n 1 1 * 1 * x x ( x a ) ( x x ), . n n 1 n 1 n 1 * 2 2 x x2 n 1
f (x) m(x x*)m1h(x) h(x) g(x) 1 (x x*)g(x),h(x*) 0, m f (x) (x) x x 1 (x-x* )g(x) / h(x), f (x) m (x*) 1 1 , (x*) 1 1 1 , m m 牛顿迭代线性收敛,且 随 m的增加收敛性越来越差 。 重根时的改进:
或
定理一的条件太强,不便于实际应用。下面给出一个局部 收敛定理。
由迭代( 6 -1 -1 ) 产产生的 x 均收 数 敛收敛 n * 1 x x x x n n n 1 1 L n L * 或 x x x x n 1 L1 0
* * * 定理二 :如果 (x ) 连续 (x , ) L 1, 则 x N (x , 0 δ )
关于初值的问题: 一般来说采用试探法,但对于一些实际问题初值的选择并 不困难,它是明确的。
关于重根的问题:
* 设 x 是 f( x ) 的 m 重零 m 点 1) , 此 (时 * m * f( x ) ( x x ) g ( x ), g ( x ) 0 , 1 * m 1 * f ( x ) m ( x x ) [ g ( x ) ( x x ) g ( x )], m
称算法(6-1-1)为牛顿迭代法。 f (x) 证明:令 (x) x ,则 xN (x*), f (x) 0 x (x) f (x) (x) f *) 0 (x) 1 f ( x ), ( x ,牛顿迭代收敛 2 [ f (x)] () * * 又 xn1 x (xn) (x ) (xn x*)2; 2 xn1 x* () c,至少二阶收敛。 2 2 (x x*)
第六讲 非线性方程求根
迭代收敛!
方法二
1 2 1 2 x ( x 3) xk 1 ( xk 3), k 0,1,2, 2 2 给定初值x0 4, 带入迭代格式,计算可得: x1 6.5, x2 19.625, x3 191.070,
迭代发散! 问题:如何构造收敛的格式?如何估计误差? 如何提高收敛速度?
xk 1 xk ε1
f ( x) ε2
xk 1 xk xk
ε1
二分法的优点:计算简单,方法可靠; 缺点:不适合求偶数重根,也无法求复根,收敛速度 慢。通常用于为迭代法求方程的根提供一个较好的初 值。
例3:证明方程 f ( x) e x 10 x 2 0 存在唯一实根 x* (0,1)
注意:
在实际应用中,只要迭代初值在根的附近,就可以用
( x0 ) 代替 ( x*) 加以判定是否局部收敛。
例6 已知方程
xe
x
考察用格式 在0.5附近有一个根,
xk 1 e
xk
求此根的局部收敛性。
解:这里 x0 0.5 因此有 ( x0 ) e0.5 0.61 1 所以该迭代格式具有局部收敛性。
第六讲 非线性方程求根问题
• 非线性是实际问题中经常出现的,而且地位越 来越突出。 • 我们熟悉的很多线性问题或模型,通常都是非 线性问题在一定条件下的一种近似。 • 非线性方程可以是单个的方程,更多的情况则 是多个方程联立的方程组。
例如:
x 2 x 6 x 13x 8 x 12 0
( p 1)
( x*) 0, ( p ) ( x*) 0
局部收敛性 (1)局部收敛概念
若迭代过程 xk 1 ( xk ) 对 x0 x x x * 均收敛,则称迭代格式在根 (2)局部收敛判定定理
非线性方程求根
第二章非线性方程求根线性方程是方程式中仅包含未知量的一次方项和常数项的方程,除此之外的方程都是非线性方程(nonlinear equation). 例如,大家熟知的“一元二次方程”就是一个非线性方程. 多元线性方程组的求解是数值计算领域的一个重要问题,在后续几章将专门讨论. 本章介绍求解非线性方程的数值方法,主要针对实数域,重点是单个非线性方程的求根问题.2.1引言2.1.1非线性方程的解记要求解的单变量非线性方程为f(x)=0(2.1)其中函数f: ℝ→ℝ. 一般而言,非线性方程的解的存在性和个数是很难确定的,它可能无解,也可能有一个或多个解.例2.1 (非线性方程的解):分析下列非线性方程的解是否存在和解的个数.(1) e x+1=0. 此方程无解.(2) e−x−x=0. 此方程有一个解.(3) x2−4sinx=0. 此方程有两个解.(4) x3−6x2+5x=0. 此方程有三个解.(5) cosx=0. 此方程有无穷多个解.在实际问题中,往往要求的是自变量在一定范围内的解,比如限定x∈[a,b]. 函数f一般为连续函数,则可记为f(x)∈C[a,b],C[a,b]表示区间[a,b]上所有连续实函数的集合. 假设在区间[a, b]上方程(2.1)的根为x∗,也称x∗为函数f(x)的零点. 方程的根可能不唯一,而且同一个根x∗也可能是方程(2.1)的多重根.定义2.1:对光滑函数f,若f(x∗)=f′(x∗)=⋯=f(m−1)(x∗)=0,但f(m)(x∗)≠0,则称x∗为方程(2.1)的m重根. 当m=1时,即f(x∗)=0,f′(x∗)≠0时,称x∗为单根.对于多项式函数f(x),若x∗为m重根,则f(x)可因式分解为f(x)=(x−x∗)m g(x)其中g(x)也是多项式函数,且g(x∗)≠0. 很容易验证,f(x∗)=f′(x∗)=⋯=f(m−1)(x∗)=0,但f(m)(x∗)≠0,即多项式方程重根的概念与定义2.1是一致的. 对一般的函数f,x∗是方程(2.1)的重根的几何含义是,函数曲线在x∗处的斜率为0,且在该点处与x轴相交.非线性方程的一个特例是n次多项式方程(n≥2),根据代数基本定理可知,n次方程在复数域上有n个根(m重根计为m个根). 当n=1, 2时,方程的求解方法是大家熟知的. 当n=3, 4时,虽然也有求根公式,但已经很复杂,在实际计算时并不一定适用. 当n≥5时,不存在一般的求根公式,只能借助数值求解方法来求根.2.1.2问题的敏感性根据问题敏感性的定义,这里需要考虑输入数据的扰动对方程的根有多大影响. 要分析敏感性首先应假设问题中的数据如何扰动,一种易于分析的情况是将非线性方程写成:f(x)=y的形式,然后讨论y在0值附近的扰动造成的问题敏感性. 此时,求根问题变成了函数求值问题:y =f (x )的反问题. 若函数值f (x )对输入参数x 不敏感(x 在解x ∗附近变化),则求根问题将很敏感;反之,若函数值对参数值敏感的话,求根则不敏感. 这两种情况如图2-1所示.下面分析y 发生扰动Δy 引起的方程的根的扰动Δx . 由于当x =x ∗时,y =0,我们使用绝对(而不是相对)条件数:cond =|Δx |≈1|| 条件数的大小反映方程求根问题(2.1)的敏感程度,若|f ′(x ∗)|很小,则问题很敏感,是一个病态问题;反之,若|f ′(x ∗)|很大,则问题不敏感.一种特殊情况是f ′(x ∗)=0,即x ∗为重根,此时求根问题很敏感,原问题的微小扰动将造成很大的解误差,甚至改变解的存在性和唯一性(如图2-2,问题的扰动可能使解不存在).对于敏感的非线性方程求根问题,f (x )≈0并不意味着x 很接近x ∗,在后面讨论迭代解法的判停准则时应注意这一点.2.2二分法数值求解非线性方程通常是一个迭代的过程,迭代开始之前要先有个初始的近似解,然后随着迭代步数的增多,近似解越来越接近准确解,当达到一定要求时即停止计算过程. 本节先介绍一种最基本的方法——二分法(interval bisection method).2.2.1 方法原理先介绍有根区间的概念,有根区间就是包含至少一个根的区间,它限定了根存在的范围. 如果能计算出一个非常小的有根区间,那么区间的中点就是一个很好的近似解. 下面的定理给出了有根区间的充分条件.定理2.1:若f (x )∈C[a,b],且f (a )f (b )<0,则区间(a,b )内至少有一实根.这里省略定理证明过程,只给出图2-3作为一个解释.定理2.1给出了一种获得有根区间的方法,即通过看f (a )、f (b )两个值是否符号相反来判断(a, b)是否为有根区图2-1 方程求根问题的敏感性:(a)不敏感;(b)敏感.(a) (b)图2-2 f . 图2-3 若f (a )f (b )<0,则在区间(a,b )内至少有一实根.间. 在实际操作时,可在一个较大的范围内取多个点计算f(x)函数值,从而得到一个或多个有根区间. 另外应注意,根据定理2.1得到的有根区间内不一定只有一个根,这从图2-3也可以看出.二分法的思想很简单,就是每次将有根区间一分为二,得到长度逐次减半的区间序列{(a k,b k)},则区间中点x k=(a k+b k)2⁄就是第k步迭代的近似解. 具体算法如下:算法2.1:二分法输入:a, b, 函数f(x) ; 输出:x.While(b−a)> εdox:= a+(b−a)/2;If sign(f(x))=sign(f(a))thena:= x;Elseb:= x;EndEndx:= a+(b−a)/2.在算法2.1中,sign()表示取符号的函数,而二分迭代结束的条件为有根区间(a, b)的长度小于某个阈值ε. 应注意,浮点运算中几乎不可能出现等于0的情况,所以sign()函数的结果只是正号、或负号.假设二分法得到的有根区间序列为{(a k,b k),k=0,1,⋯},若取解x k=(a k+b k)2⁄,则误差|x k−x∗|<(b k−a k)2⁄=(b0−a0)2k+1⁄,k=0,1,2,⋯.(2.2) 根据公式(2.2)和对解的准确度的要求,也可以事先估算出二分迭代执行的次数,以及相应的计算量. 这里每步迭代的计算量主要是计算一次函数f(x k).例2.2(二分法):求方程f(x)=x4−x−2=0在区间[1.0, 1.5]上的一个实根,要求准确到小数点后第2位(四舍五入后).[解] 首先验证(1.0, 1.5)是否是一个有根区间,易知f(1.0)<0,f(1.5)>0. 所以将(1.0, 1.5)作为二分法的初始区间. 利用(2.2)式我们可以估计,若(b−a)2k+1⁄≤0.5×10−2(2.3) 则|x k−x∗|<0.5×10−2,即结果准确到了小数点后第2位. 代入a=1.0, b=1.5,求解(2.3)得,k≥log20.50.5×10−2−1=5.6取最小的整数值k=6. 只需二分6次,可得到满足精度要求的解. 计算过程中的数据和结果列于表2-1. 从中看出,准确到小数点后两位的解为x=1.356(准确解为1.353210).表2-1 采用二分法求解例2.2的过程和结果2.2.2 算法稳定性和结果准确度算法的稳定性考察的是计算过程中的误差对结果的影响. 对于二分法来说,主要的计算步骤是计算函数值,一般采用双精度浮点数计算函数值的误差很小,而其他计算是少量的加减法,因此不至于对有根区间,以及最终结果的准确度造成多大影响. 另外,在计算过程中解的误差限逐次减半,这也说明二分法是稳定的.在实际的浮点算术体系中,二分法运行结果的准确度不可能随迭代过程一直提高. 首先看一个例子.例 2.3(二分法准确度的极限):编写程序用二分法来求解方程f(x)=x2−2=0,初始区间为[1, 2].下面是用MATLAB语言编写的程序:M =2; a = 1; b= 2; k = 0;while b-a > eps //Matlab中的eps为2倍的机器精度,即2− 2 x = a + (b-a)/2;if x^2 > Mb = x //输出belsea = x //输出aendk = k+1;end这个程序执行了52步就结束了,输出结果如下:b = 1.50000000000000a = 1.25000000000000a = 1.37500000000000b = 1.43750000000000………………a = 1.41421356237309a = 1.41421356237309b = 1.41421356237310b = 1.41421356237310为了看得更清楚,输入MATLAB命令”format hex”,使输出按16进制格式显示,再运行一遍上述程序,最后的四个输出结果为:a = 3ff6a09e667f3bc8a = 3ff6a09e667f3bccb = 3ff6a09e667f3bceb = 3ff6a09e667f3bcd可以看出,最终区间(a, b)的两个端点已经是两个相邻的浮点数,即使让二分过程继续执行下去,区间仍然不会改变(由于a和b平均值的计算结果就是其中的某一个). 也就是说迭代再多的次数,结果的准确度也无法提高了.上述例子说明了二分法结果准确度的极限情况. 一般地,二分法迭代过程中,有根区间缩小的极限情况是使它的端点a k, b k为两个相邻的机器浮点数. 此时,b k−a k=2⌊log2|x∗|⌋∙2εmacℎ其中εmacℎ为机器精度,⌊∙⌋为下取整符号,而2⌊log2|x∗|⌋为x∗的二进制表示中指数的那部分. 在这种极端情况下,解的误差限就是区间长度,即|e(x k)|=|x k−x∗|≤2⌊log2|x∗|⌋∙2εmacℎ .(2.4) 在IEEE双精度浮点数系统下,εmacℎ=2− 3,则|e(x k)|≤2⌊log2|x∗|⌋∙2εmacℎ≤|x∗|∙2− 2≈|x∗|∙2.22×10−16 .根据(2.4)式,也可得到相对误差的上限:|e r(x k)|=|x k−x∗||x∗|≤2εmacℎ .(2.5)这个相对误差限正好是计算机中用浮点数表示实数的误差限(定理1.5)的两倍.公式(2.4)给出了用二分法求解时绝对误差限可能达到的最小值,它说明在准确解较大的情况下,在执行二分法时无论迭代多少次都无法保证解的误差非常小. 综合上述讨论以及公式(2.2),得到如下定理.定理2.2:在实际的浮点算术体系下采用二分法解方程f(x)=0,设初始有根区间为(a, b),则:(1) 结果的误差限最小可达到2⌊log2|x∗|⌋∙2εmacℎ,其中x∗为准确解,相对误差限最小可达2εmacℎ.(2) 若误差阈值ε大于或等于2⌊log2|x∗|⌋∙2εmacℎ,需执行的迭代步数为k=⌈log2(b−a)−1⌉ .(2.6)定理2.2的结论(2)的证明留给读者思考.最后,对二分法说明几点:●二分法是求单变量方程f(x)=0的实根的一种可靠算法,一定能收敛.●二分法解的误差不一定随迭代次数增加一直减小,在实际的有限精度算术体系中,误差限存在最小值.●二分法的缺点是有时不易确定合适的初始有根区间(含两个初始值)、收敛较慢、且无法求解偶数重的根. 因此,实际应用中常将二分法与其他方法结合起来.2.3不动点迭代法二分法的计算效率不够高,在本章后续部分将介绍几种应用广泛、收敛较快的迭代法. 本节介绍不动点迭代法及其收敛性理论,为后续其他方法的讨论建立基础.2.3.1基本原理通过某种等价变换,可将非线性方程(2.1)改写为:x=φ(x)(2.7)其中φ(x)为连续函数. 给定初始值x0后,可构造迭代计算公式:x k+1=φ(x k),(k=0,1,⋯)(2.8) 从而得到近似解序列{x k}. 由于方程(2.1)和(2.7)的等价关系,很容易证明若序列{x k}收敛,其极限必为原方程(2.1)的解x∗. 由于解x∗满足x∗=φ(x∗),称它为函数φ(x)的不动点(fixed point),此方法为求解非线性方程(2.1)的不动点迭代法(fixed-point iterative method).不动点迭代法的求解过程如图2-4所示,而算法描述图2-4 采用不动点迭代法,近似∗在下面给出.算法2.2:基于函数φ(x)的不动点迭代法输入:x 0, 函数f (x ), φ(x) ; 输出:x .k:= 0 ;While |f (x k )|> ε1 或|x k −x k−1|> ε2 dox k+1:=φ(x k ) ;k:= k +1 ;Endx:= x k .其中ε1和ε2为用于判断迭代是否应停止的两个阈值. 关于迭代的判停准则,我们在2.4.3节详细讨论.例 2.4(不动点迭代法):求f (x )=x 4−x −2=0在x 0=1.5附近的根. 以不同的方式得到方程的等价形式,研究相应的不动点迭代法的收敛情况.[解] 将原方程改为等价的(A), (B)两种形式,得到下述两种不动点迭代法.方法(A):将方程改写为x =x 4−2. 得到的迭代法计算公式为:x 0=1.5, x k+1=x k 4−2,(k =0,1,⋯). 计算出结果如下:x 1=1.54−2=3.0625,x 2=2.3753−1=85.9639,… …从上述计算结果看,序列{x k }有趋于无穷大的趋势,迭代法不收敛,无法求出近似解. 方法(B):将方程改写为x =√x +24. 得到的迭代法计算公式为:x 0=1.5, x k+1=√x k +24,(k =0,1,⋯). 计算出结果如下:x 1=√1.5+24=1.3678,x 2=√1.3678+24=1.3547,x 3=√1.3547+24=1.3534,x 4=√1.3534+24=1.3532,x =√1.3532+24=1.3532,从上述计算结果看,x 4和x 前5位有效数字均为1.3532,可认为迭代过程是收敛的,要求的根为1.3532.通过例2.4可以看出,用不同的方式改造原方程,可得到多种不动点迭代法计算过程,其收敛性质也是不同的. 因此,判断一个不动点迭代法是否收敛至关重要.2.3.2全局收敛的充分条件下面的定理给出一个函数存在唯一不动点的充分条件.定理2.3:设φ(x)∈C[a,b],若满足如下两个条件:(1)对任意x ∈[a,b],有a ≤φ(x)≤b ,(2)存在正常数L ∈(0,1),使对任意x 1,x 2∈[a,b],|φ(x 1)−φ(x 2)|≤L |x 1−x 2|则φ(x)在[a,b]上存在不动点,且不动点是唯一的.在证明定理之前,先理解一下定理中两个条件的含义. 首先,采用不动点迭代法的计算公式为x k+1=φ(x k ), k =0, 1, 2, …,因此要使后续迭代步的计算合法,必须要求φ(x k )的值在函数的定义域内,(1)的条件保证了这一点. 其次,(2)中新加的条件表明,φ(x)曲线上任两点连线斜率的绝对值不超过L ,当两点非常靠近时它就是导数,因此φ(x)曲线上任意点的切线斜率的绝对值都小于1,这说明φ(x)曲线变化很平缓,在曲线上任意点处的斜率都比y =x 和y=−x两条直线小. 这个条件也称为L<1的李普希兹(Lipschitz)条件,L为李普希兹系数. [证明] 先证明不动点的存在性,分两种情况:1). 若φ(a)=a,或φ(b)=b,则a或b为不动点;2). 若φ(a)≠a且φ(b)≠b,则φ(a)>a,φ(b)<b. 令f(x)=φ(x)−x,则f(x)为连续函数,且f(a)>0,f(b)<0.根据连续函数性质,必有x∗∈(a,b),使f(x∗)=0,即φ(x∗)=x∗,x∗为不动点.再证明唯一性,采用反证法. 假设有两个不同的不动点x1∗,x2∗∈[a,b],它们满足φ(x1∗)=x1∗,φ(x2∗)=x2∗,x1∗≠x2∗ .根据(2)中的条件推出,|x1∗−x2∗|=|φ(x1∗)−φ(x2∗)|≤L|x1∗−x2∗|<|x1∗−x2∗| .产生矛盾!所以假设x1∗≠x2∗不成立,不动点是唯一的.应说明的是,上述证明不动点的存在性只使用了条件(1). 事实上,通过画函数曲线图的方式也可以形象地说明不动点的存在性,这一点留给感兴趣的读者思考.下面的定理给出不动点迭代法收敛的充分条件.定理2.4:设φ(x)∈C[a,b]满足定理2.3的两个条件,则对于任意初值x0∈[a,b],由不动点迭代法得到的序列{x k}收敛到φ(x)的不动点x∗,并有误差估计:|x k−x∗|≤L k1−L|x1−x0| .[证明] 首先注意到定理条件保证了不动点唯一存在,而且条件(1)保证了不动点迭代法可执行下去,从而得到序列{x k}. 下面证明序列{x k}收敛,其思路是考虑误差序列,证明其极限为0.|x k−x∗|=|φ(x k−1)−φ(x∗)|≤L|x k−1−x∗|≤⋯≤L k|x0−x∗|由于L为小于1的正常数,则lim k→∞L k|x0−x∗|=0,⟹limk→∞|x k−x∗|=0, ⟹limk→∞x k=x∗.这证明了不动点迭代法是收敛的. 剩下|x k−x∗|≤L k1−L|x1−x0|的证明,留给读者思考.定理2.4为判断不动点迭代法的收敛性提供了依据,这种收敛不依赖于初值x0的选取,因此称为全局收敛性. 为了方便应用,也可以将定理2.3, 2.4中的第2个条件替换为:对任意x∈[a,b],有|φ′(x)|≤L<1,其中L为常数,得到便于使用的定理2.5.定理2.5:设φ(x)∈C[a,b],且满足如下两个条件:(1)对任意x∈[a,b],有a≤φ(x)≤b;(2)存在正常数L<1,使对任意x∈[a,b],有|φ′(x)|≤L<1.则对于任意初值x0∈[a,b],由不动点迭代法得到的序列{x k}收敛到φ(x)的不动点x∗,并有误差估计:|x k−x∗|≤L k1−L|x1−x0| .此定理可看成定理2.4的推论,其证明留给读者思考.例2.5(不动点迭代法的收敛性):对于求f(x)=x4−x−2=0在x0=1.5附近的根的问题,使用定理2.5考察例2.4中两种方法的全局收敛性.[解]在区间[1, 2]上考察如下两种不动点迭代法的收敛性:方法(A):x k+1=x k4−2, (k=0,1,⋯).方法(B):x k+1=√x k+24, (k=0,1,⋯)很容易看出,方法(B)符合定理中的条件(1),而φ′(x)=14(x+2)−3/4,也符合条件(2),因此方法(B)具有全局收敛性. 而对于方法(A),它不符合定理中的条件(1),因此无法根据定理2.5说明其具有全局收敛性.关于全局收敛性再说明两点:●定理2.4, 2.5给出的都是不动点迭代法全局收敛的“充分条件”,也就是说,对一些满足条件的方法可以证明其具有全局收敛性,但根据它们并不说明某个方法不具有全局收敛性.●全局收敛性要求初始值x0为定义域内任意值时不动点迭代法都收敛,这常常是很难达到的要求.2.3.3局部收敛性不同于全局收敛性,下面给出重要的局部收敛性的概念.定义2.2:设函数φ(x)存在不动点x∗,若存在x∗的某个邻域D: [x∗−δ,x∗+δ],对于任意初值x0∈D,迭代法x k+1=φ(x k)产生的解序列{x k}收敛到x∗,则称迭代法局部收敛.这个定义中的邻域是以x∗为中心点的一个对称区间,局部收敛性的定义要求的是存在这样一个邻域,而不关心它的大小. 下面的定理给出迭代法局部收敛的充分条件.定理2.6:设x∗为函数φ(x)的不动点,若φ′(x)在x∗的某个邻域上连续,且|φ′(x∗)|<1,则不动点迭代法x k+1=φ(x k)局部收敛.[证明] 因为φ′(x)在x=x∗附近连续且|φ′(x∗)|<1,则存在x∗的某个邻域D,使得对于任意. 显然L<1, 的xϵD, |φ′(x)|≤L, 其中L是某个介于|φ′(x∗)|和1之间的数, 例如L=|φ′(x∗)|+12即满足定理2.5的条件(2). 另外,对∀x∈D,φ(x)−x∗=φ(x)−φ(x∗)=φ′(ξ)(x−x∗), ξ∈D, ⟹|φ(x)−x∗|≤L|x−x∗|<|x−x∗|, 即φ(x)∈D,满足定理2.5的条件(1).因此,根据定理2.5,此迭代法对区间D内的任意初值都收敛,根据定义2.2知,此迭代法局部收敛.对比定理2.6和定理2.4、2.5可以看出,定理2.6的条件较为宽松,它只需要考察函数φ(x)在x∗这一点上是否满足要求. 因此,不动点迭代法较容易具有局部收敛性,对局部收敛的判断也相对简单.最后说明一点,定理2.5说明李普希兹系数L越小迭代收敛的速度越快,而定理2.6的证明过程说明了L与|φ′(x∗)|的关系. 因此,若|φ′(x∗)|越小,迭代收敛的速度就越快.2.3.4稳定性与收敛阶与二分法类似,不动点迭代法的每步计算都可以通过判停准则(包括考察f(x k)是否接近0)来评估解的准确度,因此解的误差容易被及时发现和纠正. 只要迭代过程是收敛的,误差将随迭代步的增加逐渐趋于零,而不会像某些算法的舍入误差会随迭代过程逐渐累积. 因此收敛的不动点迭代法总是稳定的. 在本章后续算法的讨论中,我们将不再关心稳定性,而将重点放在收敛性的讨论上.对于收敛的迭代法,其收敛速度的快慢也很重要,它关系到达到特定的准确度需要多少步迭代,也就是需要多少计算量. 下面先看一个例子,然后给出收敛阶的概念用于衡量迭代收敛的速度.例2.6(迭代收敛速度):假设有(1)~(3)三个迭代求解过程,其迭代解的误差|e(x k)|=|x k−x∗|随迭代步变化情况分别为:(1) 10-2, 10-3, 10-4, 10-5, ……。
非线性方程求根方法分解PPT课件
n ln(b a) ln 10.96... ln 2
即最多需要11次二分。
x
xn
1 2
(b11
a11 )
0.000488281
1 10 3 2
12
第12页/共48页
计算结果
k
ak , bk
1
[1.0 , 2.0]
xk
1.5
f (xk )
2.375
1
第1页/共48页
根的概念
• 给定方程 f (x)=0,如果有a使得f(a)=0,则称a为 f(x) =0的根 或f(x)的零点.
• 设有正整数m使得f(x)=(x-a)mg(x)且g(a) 0 , 则当m=2时,称a为f(x)=0的m重根; 当m=1时,称为f(x)=0的单根.
• 本章只讨论实根的求法.
从而
f (x )f (x ) (x ) [f (x )]2
由此知若 x 是f (x ) 0 的一个单根,则在x 附近 x * =0 Newton法是局部收敛的,并且收
敛速度至少是平方收敛的.
但如果x 是f (x ) 0 的m>1重根,0则
x*
11 1 m
此时Newton法仅有线性收敛速度.
30
第30页/共48页
{xk }
x 2 12.39
21
第21页/共48页
几何示意图
第22页/共48页
例 讨论以下计算 a (a 0) 的算法的收敛阶。
xn 1
1 2
xn
a xn
23
第23页/共48页
解:(1)
(x ) 1 (x a ) 2x
a 1aa
a
2
a
第6章非线性方程求根
10
例如代数方程 超越方程
x5-x3+24x+1=0, sin(5x2)+e-x=0.
方程是在科学研究中不可缺少的工具, f ( x) 0
方程求解是科学计算中一个重要的研究对象.
几百年前就已经找到 了代数方程中二次至 四次方程的求解公式;
但是,对于更高次数 的代数方程目前仍 无有效的精确解法;
家国民教育委员会批准开除出巴黎师范大学;
8
1831年5月l0日,伽罗华以“企图暗杀国王”的罪名被捕,关 押在圣佩拉吉监狱;
l832年3月16日伽罗华获释后不久,为了一个舞女决定为“爱 情与荣誉”决斗;
1832年5月29日夜,伽罗华仓促地把自己生平的数学研究心得 扼要写出,附以论文手稿,并在给朋友舍瓦利叶的信中说:“我 在分析方面做出了一些新发现。有些是关于方程论的;有些是关 于整函数的……。公开请求雅可比或高斯,不是对这些定理的正 确性,而是对这些定理的重要性发表意见。我希望将来有人发现,
3
米兰的数学和物理教授卡尔达诺(Cardano,1501—1576) 获悉该事后央求塔尔塔利亚将密诀告诉他,并发誓保密,在 卡尔达诺的恳求下,塔尔塔利亚把他的方法写成一首晦涩的
诗告诉了卡尔达诺; 1545年卡尔达诺出版著作《大法》(Arsmagna) ,公布了
一般三次方程求根公式,称为卡尔达诺公式; 《大法》同时公布了意大利数学家费拉里(Ferrali, 1522-1565)仿照一般三次方程求根思想,推导的一般四次
挑战对手的秘密武器; Ferro在临终前将解法传给了他的学生安东尼奥·菲奥尔
(Antonio M.Fior);
费罗去世后,菲奥尔向当时意大利最大的数学家之一塔尔 塔利亚(Tartaglia,1500—1557)提出挑战,要他解出30个三 次方程,塔尔塔利亚用8天时间解出了全部30个方程,得到了
第6章 非线性方程求根(2、newton法、迭代法的收敛阶)
定理 考虑方程 x = g(x), g(x)∈C[a, b], 若 ∈
( I ) 当 x∈[a, b] 时, g(x)∈[a, b]; ∈ ∈ ; ( II ) 0 ≤ L < 1 使得 | g’(x) | ≤ L < 1 对 x∈[a, b] 成立。 成立。 ∈ 则任取 x0∈[a, b],由 xk+1 = g(xk) 得到的序列 { x k }∞= 0 收 , k 敛于g(x) 在[a, b]上的唯一不动点。并且有误差估计式: 敛于 上的唯一不动点。并且有误差估计式: 上的唯一不动点 k 1 L | x * xk | ≤ | x k +1 x k | | x * xk | ≤ | x1 x 0 | 1 L 1 L 且存在极限
=
m 1 m
A3: 线性收敛
下山法 /* Descent Method */ ——Newton’s Method 局部微调: 局部微调: 原理: 减小, 原理:若由 xk 得到的 xk+1 不能使 | f | 减小,则在 xk 和 xk+1 之间找一个更好的点 x k + 1 ,使得 f ( xk+1 ) < f ( xk ) 。 xk xk+1
f ( xk ) x k +1 = λ [ x k ] + (1 λ ) xk f ′( xk ) = xk λ f ( xk ) f ′( xk )
λ xk +1 + (1 λ ) xk , λ ∈ [0, 1]
注:λ = 1 时就是Newton’s Method 公式。 时就是 公式。 代入效果不好时, 减半计算。 当 λ = 1 代入效果不好时,将 λ 减半计算。
x * x k +1 lim = g ′( x * ) k →∞ x * x k
第6章 - 非线性方程求根方法
② 计算:f0 = f (x0)(即中点函数值)
③ 生成含根区间 若 f (x0) = 0, 则x* = x0, 若f (x0) · (a0) > 0, 取 a1= x0, b1 = b0, f 若f (x0) · (a0) < 0, 取 a1= a0, b1 = x0 f
8
生成含根区间[a1, b1]满足:
二、 非线性方程(组)求解的特点
求解的特点:无求解公式,无直接解法,难求得精确解。 例: 超越方程 ex + cosx = 1 没有一定的解法。 又例如对于大于等于五次的代数方程,无解析根表 达公式,只能使用数值方法对于实际问题进行求解。
2
考虑非线性方程:
f (x) = 0
原理
如果
f ( x) C[a, b], f (a) f (b) 0
如果取初值 x0 = 1.9 ,计算得 k 0 1 2 3 4 5 xk 1.9 1.89453647 1.89352114 1.89333233 1.89329722 1.89329069 k 6 7 8 9 10 … xk 1.89328947 1.89328925 1.89328921 1.89328920 1.89328920 ……
1.6093750
1.6015625 1.5976562 1.5957031 1.5947266 1.5947266 1.5947266 1.5946045 1.5946046
1.6015625
1.5976562 1.5957031 1.5947266 1.5942383 1.5944824 1.5946045 1.5945435 1.5945741
(3.1)
(2) 从某初始值x0出发,作序列{xk}
第六章非线性方程求根
1.简单迭代法
f (x) = 0 等价变换 x = (x) (6.3.1) 其中 (x)是连续函数。方程(6.3.1)称为不动点方程,满足
(6.3.1)式的点称为不动点,这样就将求 f ( x ) 的零点问题转 化为求 ( x ) 的不动点问题。 以不动点方程为原型构造迭代格式
收敛于1
同样的方程 不同的迭代公式 有不同的结果
x6 = 1.0000
什么形式的迭代法能够收敛呢?
x7 = 1.0000
说明:①迭代函数不唯一; ②迭代点列可能收敛,也可能发散,迭代收敛与否 不仅与迭代函数有关,还与初始点有关。
y
y=x
p1
y= (x)
p0
✓
x
x0
x1 x*
y
y= (x) y = x
1.287,1.51,1.5
由
x3 x2 0,
4 10x3
x3x40x3 10x33 20 8
知当 x1,1.5 时, x1.53 1.52 0.65561
410 1.52
所以迭代格式(2)是收敛的。
2
x*
x
执行步骤 1.计算f (x)在有解区间[a, b]端点处的值,f (a),f (b)。
2.计算f (x)在区间中点处的值f (x1)。
3.判断若f (x1) = 0,则x1即是根,否则检验: (1)若f (x1)与f (a)异号,则知解位于区间[a, x1], b1=x1, a1=a; (2)若f (x1)与f (a)同号,则知解位于区间[x1, b], a1=x1, b1=b。
非线性方程求根
实际中,用解方程组的形式
J ( X k )( X k 1 X k ) F ( X k )
迭代法的基本步骤如下:
f ( x) 0 x ( x ) 2、取合适的初值,产生迭代序列 x0 , xi 1 ( xi )
1、给出方程的局部等价形式 3、求极限
x* lim xn 易知,该值为方程的根 n
一定收敛吗?
y p1 p0
y=x y=g(x)
y y=g(x) p0
什么时候停止?
a
x a1 x* x2 b b
xk 1 xk ε1
或
f ( x ) ε2
算法
While(|a-b|>eps) x=(a+b)/2 f(x) 若(|f(x)|<eps) x为解 若f(x)*f(b)<0 修正区间为[x,b] 若f(a)*f(x)<0 修正区间为[a,x] End while
若 f ' ( x0 ) 0 ,则有
y
记为
f ( x0 ) x x0 f ' ( x0 )
类似,我们可以得到
x1
x* x
x0
f ( x1 ) x2 x1 f ' ( x1 )
这样一直下去,我们可以得到迭代序列
xk 1 xk
f ( xk ) f ' ( xk )
Newton迭代的等价方程为:
非线性方程求根
非线性科学是当今科学发展的一个重要研究方向,而非线性方程的求根也成了一个 不可缺的内容。但是,非线性方程的求根非常复杂。 通常非线性方程的根的情况非常复杂:
sin( 2 x) y 1 y 2
无穷组解
第6章 非线性方程求根
f(x1)=0 f(x2)=0
X3
f(x3)=0
1、定义:对于函数y=f(x),函数图象与x轴的交点的 横坐标叫做y=f(x)的零点。 2、结论:函数的零点就是函数y=f(x)的图象与x轴的 交点的横坐标,也就是方程f(x)=0的实数根,所以 方程f(x)=0有实数根 函数y=f(x)的图象与x轴有交 点 函数y=f(x)有零点。
历史背景
代数方程的求根问题是一个古老的数学问 题。理论上,n次代数方程在复数域内一定有 n个根(考虑重数)。早在16世纪就找到了三次、 四次方程的求根公式,但直到19世纪才证明大 于等于5次的一般代数方程式不能用代数公式 求解,而对于超越方程就复杂的多,如果有解, 其解可能是一个或几个,也可能是无穷多个。 一般也不存在根的解析表达式。因此需要研究 数值方法求得满足一定精度要求的根的近似解。
例 用二分法求例1中方程 f(x)=x3-x-1=0的实根, 要求误差不超过0.005.
解 由x*∈(1, 1.5),即:
|x*-xn|≤0.005 则要
1 1 1 (b a ) n (1.5 1) n1 0.005 n 2 2 2
2 由此解得 n 6.6, 取n=7, 按二分法计算过程见 lg 2
分别按以上三种形式建立迭代公式,并取x0=1进行
迭代计算,结果如下:
xk 1 1 ( xk ) (3 xk 2 x )
1 2 4 k
x26 x27 1.124123
xk 1 2 ( xk ) xk 4 1
x6 x7 1.124123 4 2 xk 1 3 ( x k ) x k 2 xk 3
1 例6.2: 求方程f ( x ) xe 1 0 (或x e )在[ , ln 2]中的解。 2 若要求 x * xk 106 ,迭代次数k至少应为多少?
第六章 非线性方程
下用反证法证其惟一性,若原方程在 a, b 内有两根 x1* , * * * x2 ,即 x1* x1* , x2 x2 ,则由定理中条件(2),得
* * * * * * * * x1 x2 ( x1 ) ( x2 ) L x1 x2 x1 x2
x x
其中 g x* 0 或者 lim* g x 0, m 为正整数,则称
x* 是 f x 的 m 重零点,或称 x * 是方程 f x 0
的 m 重根.
m * 定理6.1 设函数 f x C a, b , 则点 x a, b 是 f x 的 m 重零点,当且仅当
;
10 (2) x 2 ( x) ( 4 x) , ( x 0) x 1 3 (3) x 3 ( x) 10 x 2
(4) x 4 ( x) (5)
10 , ( x 4) 4 x
x3 4 x 2 10 x 5 ( x) x 3x 2 8 x
选定一个初始值 x0 , 利用递推关系 (6.3) 得到数列 xk k 0 . 若 lim xk 存在,则称迭代过程(6.3) k 是收敛的;否则称它是发散的.
x 连续且数列 xk k 0 收敛,则一定收敛于 x* , 若
即 lim xk x* .我们称此种方法为不动点迭代法. k 称式(6.3)为不动点迭代格 式, x 为迭代函数. 从几何上看,是求直线 y x 与曲线 y ( x)
2
(bk a k )
2 k 1
即 xk k 0 收敛于 x* .
由此可见,二分法不仅是一种缩小隔根区间的方法, 还是一种独立的求根方法. 实际计算时,对事先给定的精度要求 , 只要二分 的次数 k 满足不等式:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 -3 令 k+1 (b a) 10 k 10 2 2
1
6.4
一、基本思想与步骤 基本思想
简单迭代法
给定一个根的初始近似值,然后用同一个迭代 格式反复校正这个初值,直到得到满足精度要求的 根的近似值为止。 方法与步骤
用二分法求此方程的根,要求精确到小数点后面3位。
解: f (0) 1 0; f (1) e 8 0; f ( x)在[0,1]上连续;
f ( x) e x 10 0
f ( x) 0在(0,1)内有唯一实根 x *.
用二分法求此方程的根 ,设至少需要将 [0,1]区间对分k次,
第六讲 非线性方程求根问题
• 非线性是实际问题中经常出现的,而且地位越 来越突出。 • 我们熟悉的很多线性问题或模型,通常都是非 线性问题在一定条件下的一种近似。 • 非线性方程可以是单个的方程,更多的情况则 是多个方程联立的方程组。
例如:
x 2 x 6 x 13x 8 x 12 0
x *是函数 ( x)
,可见 由于 x *满足 x* ( x*) 的不动点。
因此简单迭代法又称为不动点迭代法。
例4:用简单迭代法求f ( x) x 2 x 3 0 在[2,4]内的根。
2
解:方法一
x 2 x 3 xk 1 2 xk 3 , k 0,1,2, 给定初值x0 4, 带入迭代格式,计算可得: x1 3.317, x2 3.104, x3 3.034, x4 3.011, lim xk 3
xk xk 1 或
xk xk 1 xk 1
r
来控制。
(2)当 ( x) 1 时,迭代发散 (3)该定理说明对在整个区间[a, b] 上任意选取的初值 迭代均收敛,故该定理称为迭代法的全局收敛性 定理。
收敛性图示
y=x
y ( x)
A0 P0
x0
A1 A 0 x* x2 x1
xk
为此,将原方程改写为 x ln(2 x), x [1,2] ( x) ln(2 x), ( x) [ln 3, ln 4] [1,2] 1 1 且 ( x) 1 , ( x [1,2]) 2 x 3 构造迭代格式 xk 1 ln(2 xk ) k 0,1,2, 该迭代格式是收敛的。
局部收敛性 (1)局部收敛概念
若迭代过程 xk 1 ( xk ) 对 x0 x x x * 均收敛,则称迭代格式在根 (2)局部收敛判定定理
x *附近具有局部收敛性。
设
( x) 在根的附近连续, x * 是方程 x ( x) 的根,
且 ( x*) 1 ,则迭代过程 xk 1 ( xk ) 在根的附近具有 局部收敛性。
k
迭代收敛!
方法二
1 2 1 2 x ( x 3) xk 1 ( xk 3), k 0,1,2, 2 2 给定初值x0 4, 带入迭代格式,计算可得: x1 6.5, x2 19.625, x3 191.070,
迭代发散! 问题:如何构造收敛的格式?如何估计误差? 如何提高收敛速度?
注意:
在实际应用中,只要迭代初值在根的附近,就可以用
( x0 ) 代替 ( x*) 加以判定是否局部收敛。
例6 已知方程
xe
x
考察用格式 在0.5附近有一个根,
xk 1 e
xk
求此根的局部收敛性。
解:这里 x0 0.5 因此有 ( x0 ) e0.5 0.61 1 所以该迭代格式具有局部收敛性。
2 2
( s x)
2 5
0 (3)
该方程的根为函数C(x)的驻点,将驻点和区间端点 x=a,x=s的函数值比较,就可以得到C(x)的最小 值点和最大值点。
6.2
基本概念
(1) 若 f ( x*) 0 则称 x *为方程 f ( x) 0 的根 或称为函数 f 的零点。 (2) 若 f ( x) 可以表示为
( p 1)
( x*) 0, ( p ) ( x*) 0
二、根的精确化——二分法 bisection method
应用前提
f ( x) C[a, b] ,且满足 f (a) f (b) 0,则方程
f ( x) 0在 [a, b]中至少有一个实根。
基本思想 通过隔根区间中点处函数值的符号,将隔根 区间逐次对分,使隔根区间的宽度逐步缩小,利 用宽度充分小的隔根区间内任何一点(通常用中 点)近似方程的根。
例7:设 ( x) x c( x 2 3) 应如何选取常数c, 才能使迭代格式 xk 1 ( xk ) 在方程 x ( x) 的根的附近具有局部收敛性? 解: 显然方程 x ( x) 的根为 x 3 ( x 3 ) 令 解得
( 3 ) 1 2c 3 1
lim
ek 1 ek
p
k
c0
成立,则称序列 xk 是p阶收敛的。
注: (1)当p=1且0<c<1时,称为线性收敛; (2)当p=2时,称为平方收敛; (3)当p=1,c=0时,称为超线性收敛; (4)p越大收敛越快。
2、收敛阶的判定
Th:给定方程 x ( x) ,x * 为方程的根,若满足 (1) ( x ) 在根的附近具有直到p阶的连续导数; (2) ( x*) ( x*)
二、迭代过程的收敛性与误差估计
Th1(全局收敛定理)
设函数 ( x )在[a, b]上满足: (1)x [a , b], ( x) [a , b] (2) 0 L 1, s.t.x [a, b], ( x) L 则方程 x ( x) 在[a , b] 上有唯一实根 均收敛到方程的根。
f ( x) ( x x*)m g ( x)
,则称 x *为方程 其中m为正整数,并且 g ( x*) 0
f ( x ) 0 的m重根或函数 f 的m重零点。
例如: f ( x) ( x 1)2 ( x 3)4 0
(3)方程的分类
若 f ( x) 是关于变量x的n次代数多项式,则称方程
图6.2
x 2 2 x 4 ln x 0
图6.3
2、数学分析法:零点定理+函数的单调性 例 2: 求方程 f ( x) x 3 3x 2 4 x 3 0 的一个隔根区间。 解:
f (0) 3 0 ,
2
f (2) 1 0 ,
2
f ( x) 3x 6 x 4 3( x 2) 1 0 f ( x)在[0, 2]内有且仅有一个根, [0, 2]就是方程的一个隔根区间
xk 1 xk ε1
f ( x) ε2
xk 1 xk xk
ε1
二分法的优点:计算简单,方法可靠; 缺点:不适合求偶数重根,也无法求复根,收敛速度 慢。通常用于为迭代法求方程的根提供一个较好的初 值。
例3:证明方程 f ( x) e x 10 x 2 0 存在唯一实根 x* (0,1)
P P2 sin 2 1 sin 1 I1 k , I2 k 2 2 r1 r2
(1)Biblioteka 其中k是量纲单位决定的比例系数,不妨记k=1.
同时还有
r h x
2 1
2 1
2
r2 h2 (s x)
2
2
2
h2 h2 h1 h1 sin 2 sin 1 2 2 2 2 r r1 2 h ( s x ) h1 x 2
P1 x0
y ( x)
A
y=x
A0
P0 P1
A1
A2
x2
P2 x1 x0 x*
例5:对方程 f ( x) e x x 2 0 用迭代格式
xk 1 e xk 2, k 0,1,2, 求根,是否收敛?
若不收敛,试构造一个收敛的迭代格式求此方程的根。
解: f (1) e 3 0, f (2) e 2 4 0; f ( x)在[1,2]上连续,从而 f ( x)在(1,2)内有零点。 ( x) e x-2, ( x) e x 1, ( x [1,2]) 迭代格式xk 1 e 2发散。
从而点Q的照度C应该为
C ( x ) I1 I 2
h
P 1h1
2
1
x
2 3
h
P2 h2
2
2
( s x)
2 3
(2)
于是,求路面上最暗点和最亮点的问题化为求函数 C(x)的最小值点和最大值点。为此,令
C ( x) 3
h
P 1h1 x
2
1
x
2 5
3
h
P2 h2 ( s x)
模型:建立如图6.1所示的坐标系,路面的宽度为s,两 只路灯的功率分别是P1和P2,高度分别是h1和h2.
P2 Y P1 h1 r1 r2 h2
O
1 Q 2
x 图6.1 路灯照明
s
X
设两路灯连线的路面上某点Q的坐标为(x,0),其中
0 x s 假设两个光源都可以看成点光源,它们在
点Q的照度分别为I1和I2。则
y
y f ( x)
x*
a
x1
图6.4
x0
二分法原理示意图
b