非线性方程求根方法

合集下载

第6章 非线性方程求根(1、二分法、迭代法)

第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 *附近至少平方收敛。

第七章 非线性方程求根方法

第七章 非线性方程求根方法
f ( xk ) xk 1 xk f ( xk )
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)如下:

第四章 非线性方程求根

第四章   非线性方程求根
f ( x* ) f ( x* ) f ( m1) ( x* ) 0, f ( m) ( 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)

计算方法第2章 非线性方程求根

计算方法第2章 非线性方程求根

double f(double x) {return(……); /*计算并返回函数值f(x)*/ }
7
2.3 根的搜索
二、变步长逐步搜索法 用逐步搜索法求根,当h远小于(b-a)时,往往需要很多步搜索。
变步长逐步搜索法是对这一缺陷的改进。
主要步骤为:
① 取较大步长,以较少步数搜索整个有根区间。若一步迈过的子区 间边界处为根,则算法结束;若根在某一步迈过的子区间内,则把这 个更小的子区间作为新的有根区间。 ② 若步骤①得到的有根区间足够小,则取此区间的中点为近似根, 算法结束;否则,缩小步长,以上一步得到的新的更小的有根区间作 为搜索对象,重复执行步骤①。
1 ∴误差限≤ 2 ×10-3,
∴由定理2.1得:
0.301 3 lg(1 0) lg( 1 103 ) 0 ( lg 2 3) 2 1 = 1 = n= 1= 10.97 1 lg 2 lg 2 0.301
10
2.4 对分法
对分法的主要思想
对分法(二分法,区间分半法)是一种特殊的变步长逐步搜索法。
对分法每一轮搜索的步数为2,即每一轮都是2步搜索完整个待搜索的 有根区间,使有根区间的大小减为上一轮有根区间大小的一半。
主要步骤为:
① 计算当前有根区间中点处的函数值。若函数值为0,则此点为函数 零点,算法结束;否则,判断中点处函数值与区间哪一侧端点处函数 值异号,异号的一侧为新的有根区间。中点成为新的端点,使有根区 间缩小一半。 ② 若步骤①得到的有根区间足够小,则取此区间的中点为近似根, 算法结束;否则,对新的有根区间,重复执行步骤①。
2h
5
2.3 根的搜索
逐步搜索法的算法

第7章 非线性方程求根

第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.

计算方法非线性方程求根

计算方法非线性方程求根

计算方法非线性方程求根第十章非线性方程求根知识点:求根的基本概念,对分法,迭代法,误差,编程停机判断,算法说明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→∞)。

非线性方程求根方法.

非线性方程求根方法.

[a1, b1 ] [a2 ,b2 ] ...... [an ,bn ] ......

1 bn - an = 2n -1 (b - a )
11
设 所求的根为 x *,
则 x * ? [an ,b = 1, 2......
Q
lim
方程求根
历史背景
代数方程的求根问题是一个古老的数学问 题。理论上,n次代数方程在复数域内一定有 n个根(考虑重数)。早在16世纪就找到了三次、 四次方程的求根公式,但直到19世纪才证明大 于等于5次的一般代数方程式不能用代数公式 求解,而对于超越方程就复杂的多,如果有解, 其解可能是一个或几个,也可能是无穷多个。 一般也不存在根的解析表达式。因此需要研究 数值方法求得满足一定精度要求的根的近似解。
4
零点定理
零点定理: f (x设) ? C [a,b ] b 2 ,4a且c f (a)f (b ) < 0 ,则方程
在区间 (a,b) 上至少有一个根。如果 f '(x) 在 (a, b)
上恒正或恒负,则此根唯一。
5
等步长扫描
用计算机求有根区间:等步长扫描法。 设
h>0是给定的步长,取 x 0 = a, x 1 = a +h ,
仍取 x 0 =1.5 ,则有 x 1 = 2.375 ,x 2 =12.39 显然结果越来越大,{xk }是发散序列
22
几何示意图
例 讨论以下计算 a (a > 0) 的算法的收敛阶。
x
n +1
=
1 2
骣 琪 琪 桫x
n
+
a xn
24
解:(1)
j (x ) = 1 (x + a ) 2x

非线性方程求根

非线性方程求根

第7章 非线性方程求根本章主要内容:1.区间二分法. 2切线法. 3.弦位法. 4.一般迭代法.重点、难点一、区间二分法区间二分法是求方程f(x)=0根的近似值的常用方法。

基本思想:利用有根区间的判别方法确定方程根的区间[a,b] ,将有根区间平分为二;再利用有根区间的判别方法判断那一个区间是有根区间;重复上述步骤,直到小区间端点差的绝对值小于等于精度要求的数值,则用将上一区间的分半值作为方程的根的近似值。

区间二分法的计算步骤如下: 1.计算区间端点的函数值f(a) , f(b)(不妨设f(a)<0,f(b)>0);确定初始有根区间[a,b]. 2.二分有根区间[a,b],并计算)2(ba f + 取21b a x +=3.判断: 若0)(1=x f ,则方程的根为1x x =*;若 0)(1>x f ,则有根区间为[]1,x a x ∈*;令[]],[,111b a x a =若 0)(1<x f ,则有根区间为[]b x x ,1∈*;令 []],[,111b a b x =4. 如果│b-a │<ε(ε为误差限),则方程的根为2ba x +=*;否则转向步骤2,继续二分有根区间[a 1,b 1],并计算中点值,继续有根区间的判断,直到满足精度要求为止,即│b n -a n │<ε二分次数的确定:如果给定误差限ε,则需要二分的次数可由公式12ln ln )ln(---≥εa b n 确定应二分的次数。

例1 用区间二分法求方程0353=+-x x 在某区间内实根的近似值(精确到0.001)【思路】参见上述区间二分法的计算步骤解 ∵f(1.8)=-0.168<0, f(1.9)=0.359>0 ∴f(x)在区间[1.8 ,1.9]内有一个根。

由公式 644.512ln 001.0ln 1.0ln 12ln ln )ln(=--=---≥εa b n取n=6, 计算结果列表如下:则方程在区间[1.8,1.9]内所求近似值为x *≈ x = 1.8328125区间二分法的优点是计算程序简单,只要f (x )在区间[a,b]上连续,区间二分法就可使用,但区间二分法不能用来求偶次重根,由于区间二分法收敛比较慢,在实际计算中,区间二分法常用来求比较好的含根区间和初始近似值,以便进一步使用收敛更快的迭代法求出更精确的近似值。

5非线性方程的求根

5非线性方程的求根

(3)迭代25次后 (4)迭代9次后 (5)迭代3次后
x3 1.36523001 若采用二分法则有 x25 1.364990235 , x27 1.36523001
迭代格式构造的不同,可能会出现发散或无意义的情形,即使 是收敛的,收敛的速度也有快慢之分。 9
单点迭代法
计算第k+1个近似值 xk 1 时仅用到第k个点处 的信息,如(5.1) 多点迭代法 计算 xk 1 时需要用到前面P个点处的信息 一般形式为
§2
迭代法
x g ( x)
设方程 f ( x) 0 可以转化为等价的形式 从某个初值
xk 1 g ( xk ) k 0,1, 2, (5.1) 得到序列 {xk } 。当 g ( x) 连续,且序列 {xk } 收敛时,有
lim xk 1 lim g ( xk ) g (lim xk )
k k k
x0
出发令

即序列 {xk } 的极限 是方程 f ( x) 0 的根。 称(5.1)为迭代格式,函数 g ( x) 为迭代函数。构造迭代 格式的方法称为迭代法。 7
g ( )
例5.2 构造不同的迭代格式,求方程 x3 4 x 2 10 0 在(1,2)内的近似根。
当 n 充分大时就有 误差估计式为
k 1, 2, , n.
1 (an bn ) 2
an bn b a | | n 1 2 2
3
算法(二分法)
输入 f ( x ),区间 [ a, b] ,精度 0,最大的迭代次数N 1.对 2. 3. 4.若
k 1, 2,, N ,
对迭代方程 x g ( x) ,若迭代函数 g ( x) 满足

第4章_非线性方程求根 计算方法

第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章 - 非线性方程求根方法

第6章 - 非线性方程求根方法
1 2
② 计算: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}

第七章非线性方程求根2014-10

第七章非线性方程求根2014-10

3
xk 1
(k 0,1, 2,
)
不妨取x0 =1.5 迭代序列 xk k 0 。

实际计算时如果保留6 位有效数字,则由计算结果得
x7 x8 于是可以认为近似解 x7 x *
计算结果见下表:
Hale Waihona Puke k 0时x0 1.5迭代次数 k 1 2 3 4 5 6 7 8 迭代解 xk 1.35721 1.33086 1.32588 1.32494 1.32476 1.32473 1.32472 1.32472
设x1* x2*都是方程x ( x)在区间 [a, b]上的根, 由条件(2)
| x1 * x2 *|| ( x1*) ( x2 *) |
L | x1 * x2 *|
0 L 1
| x1 * x2 *|
引出矛盾 x1* x2* , 即区间 [ a, b] 内只能有唯一的实根。
对上述同一问题改写为另一种等价形式: x x3 1 从而可建立迭代格式如下: 迭代初值仍取 x0 1.5 迭代次数 k 迭代解 xk
xk 1 ( xk )
1 2 3 4
2.375 12.39 152.52 3547972.6
继续迭代下去计算结果会越来越大,不可能趋于某个 极限,这种不收敛的迭代过程称为发散。
ab , b) 则 x1 ( 2
即为所求根否则,
反复执行步骤(2)及步骤(3),直到区间 [ a, b] 长度小于容许误差,此时的区间中点 a b x 2 x 即为所求的近似根。
这样不断将区间分半,得到一系列区间
[a, b] [a1, b1 ]
[an , bn ]

非线性方程求根方法

非线性方程求根方法

第12章非线性方程求根方法二分法二分法算法1.计算[a, b]区间的中点存放在变量x0中,x0 ⇐(a+b)/2;2.如果函数值f(x0)=0, 则x0是f(x)=0的实根x* ,输出根x0, 终止;3.如果函数值f(a)f(x0)<0,则b ⇐ x0 ,否则a ⇐ x0;4.如果b-a≤ε(ε为给定的精度),则输出根的近似值(a+b)/2,终止,否则转1。

二分法程序Clear[x]f[x_]=Input[“键入函数f(x)=”];a= Input[“键入左端点a=”];b=Input[“键入右端点b=”];Print[“a=”,a, “b=”,b, “ f(x)=”,f[x]]e1=10^(-10);eps=Input[“键入根的误差限eps=”];n=0;While[b-a>eps,x=(a+b)/2;n=n+1;w=f[x];If[Abs[w]<e1,Print[“n=”,n, “x=”,x, “ f[x]=”,w];Break[]];p=f[a]*w//N;If[p<0,b=x,a=x];Print[“n=”,n, “x=”,x//N, “eps=”,b-a//N]]说明:本程序用于求非线性方程f(x)=0在区间[a, b]内的根,这里要求f(x)在区间[a, b]连续,且f(a)f(b)<0。

程序执行后,先通过键盘输入函数f(x)和区间左端点a和右端点b及根的精度要求e,程序即可给出每次二分的次数和对应的点列{x k},其中最后输出的结果即为所求的根。

程序中变量说明x:存放初值x0和二分法中的x k;a:存放含根区间的左端点a k;b:存放含根区间的右端点b k;e1: 描述f(x k)=0的微小值, 这里用|f(x k)|<e1表示f(x k)=0;n: 存放二分次数。

注:语句“If[p<0,b=x,a=x]”中“p”的一定要是算出的数值,否则会出现错误。

非线性方程求根

非线性方程求根

实际中,用解方程组的形式
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
无穷组解

计算方法2非线性方程求根

计算方法2非线性方程求根
根据泰勒级数展开式构造迭代公式,通过不断迭代逼近方程的根。
收敛性
牛顿-拉夫逊方法具有局部收敛性,当初始值选取合适时,可以迅 速收敛到方程的根。同时,该方法对单根和重根均有效。
05
数值稳定性与误差分析
数值稳定性概念
数值稳定性
指算法在计算过程中,对于输入数据的微小变化,输出结果的变化也是微小的,即算法对输入误差的 敏感性较低。
算法设计与实现过程
算法设计
针对所选择的非线性方程,设计一种有效的 求根算法。常见的求根算法包括二分法、牛 顿法、割线法等。在选择算法时,需要考虑 算法的收敛性、稳定性和计算效率等因素。
算法实现
根据所设计的算法,编写相应的计算机程序。 程序应包括输入、计算和输出三个主要部分。 输入部分用于接收用户输入的非线性方程和 初始值等信息;计算部分用于执行求根算法 的计算过程;输出部分用于显示计算结果和 相关信息。
研究不足与展望
对于某些特殊类型的非线性方程,如高 次方程、多元方程等,本文算法可能存 在一定的局限性和不足,需要进一步研 究和改进。
在实际应用中,非线性方程的求解往往受到 各种因素的影响,如噪声、误差等,本文算 法在处理这些问题时可能需要进一步完善和 优化。
未来可以进一步探索非线性方程求 根的新方法和新技术,如基于深度 学习的求解方法、基于高性能计算 的并行化技术等,以提高求解效率 和精度。
高斯-赛德尔迭代法
在雅可比迭代法的基础上,采 用逐次超松弛技术加速收敛。
牛顿-拉夫逊迭代法
将非线性方程组转化为等价的 线性方程组,然后利用牛顿拉夫逊方法进行迭代求解。
牛顿-拉夫逊方法
基本思想
将非线性方程在根的附近用泰勒级数展开,忽略高阶项,得到近似 线性方程,然后求解该线性方程得到根的近似值。

数值分析- 非线性方程求根

数值分析- 非线性方程求根
那么迭代过程在
( x *) 0,
( p)
( x *) 0 ,
x * 附近是 p 阶收敛的 .
特别地,当
0 | ( x *) | 1时 , 迭代法线性收敛
;
当 ( x *) 0 , ( x *) 0时 , 平方收敛 .
§3
迭代收敛的加速方法
由迭代公式校正一次得
x 0 [ a , b ], 迭代序列 (2.2) 均收敛于 x *, L
k
1 L 1 1 L
| x1 x 0 |, | x k 1 x k | .
在 [1,2] 内考查如下迭代法的敛 1) x k 1
3 3 k
散性:
x k 1 ; 2) x k 1 x 1 .
• • •
设函数f(x)在区间[a,b]上单调连续,且 f(a)·f(b)<0 则方程(1.1)在区间(a,b)内有且仅有 一个实根x。
二、二分法
二分法简述.
设 f ( a ) f ( b ) 0 , 取 x 0 ( a b ) / 2 . 假如 f ( x 0 ) 是 f ( x )的零点, 那么输出 x 0 , 停止 . 假若不然, 若 f ( a ) 与 f ( x 0 )同号,则 a1 x 0 , b1 b ; 否则 a1 a , b1 x 0 .
一、埃特金加速收敛方法
对于收敛的迭代过程, x1 ( x 0 ),
再校正一次得 x 2 ( x1 ).
如果 ( x ) 变化不大 , ( x ) L , 则
x1 x * ( x 0 ) ( x *) L ( x 0 - x *), x 2 x * ( x1 ) ( x *) L ( x1 - x *).
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
|b-a|< ε
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*
)
|
|
(bn
-x*)|)
故有
=
1 2
[(
x*
an
)
(bn
-x*)]
|
xn
x*
|
bn
an 2
ba 2n1
.
当给定精度ε>0后,要想 x* xn 成立,只要
,将区间
a1,
b1
再分为两半,然
后再确定有根区间 a2,b2 ,其长度是a1, b1 的
二分之一。
③ 如此反复下去,若不出现 f (xk ) 0,即可得出一 系列有根区间序列:
a, b a1, b1 a2 , b2 L an , bn L
上述每个区间都是前一个区间的一半,因此 an,bn 的长度
x
用逐步搜索法进行实根隔离的关键是选取步长h 要选择适当h ,使之既能把根隔离开来,工作量 又不太大。 为获取指定精度要求的初值,可在以上隔离根的 基础上采用对分法继续缩小该含根子区间
二分法可以看作是搜索法的一种改进。
开始 输 入 a , b,ε


y


xb



(a+b)/2 x
f(a) f(x )<0 ?
二分法的基本思想: 据定理6.1,首先确定有根区间, 将区间二等分, 通过判断f(x)的符号, 逐步将有根区间 缩小, 直至有根区间足够地小, 便可求出满足精度要 求的近似根。
6.2.1 二分法求根过程
设方程f(x)=0在区间[a,b]内有根,二分法就是逐步
收缩有根区间,最后得出所求的根。具体过程如下
② 确定根的分布范围。即将每一个根用区间隔 离开来,这个过程实际上是获得方程各根的 初始近似值。
③ 根的精确化。将根的初始近似值按某种方法
逐步精确化,直到记满笔足记预先要求的精度为止
求方程
o
b
x
基本定理
Th6如.1果函数 在f ( x)上连[a续, b,] 且
1
1
bn an 2 (bn1 an1 ) L 2n (b a )
当n→∞时趋于零,这些区间最终收敛于一点x* 即为
所求的根 。
在此过程中,可得:
每次二分后,取有根区间 an,bn
的中点
xn
1 2 (an bn )
作为根的近似值,得到一个近似根的序列
x0 , x1 , x2 ,L , xn ,L 该序列以根x*为极限
取k满足
1 2n1
(b
a
)
即可,亦即当:
n lg(b a) lg 1
lg 2
时,做到第n+1次二分,计算得到的 xn就是满足精
度要求的近似根 。
在程序中通常用相邻的
x
n与x
n
的差的绝对值
1
或 bn 与 an 的差的绝对值是否小于ε来决定二分区
间的次数。
逐步搜索法
对于给定的f (x),设有根区间为[A,B],从x0=A出发,以 步长h=(B-A)/n(n是正整数),在[A,B]内取定节点:xi=x0 +ih (i=0,1,2,…,n),从左至右检查f (xi)的符号,如发现xi 与端点x0的函数值异号,则得到一个缩小的有根子区 间[xi-1,xi]。
y
y=f(x)
a
x1
x* x0
b
a1 a2
b1 b2
y
y=f(x)
x*
a
x0
x1
b
a1
b1
a2
b2
y f (x)
a
x0
o
b
x
若前两种情况出现之一,则就意味着找到了一个比
原区间长度小一半的隔根区间了。设为 a1,b1 .
② 对压缩了的有根区间 a1,b1 施行同样的手法,
即取中点
x
1
a1
2
b1
① 取有根区间[a,b]之中点, 将它分为两半,分点
x0
a
2
b
,这样就可缩小有根区间。
注意可能会出现三种情况
若f ( x0 ) f (a) 0,则f ( x)在区间[a, x0 ]内有零点;
若f ( x0 ) f (b) 0,则f ( x)在区间[ x0 , b]内有零点;
若f ( x0 ) 0,则x0为区间[a, b]内的零点;
则至少有一个数 使得 f (,) 若0同时
在 内f (存x)在且[a保, b持] 定号,即
(或
在 f 内( x唯) 一0。
[a,b]
f (a) f (b) 0 的一f 阶( x导) 数
)则f (这x)样的0
6.2 二分法
二分法又称二分区间法,是求解方程(6.1)的近似 根的一种常用的简单方法。
只要二分足够多次(即k足够大),便有 x* xn 这里ε为给定精度,由于x* a n ,bn ,则
x* xn
bn an 2
ba 2n1
Q
bn
an 2
bn1 an1
ba 2n1
定理6.2 设x*为方程f ( x) 0在区间[a, b]内的唯一根,f ( x)
满足f (a) f (b) 0,则二分法计算过程中第n个区间的中点xn
y
0 A a1 b1a2 b2
Bx
例1 方程f(x)=x3-x-1=0 确定其有根区间 解:用试凑的方法,不难发现
f(0)<0 f(2)>0 在区间(0,2)内至少有一个实根 设从x=0出发,取h=0.5为步长向右进行根的 搜索,列表如下
0 0.5 1.0 1.5 2
f(x) – – – + +
可以看出,在[1.0,1.5]内必有一根
相关文档
最新文档