非线性方程求根的方法简介与例题
第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
非线性方程求根—牛顿迭代法(新)

非线性方程求根——牛顿迭代法一、牛顿迭代法的基本思想基本思想:将非线性方程逐步归结为某种线性方程求解。
设方程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 *附近至少平方收敛。
非线性方程的求根方法

取 x0=0,
3 xk xk 3 xk 1 xk 2 3 xk 1
(k = 0, 1, · · · · · )
y x1 x2 x3 x0 x
y=x3 – x – 3
Newton迭代法陷入死循环的另一个例子
f’<0, f”>0
f’>0, f”>0
f’>0, f”<0
f’<0, f”<0
牛顿迭代法的收敛域问题:
用牛顿迭代法求解复数方程 z3 – 1 = 0,该方程在复 平面上三个根分别是 z1 = 1
1 3 z2 i 2 2
1 3 z3 i 2 2
选择中心位于坐标原点,边长 为2的正方形内的任意点作初始 值,进行迭代,把收敛到三个 根的初值分为三类,并分别标 上不同颜色(例如红、黄、 蓝)。对充分多的初始点进行 实验,绘出牛顿迭代法对该方 程的收敛域彩色图。
牛顿法的计算步骤: 1)给出初始近似值x0,及精度 2)计算:按迭代公式
f ( x0 ) x0 x1 f ( x 0 )
计算出x1 3)若 x1 x0 ,则转向4);否则 x1 x0 转向2) 4)输出满足精度的根x1,结束
例2.5 用牛顿法解方程 x=e–x
在 x0=0.5 附近的根。
由定理2.5知牛顿迭代公式具有局部收敛性。
由定理2.6知 Newton迭代法至少平方收敛。因此用 Newton法求单根的收敛速度是较快的。
[ f ( x )]2 f ( x ) f ( x ) f ( x ) f ( x ) 2[ f ( x )]2 f ( x ) ( x ) [ f ( x )]3
x1 x*
f ( x1 ) x2 x1 ( x1 x0 ) f ( x1 ) f ( x0 ) xk 1 f ( xk ) xk ( x k x k 1 ) f ( x k ) f ( x k 1 ) ( k =1,2,· · · · · · ·)
第七章 非线性方程求根方法

f ( x) g ( x) x f ( x)
7.3 牛顿迭代法和割线法
局部收敛性 设方程 x = g(x)有根x,且在 x* 的某个领域 S = {x | x [x* - d, x* + d]}
内存在一阶连续导数,则
当|g’(x*) |<1时,迭代格式xk+1 = g(xk)局部收敛 当|g’(x*) |>1时,迭代格式xk+1 = g(xk)发散
2.666667 2.645833 2.645751 2.645751
2.625000 2.687500 2.656250 2.640625 2.648438 2.644531 2.646484 2.645508 2.645996
2.645751 2.645751
几何意义
f ( xk ) xk 1 xk f ( xk )
xk 1 g ( xk )
可得序列 {xk}: x0, x1, x2, x3, …… 如果g(x)是连续函数 且当k→∞时,序列{xk}有极限x*,则x*是方程f(x)=0的根 迭代序列{xk}收敛,则迭代法收敛;反之,则发散
7.2 简单迭代法 用迭代法求下列方程在区间[2, 4]的根。
收敛
对任意xb迭代格式xk1产生的迭代序列都收敛于方程xgx在区间ab上的唯一实根x定理21定理2172简单迭代法73牛顿迭代法和割线法局部收敛性设方程x1时迭代格式xk11时迭代格式xk1发散73牛顿迭代法和割线法牛顿迭代法的局部收敛性73牛顿迭代法和割线法2x迭代公式为73牛顿迭代法和割线法例
第七章
Lk xk x* x1 x0 1 L
证明过程(P100-101)如下:
第2章 非线性方程求根

第2章非线性方程求根§2.1 引言§2.2 二分法§2.3 迭代法2.3.1 迭代格式2.3.2收敛性条件2.3.3迭代法的收敛阶2.4迭代收敛的加速§2.5 牛顿迭代法2.5.1 迭代格式2.5.2 迭代法的收敛阶x yo a b* x*解析解与数值解由推理的方法计算--- 解析解(精确解)。
近似计算(数值计算)---数值解(近似解)常借助于计算机工程实践中遇到最大量的将是数值计算问题。
2.1 引言*数值求解方程(组)的必要性“方程是很多工程和科学工作的发动机”.非线性现象广泛存在于物质世界与社会生活中.在工程和科学计算中,常涉及到非线性方程或非线性方程组的求解问题.例如:(1) 在光的衍射理论(the theory of diffraction of light)中,我们需要求x – tan x = 0 的根(2) 在行星轨道( planetary orbits)的计算中,对任意的a和b,我们需要求x –a sin x = b的根(3) 在数学中,需要求n 次多项式 sin 0,01x t x εε--=<<(4)在天体力学中,有如下开普勒(Kepler )方程t x x t i t i x 其中 表示时间, 表示弧度,行星运动的轨道 是 的函数.也就是说,对每个时刻 ,上述方程 (运动轨道位置).(超越方程)有唯一解 1110n n n n x a x a x a --++++=的根。
在非线性方程的求解中,多项式求根是最常见、最简单的情形,例如想通过矩阵的特征多项式求特征根,就会遇到这一问题.20(0) ax bx c a++=≠一元二次方程求根公式30x px q++=242b b acxa-±-⇒=一元三次方程求根公式根据代数基本定理,在复数域内,n 次代数多项式有且只有n个根,而由伽罗华(Galois)理论,5次以上(含5次)的多项式方程无求根公式,例如求代数方程652++--=x x x x632480的根.除了多项式求根之外,更多的是超越方程求根问题.超越方程是指包含指数函数、三角函数等特殊函数的方程.例如前面的几个例子又如求解非线性方程组 {0.7sin 0.2cos ,0.7cos 0.2sin .x x y y x y =+=-*x *()0f x *x f ()f x 上述这些问题,都归结为寻求非线性函数 使 . 称为方程或方程组( 为向量函数时) 的零点.的根或函数 由于自然现象和实际问题的复杂性,对函数方程和方程组求解问题,没有哪一种方法能求出一般方程的准确解.因此,求其数值解就非常必要了.方程的根,即求本章主要内容:介绍用于实际计算中求 f (x) = 0 的根的近似值的几种常用方法。
第四章 非线性方程求根

4.1 方程求根与二分法
当 f ( x) 为代数多项式时,根据代数基本定理可知, n 次方程在复数域有且只有 n 个根,因此可利用迭代 法求代数方程的根。 二分法 若 f ( x) C[a, b] ,且 f (a) f (b) 0 ,根据连续函数性质 可知 f ( x) 在 [a, b]内至少有一个实根,此时称[a, b]为方程 若 f ( x) 可表示为 f ( x) ( x x* )m g ( x),其中 m 为正整数,且 g ( x* ) 0 。当 m 1 时,称 x* 为单根,若m 1 称 x* 为 m 重 根,或 f ( x) 的 m 重零点。若 x* 是 f ( x) 的 m 重零点,且 g ( x) 充分光滑,则
4.1 方程求根与二分法
这样,我们得到了一个序列 xn ,为确定 xn 的收敛性 我们有如下的定理: 定理:设 f ( x) C[a, b], f (a) f (b) 0, 则二分算法产生的 序列 xn 满足 xn x* (b a) / 2n ,其中 x* [a, b]为方程的根。 证明:因为 [an , bn ] 由[an1 , bn1 ] 对分得到,所以对 n 1 bn1 bn , 否则取 an1 an , bn1 xn , 这样必有 f (an1 ) f (bn1 ) 0 所以 [an1 , bn1 ] 就是新的有根区间,继续此过程,即可得 到结果。 算法:(1)令 x (a b) / 2 (2) 若 f ( x) 或 b x ,则输出 x ,结束 (3) 若 f (a) f ( x) 0 ,则令 a x ,否则令 b x (4) 转向1)
第7章 非线性方程求根

k 且区间长度逐次减半, bk ak (b a) 2 .
非线性方程求根的二分法
二分法基本步骤: 随着k的增大,有根区间长度趋于零,区间端点向 * lim a lim b lim x x . 一点收缩, k k k k k k 显然x*即为f(x)=0的根。而x0, x1, …,xk,…为近似根 * 序列。设要求精度为ε ,即 x xk ,
x1 x* ( )(x0 x* ) M ( x0 x* ), x2 ( x1 ), x2 x M ( x1 x ).
* *
加速迭代法
消去M得
x1 x* x0 x* , * * x2 x x1 x
2
2 x x x ( x x ) 1 0 x* x1 0 2 1 x0 , x2 2 x1 x0 x0 2 x1 x2
斯蒂芬森迭代法
结合埃特金加速法和不动点迭代法形成斯 蒂芬森迭代法:
yk ( xk ), z k ( yk ), ( y k xk ) xk 1 xk z k 2 y k xk
2
(k 0,1, ).
斯蒂芬森迭代法几何意义
定义x点关于方程 x ( x) 的误差为: ( x) ( x) x. * * * * ( x ) ( x ) x 0. 则该方程的根x 的误差
非线性方程的迭代法求根
基本概念 非线性方程f(x)=0的根(解) x*,也称为非线性 函数f(x)的零点,f(x*)=0。 f(x)=0的m重根定义:f(x)=(x-x*)mg(x), g(x*)≠0,则称x*为f(x)=0的m重根,或f(x)的 m重零点。 m重根的判定条件: x*为f(x)=0的m重根当 且仅当 * * ( m1) * ( m) * f (x ) f (x ) f ( x ) 0; f ( x ) 0.
第2章非线性方程求根

解:设最多需要迭代n次。
∵要求精确到小数点后3位,
∴误差限≤ 12×10-3,
∴由定理2.1得:
n=
lg(1
0)
lg( lg 2
1 2
103 )
1
=
0
( lg 2 lg 2
3)
1
=
0.301 0.301
3
1= 10 .97
1
=10,即最多需要迭代10次。
用对分法求f(x)=0在某区间的单根,最多迭代次数与函数f(x)曲线形状无 关。一般情况下,对分法的最多迭代次数比其他的变步长逐步搜索法要 少,因此对分法是用得最多的变步长逐步搜索法。
if(f(b)==0) x=b;
else for(begin=a,end=a+h;begin<b;begin=end,end+=h)
{
if(end>b)end=b;
if(f(begin)==0)
{x=begin;break; }
if(f(begin)*f(end)<0)
{x=(begin+end)/2;break; }}
Y
N
x=begin;
break;
f(begin)*f(end)<0
Y
N
(end-begin)/2<=ε
Y
N
x=(begin+end)/2;
h/=hnumber;
break;
end=begin;
输出方程f(x)=0的根x。
8
2.3 根的搜索
变步长逐步搜索法对应的程序
#include <stdio.h> double f(double x);
计算方法非线性方程求根

计算方法非线性方程求根第十章非线性方程求根知识点:求根的基本概念,对分法,迭代法,误差,编程停机判断,算法说明1.概念(1)根的概念方程f(x)=0的解叫做方程的根或f(x)的零点。
例如x-cosx=0,x-e x=0求方程的根是数值计算的任务之一,当不易求得f(x)=0的解析解时,可以考虑求其近似根。
求实根问题包括:根的存在性;根的分布;根的精确化.(2)根的存在性如果f(x)是[a,b]上的连续函数,且f(a) f(b)<0,则f(x)=0在(a,b)至少有一个根;若单调,则f(x)=0在(a,b)有惟一根。
(3)根的分布若有根区间的根多于一个,为了得到根的数值解,可以将该有根区间分割若干个子区间,使每个子区间只包含f(x)=0的一个根,这个过程称根的隔离,每个子区间称为隔根区间。
一般情形下,隔根区间内任一点都可作为相应根的近似值,隔根区间越小,近似程度越好。
(4)根的精确化在隔根区间内得到方程f(x)=0相应根的初步近似值后,为使近似值程度更好、符合预先期望,通常应继续逐步精确化根的近似值,直到满足规定的精度要求为止。
精确化方法有很多,常见的有二分法,迭代法等。
2.二分法二分法是利用隔根区间的两个端点来逐步求得满足预先给定精度的近似根。
(1)基本思想对分有根区间,判断f(x)的符号,逐步将有根区间缩小,使得在足够小的区间内取得满足预先给定精度要求的近似值。
(2)具体做法设区间[a,b]为有根区间,记α是f(x)=0在(a,b)的惟一根,二等分区间[a,b]。
令x0=(a+b)/2,如果f(x0)=0,则求得实根α=(a+b)/2。
否则,若f(a)f(x0)<0,则α∈[a,x0],取a1=a,b1=x0;若f(b)f(x0)<0,则α∈[x0,b],取a1=x0,b1=b。
在新的有根区间上重复二等分过程,得有根区间套序列[a,b]? [a1,b1]? [a2,b2] ?…? [a k,b k] ?…b-a>b1-a1>b2-a2>…>b k-a k…,a k≤α≤b k其中每个区间为前一个区间的一半,经过k次二分后,有根区间的长度为如此无限二等分区间[a,b](k→∞)有b k- a k→0(k→∞)或lim a k=lim b k=α(k→∞)。
第2章非线性方程求根

y
y=x
p1
x (x)
p0
✓
y
x (x)
p0
y=x
p1
x
x0
x1
x
x0 x1
说明在根 附近,曲线的切线不能太陡! 17
例2.2.1 求方程 f (x) x3 x 1 0 在x0 1.5附近的根.
解 (1) 将方程改写为 x 3 x 1
由此建立迭代公式 xk1 3 xk 1 得
k0 1
(Lp1
Lp2
...1) |
xk 1
xk
|
1 1 L
|
xk 1
xk
|,
令p ,得
|
xk
|
1 1 L
|
xk 1
xk
|.
因而可通过检查 | xk1 xk | 来判断迭代过程应否终止。
24
例2.2.3 求 f (x) 9x2 sin x 1 0 在[0,1]内的一个根。
解 由于 f (0) 1 0,
(bk 1
ak1)
...
1 2k
(b
a).
因此,当
k
足够大时,我们可以用
xk
ak
bk 2
作为函数
f (x)的一个根 的近似值。
此时有误差估计:
xk
bk ak 2
ba. 2k 1
常用来估计k的值
9
四、算法的优点与缺点
优点:计算简单且必收敛,是一种可靠的算法;对函数性质要 求低,只要求函数f(x)连续就可以了。
(2). 若 f (x0 ) f (a) 0,则令a1 a,b1 x0; 若 f (x0 ) f (b) 0,则令a1 x0,b1 b.
第七章非线性方程求根

一、对分区间法 原理:若 f(x) C[a, b],且 f (a) · (b) < f 0,则f(x) 在 (a, b) 上必有一根。
误差 分析: 第1步产生的
ab ba x1 有误差 |x1 x*| 2 2
| xk x*| ba 2k
第 k 步产生的 xk 有误差
有根区间 -(1,2)+ (1,1.5) (1.25,1.5) (1.25,1.375) (1.313,1.375) (1.344,1.375) (1.360,1.375) (1.360,1.368)
中点 x n
x 2 1.25 x 3 1.375 x4 1.313 x5 1.344 x6 1.360 x7 1.368 x8 1.364
f ( x0 ) x1 x0 作为第一次近似值 f ( x0 )
重复上述过程
xk 1
f ( xk ) xk f ( xk )
牛顿法的几何意义
Tangent line : y f ( x0 ) f ( x0 )( x x0 )
y
f ( x0 ) x1 x0 f ( x0 )
≤
|x k-1-x*|
(|xk-xk-1|+|xk-x*|),
故有 |xk-x*| ≤
/(1-)|xk-xk-1|.
可用 | xk 1 xk | 来 控制收敛精度
这就证明了估计式(6).
(5) |xk-xk-1| = |g(xk-1)-g(xk-2)|
≤
|x k-1-xk-2|≤…≤
收敛性分析
定义2 若存在常数(0≤ <1),使得对一切 x1,x2∈[a,b], 成立不等式 |g(x1)-g(x2)|≤ |x1-x2|, (5) 则称g(x)是[a,b]上的一个压缩映射, 称为压缩系数
计算方法一元非线性方程求根6.3

(x)
( x x )g( x )
*
mg ( x ) ( x x ) g ( x )
*
所以,x*是 ( x ) 的单零点.可将Newton法的迭代函数修改为
( x) x ( x) ( x)
'
x
f ( x) f ( x) [ f ( x )] f ( x ) f ( x )
第六章非线性方程组的迭代解法
6.3
一元方程的常用迭代法
6.3.1 Newton迭代法
6.3.2 割线法与抛物线法
第六章非线性方程组的迭代解法
6.3.1 Newton迭代法
x 设x*是方程f(x)=0的实根, k 是 x k x 一个近似根,用Taylor 展开式有 " f ( ) * ' * * 2 0 f ( x ) f ( x k ) f ( x k )( x x k ) ( x xk ) , 2 这里假设 f ' ' ( x ) 存在并连续。若 f ' ( x k ) 0 ,可得
第六章非线性方程组的迭代解法
定理6.5 设 f ( x ) 0 , f ( x ) 0 , 且f(x)在包含x*的 一个区间上有二阶连续导数,则Newton迭代法(6.3.2)至 少二阶收敛,并且
* ' *
lim
k
x k 1 x
*
* 2
( xk x )
f (x ) 2 f (x )
X
将(6.3.2)写成一般的不动点迭代(6.2.3)的形式,有
(x) x
' *
f (x) f ( x)
'
'
第4章_非线性方程求根 计算方法

解: 从[-4,4]区间以步长为1计算f(x)=x3-3x+1的函数值, 列如下表
4 结束
表2-1
x
计 算 方 法 课 件
-4
-3
-2
-1 3
0 1
1 -1
2 3
3 19
4 53
f(x) -51 -17 -1
可见,在[-2,-1]区间、[0,1]区间、[1,2]区间各有一实根,
下面求[0,1]区间上的实根,列表略: 可见x∊[0.347167968,0.347412109] 若取=0.005,由表可知,当k=13时, bk-ak=0.000244141<0.005,此时过程结束,取 xk=(0.347167968+0.347412109)/2=0.3472900380.347 5 结束
y x y g ( x)
它的解(x*,y *)中的x *就是x=g(x)的根.如图: 图2-3 图2-4 图2-5 10 图2-6 结束
计 算 方 法 课 件
不动点迭代算法: %input:初始解x0;最大迭代次数N;精度tol. %output:近似根x,迭代次数k. 1. k=1; 2. While k<N 2.1 x= g(x0) ; %函数g需要事先定义; 2.2 if abs(x-x0)<tol break end 2.3 k=k+1; x0=x; end 3. disp(x); disp(k)
此方程还可以有另外的迭代形式:
xk 1
计 算 方 法 课 件
1 , 2 3 xk
k 0,1,2,3,
xk 1 3 3xk 1,
4.2.2 迭代法的几何解释
k 0,1,2,3,
第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}
第二节 非线性方程求根

8
2015/5/17
二分法——误差估计
每次根的估计值为
xr =
xl + xu 2
old x new − x r r
真实根落在长度为 的区间中, new old xu − xl
xr − xr = 2
xu − xl L = 2 2
x
old r
前一次迭代
x* xrnew
xl
x rnew − x* xrnew ×100%
v = 40.059
图解法不精确,但可以提供初始猜测值, 理解函数性质和预测数值方法缺陷。
2015/5/17
数值计算方法
4
非线性方程求根
二分法 试位法 不动点迭代 Newton-Raphson方法 割线法
划界法 Bracketing Methods
开方法 Open Methods
非线性方程求根
浙江大学控制系
非线性方程求根
方程
f ( x)= ax + bx + c= 0
2
− b ± b 2 − 4ac x= 2a
代数方程求根问题是一古老的数学问题,十六世纪人们找到了 求三次、四次方程根的公式,十九世纪证明了大于等于五次的 代数方程没有一般的求根公式。
ax 5 + bx 4 + cx 3 + dx 2 + ex + f = 0 ⇒ x = ? sin x + x = 0 ⇒ x = ?
2015/5/17
数值计算方法
20
试位法
使用试位法求解例2中方程的根,并与二分法进行对比。 解: xl=12, xu=16
7非线性方程求根

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 加速
Numerical Analysis
12
解的存在唯一性
解的存在唯一性
定理:设 (x) C[a,b] 且满足
(1) 对任意的 x[a,b] 有 (x)[a,b]
(2) 存在常数 0<L<1,使得任意的 x, y[a,b] 有
(x)(y)Lxy
则(x) 在 [a,b] 上存在唯一的不动点 x*
Numerical Analysis
8
不动点迭代
基本思想
构造 f (x) = 0 的一个等价方程: x (x)
f (x) = 0 f (x) 的零点
等价变换
x = (x) (x) 的不动点
2019/11/5
Numerical Analysis
9
不动点迭代
具体过程 任取一个迭代初始值 x0 ,计算
非线性方程可能有(无穷)多个解,求解时必须强调求解区间
非线性方程一般没有直接解法,通常都使用迭代算法求解
2019/11/5
Numerical Analysis
4
非线性方程数值解法
几个基本概念
实根与复根 根的重数
f(x)=(x–x*)m ·g(x) 且 g(x*) 0, 则 x*为 f(x)=0 的 m 重根 有根区间:[a, b] 上存在 f (x) = 0 的一个实根
2-方程求根

f ( x)
形式为 f ( x) 0 ,解x 称为方程的根,或称函数 fx的零点 如何找到方程的根 x ? 根的搜索:二分法、逐步搜索法等 两类 方法 迭代法:直接迭代法、牛顿法(切线法)、 弦截法(割线法)。 •计算机只能找到近似根,本章介绍用以上主要算 法找近似根的原理及应用。
2.1 二分法
解:写出数学方程式 假设是理想气体,可知
2OF2= O2+2F2 设氧的分压为 p,平衡时有
平衡时,有 整理得 函数关系为
1-2p
p 2p
4 p3 0.410 2 (1 2 p)
4 p3 1.640p2 1.64 p 0.410 0 f ( p) 4 p3 1.640p2 1.64 p 0.410 0
fzero() roots()
• fzero('fun',x0) 计算由参数fun=0决定的方程的根。 X0:估计的方程根的初值,常数,也可以 是区间。 • x0是常数,则计算x0附近的根;x0是区 间,则计算这个区间内的根,无根则输 出错误信息。 • roots(P) 计算多项式方程P=0的根
clear all clc % By using fzero() with different inital values of independent variable x0 = 0; x1 = fzero(@func,x0) x0 = 2; x2 = fzero(@func,x0) % By using roots() c = [1 -2 -3]; x3 = roots(c) % -----------------------------------------------------------------function f = func(x) f = x^2-2*x-3;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
非线性方程()
f x=0求根主要可以采用下面三种方法,下面简单介绍下,并附例题,让解法更一目了然。
1)二分法简介:
计算步骤如下:
例题:
2)不动点迭代,也叫简单迭代。
隐式化为显式,迭代法是一种逐次逼近法;
其中()
f x'<1才能满足上述迭代格式。
继续迭代。
3)牛顿迭代法,实际上也叫切线法,
是通过下面的方式推导出来的。
上述题目很简单,用牛顿法迭代就可以达到目的。
我们先设()cos f x x x =-=0 由公式得cos sin x x
x x x
0-=-
1+ 我们用二分法的原理,我们取x π0=, 得cos sin x x x x x ππ00100-+1
=-
=-=11+1
cos cos .sin sin x x x x x 11211-1-1
=-
=1-=09998
1+1+1
cos cos ..sin sin .x x x x x 22322-1-09998
=-
=1-=099981+1+09998
x x 32=,并具有四位有效数字,所以只需迭代两次就可以达到
题目所需的精度要求。