第2章非线性方程求解
ch2-1(二分、简单迭代)ami
∵ f ( x0 ) < 0,∴令a1 = x0 = 1.25, b1 = b = 1.5,
[a 得新的有根区间 1 , b1 ]
如此二分下去即可。 如此二分下去即可。现估计二分次数
x − xn < 0.005 ⇒ n ≥ 5.64
*
所以二分6次可达到要求。 所以二分6次可达到要求。
精确解为: 精确解为: x =1.324718
y = ϕ( x) 又 x = ϕ( x) 的解⇔ 的解 y = x
(两条线的交点) 两条线的交点)
迭代法的几何意义
y
y=x
y
y = ϕ ( x)
x
x
迭代法的几何意义
y
y=x
y
y=x
y=ϕ(x)
y=ϕ(x)
0
x1
x3 x5ξ x4 x2 x0
x
0
x3 x1 ξ x0 x2
x4
x
简单迭代法例题
只要二分足够多次(即充分大), 只要二分足够多次( k充分大),
则有 x* −xk < ε
. ε 这里 为预定的精度
区间二分法
对分区间次数的估计
bn − an b − a 由 x * −xn ≤ = n+1 < ε 2 2
不难得出: 不难得出:
ln( b − a) − lnε n> −1 ln 2
= (L
p−1
+L
p−2
+⋯+ 1) xn+1 − xn
简单迭代法收敛定理
1− L 1− L n xn+1 − xn ≤ L x1 − x0 = 1− L 1− L
p p
即
非线性方程组求解-PPT精品
2019/10/30
32
2.2.1 内联函数(inline function)
[说明]
'CE'是字符串;CE表达式不能包含赋值号=
第1种调用格式将自动地对CE进行辨识,把CE中由 字母/数字组成的连续字符认做变量,除预定义变量 名和常用函数名(如sin)外的有字母/数字组成的 连续字符将被认做变量。但注意如果连续字符后紧 接左圆括号,则不被当作输入变量。
非线性方程(组)的求解一般采用迭代法进行。 迭代法是一种重要的逐次逼近方法。这种 方法用某个固定公式反复校正根的近似值, 使之逐步精确化,最后得到满足精度要求 的结果
常见的迭代算法有不动点迭代、二分法、 牛顿法、弦截法、威格斯坦法 (Wegstein)、抛物线法等
2019/10/30
8
不动点迭代法
P
y = g(x)
P
y = g(x)
(p1,p1)
(p0,g(p0))
O
Pp2 p1
p0
x
O p1 Pp2
p0
x
y
y = g(x)
y= x
(p0,g(p0))
(p1,p1)
P
2019/10/30 O
P p0 p1
p2
x
y
y = g(x)
y= x
(p0,g(p0)) P
(p1,p1)
O
p1 P p0 p2
在实际使用中,牛顿法最好与逐步扫描法 结合起来,先通过逐步扫描法求出根的近 似值,然后用牛顿公式求其精确值,以发 挥牛顿法收敛速度快的优点
2019/10/30
20
2.1.2.4 弦截法
牛顿迭代法收敛速度快,但它要求计算函 数导数的值。在科学与工程计算中,常会 碰到函数导数不易计算或者算式复杂而不 便计算的情况
计算方法 2.求根.
第2章 非线性方程的求根方法2.1 二分法设()0f x =在区间[,]a b 中只有一个根*x ,且满足()()0f a f b <,则二分法求根过程为: 记0[,]I a b =,取0I 的中点00.5()x a b =+,若0()0f x =,则*0x x =; 若0()()0f x f a <,则*0[,]x a x ∈,取10[,]I a x =; 若0()()0f x f a >,则*0[,]x x b ∈,取10[,]I x b=. 记111[,]I a b =,取1I 的中点1110.5()x a b =+,若1()0f x =,则*1x x =;若11()()0f x f a <,则*11[,]x a x ∈,取211[,]I a x =;若11()()0f x f a >,则*11[,]x x b ∈,取211[,]I x b =. 记222[,]I a b =⋅⋅⋅这样获得近似根序列01,,,,,k x x x ⋅⋅⋅⋅⋅⋅满足于是当k →∞时,由11()02k b a +-→得到*k x x →.二分法算法简单,收敛,但收敛速度较慢.2.2 简单迭代法将方程()0f x =等价变形为()x x ϕ=,获得 迭代计算公式1()k k x x ϕ+=取定一个初值0x ,由迭代公式算出数列()() ,,1201x x x x ϕϕ==,若*lim k k x x →∞=,则足够靠后的k x 可作为根的近似值.由上述得出{}k x 称为迭代数列,函数()x ϕ为迭代函数,如上求根方法称为简单迭代法.对根*x ,有**()x x ϕ=,点*x 称为()x ϕ的不动点,称方程()x x ϕ=为不动点方程.例1 求方程01)(3=--=x x x f 在5.10=x 附近的根.定理1 设迭代函数()[,]x C a b ϕ∈满足条件 1.当[,]x a b ∈时,有()[,]x a b ϕ∈;2.存在正常数1L <,使对任意 12,[,]x x a b ∈都有1212()()x x L x x ϕϕ∣-∣≤∣-∣则()x ϕ在[,]a b 中有唯一的不动点*x ,迭代公式1()k k x x ϕ+=对任取0[,]x a b ∈,产生的数列{}k x 都收敛于*x .证明 作辅助函数()()x x x ψϕ=-显然()[,]x C a b ψ∈.由条件1知()()0a b ψψ≤由中值定理,至少存在一个[,]a b ξ∈,使()0ψξ=,即()ξϕξ=,这说明()x ϕ在[,]a b 上有不动点ξ. 如果()x ϕ在[,]a b 上还有一个不动点η,有()ηϕη=,利用条件2,有()()L ξηϕξϕηξηξη∣-∣=∣-∣≤∣-∣<∣-∣矛盾,这就证明了满足定理条件的()x ϕ在[,]a b 中有唯一的不动点,记为*x .由*x 是不动点、迭代格式及条件2,有***112**20()()k k k k k x x x x L x x L x x L x x ϕϕ---∣-∣=∣-∣≤∣-∣≤∣-∣≤≤∣-∣注意到01L <<,在上式中令k→∞,可得0kL →,有 *lim 0kk x x →∞∣-∣=,因而有 *lim k k x x →∞=定理得证.定理2 设定理1的条件成立,则有如下误差估计式证明 只证1.由迭代公式和定理2.1的条件,有()1k k k k x x x x ϕ+∣-∣=-**()()()k k x x x x ϕϕϕ=∣-+-∣ ****()()()()k k k k x x x x x x x x ϕϕϕϕ=-+-≥---***L L)k k k x x x x x x ≥∣-∣-∣-∣=(1-∣-∣因为01L <<,所以有*111k k k x x x x L+-≤--另一方面111()()k k k k k k x x x x L x x ϕϕ+--∣-∣=∣-∣≤∣-∣代入上式得结论1.定理2.1的条件2对任意12,[,]x x a b ∈,存在正常数1L <满足1212()()x x L x x ϕϕ∣-∣≤∣-∣不易使用。
第2章方程的近似解法
第二章 方程求根在许多实际问题中,常常会遇到方程f(x)=0求解的问题。
当f(x)为一次多项式时,f(x)=0称为线性方程,否则称为非线性方程。
对于非线性方程,由于f(x)的多样性,求其根尚无一般的解析方法可以使用,因此研究非线性方程的数值解法是十分必要的。
法、迭代法、牛顿法及割线法。
这些方法均是知道根的初始近似值后,进一步把根精确化,直到达到所要求的 精度为止。
也即求非线性方程根的数值方法。
第一节 第一节 增值寻根法与二分法2.1.1 增值寻根法设非线性方程f(x)=0的根为*x ,增值寻根法的基本思想是,从初始值0x 开始,按规定 的一个初始步长h 来增值。
令 1n x +=n x +h(n=0,1,2,…),同时计算f(1n x +)。
在增值的计算过程中可能遇到三种情形:(1) f(1n x +)=0,此时1n x +即为方 程的根*x 。
(2) f(n x )和f(1n x +)同符号。
这说明区间[n x , 1n x +]内无根。
(3) f(n x )和f(1n x +)异号,f(n x )·f(1n x +)<0此时当f(x)在区间[n x , 1n x +]上连续时,方程f(x)=0在[n x , 1n x +] 一定有根。
也即我们用增值寻根法找到了方程根的存在区间,n x 或1n x +均可以视为根的近似值。
下一步就是设法在该区间内寻找根 *x 更精确的近似值,为此再用增值寻根法 把n x 作为新的初始近似值,同时把步长缩小,例如选新步长1100h h =,这 样会得到区间长度更小的有根区间,从而也得到使f(x)n x ,作为*x 更 精确的近似值,若精度不够,可重复使用增值寻根法,直到有根区间的长度|1n x +-n x |<ε(ε为所要求的精度)为止。
此时f(n x )或f(1n x +)就可近似认为是零。
n x 或1n x +就是满足精度的方程的近似根(如图2-1).2—1例1 用增值寻根法求方程f(x)=324x x +-10=0的有根区间。
东南大学-数值分析-第二章-牛顿迭代法
东南大学-数值分析-第二章-牛顿迭代法第二章非线性方程的解法某某某某(学号)某某某某(姓名)算法与程序题目见教材P56上机题目20。
一、算法原理根据题目的要求,是关于用牛顿迭代法法求解方程f(某)0的通用算法。
该法是一种通过斜率迭代的算法,其速度比二分法和简单迭代法都要快。
其简单原理如下:设fC2[a,b],且存在数p[a,b],满足f(p)0。
如果f(p)0,则存在一个数0,对任意初始值p0[p,p],使得由如下定义的迭代序列{pk}k0收敛到p:pkg(pk1)pk1f(pk1),其中k1,2,f(pk1)(1)对于函数f(某)某3/3某=0,则其递推规则是32pkpk21,其中k1,2,3pk1-3(2)定义序列{pk}则序列{pk}也可表示为limpk某现简要证明:k0,k0收敛到某,某对于f(某)某3/3某,得f'(某)某2-1,写出牛顿迭代公式f(某)某3/3某g(某)某某2f(某)某-1(3)该公式可化简为2某3g(某)23某3(4)二、流程图题目要求于用牛顿迭代法法求解方程f(某)0的通用算法。
其计算过程主要第二章非线性方程的解法用到迭代g(某)某f(某),图流程图1所示。
f(某)输入各参数k=1迭代pkg(pk1)pk1f(pk1),其中k1,2,f(pk1)Tbreak计算各误差误差在允许范围之内Fk=k+1k三、计算代码核心代码1)p1=……;2)if(err程序1:Newton.m%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Decription:牛顿迭代法%Author:panyunqiang%Veroin:1.0%Date:2022-9-21%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%f unction[p0,err,k,y]=Newton(p0,delta,epilon,ma某N)%input-p0itheinitialappro某imationtoazerooff%-deltaithetoleranceforp0%-epilonithetoleranceforthefunctionvaluey%-ma某Nithema某iumnumberofiteration%output-p0itheNewtonappro某imationtoazero%-erritheerroretimateforp0东南大学《数值分析》上机练习——算法与程序设计实验报告%-kithenumberofiteration%-yithefunctionvaluef(p0)fork=1:ma 某N%%递归p1=2某p0^3/(3某p0^2-3);%%计算误差err=ab(p1-p0);relerr=2某err/(ab(p1)+delta);p0=p1;%%当前求出的根的函数值y=p0^3/3-p0;%%判断if(err程序2:Newton_Step.m%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%Decription:寻找题目中关于牛顿迭代法收敛的尽可能大的delta%搜索步进为tep=10^(-6),即精确到小数点后六位%Author:panyunqiang%Veroin:1.0%Date:2022-9-21%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %formatlongtep=10^(-6);delta=10^-8;epilon=10^-8;ma某N=1000;p=0.6;[p0,err,k,y]=Newton(p,delta,epilon,ma某N);while((ab(p0)<=epilon)&(p0~=NaN))p=p+tep;[p0,err,k,y]=Newton(p,delta,epilon,ma某N);endp-tep四、计算结果及分析a)运行程序Newton_Step.m,获得Newton局部收敛于某2=0的初始值的范围=0.774596,六位有效数字。
第二章 非线性方程求解
(k 0),则称序列{xn}是p阶收敛的. 特别是当p=1时
称线性收敛; p>1时称超线性收敛;p=2时称平方收敛. 如果由迭代函
数g(x)产生的序列{xn}是p阶收敛的, 则称g(x)是p阶迭代函数, 并称 迭代法xn+1=g(xn)是p阶收敛. 定理3 对于迭代过程xn+1=g(xn), 如果迭代函数g(x)在所求根x*的 邻近有连续的二阶导数,且|g’(x*)|<1, 则有
对 x [0.5,0.6]时有 |( x) | e x e0.5 0.607 1, 故当取初值x0=0.5时,
迭代过程xk1 exk (k 0,1,2,...) 必收敛. 迭代结果如下:
k xk
xk-xk-1
k xk
xk-xk-1
1 0.60653 0.10653
(1) 当 g(x*) 0时,迭代过程为线性收敛
(2) 当 g(x*) 0 , g(x*) 0 时,迭代过程为平方收敛.
定理4 设x*是方程x=g(x)的根,在x*的某一邻域g(x)的m (m>1)阶
导数连续,并且g’(x*)=…=g(m-1)(x*)=0, g(m)(x*)不等于零, 则当初始
为: [a,b]=[a0,b0] [a1,b1] [a2,b2] …… [ai-1,bi-1] [ai,bi] 其中ai或bi (i=1,2,3,……)是区间[ai-1,bi-1]的中点. 若区间[ai-1,bi-1]的中点xi满足f(xi)f(bi-1)=0,则x* = xi. 若区间[ai-1,bi-1]的中点xi满足f(xi)f(bi-1)<0,则ai= xi, bi= bi-1. 若区间[ai-1,bi-1]的中点xi满足f(ai-1)f(xi)<0,则ai= ai-1, bi= xi.
非线性方程与方程组数值解法
2.2 二分法
表2-2 计算结果
k
0 1 2 3 4 5 6 7
ak
1 1 1.25 1.25 1.3125 1.3125 1.3125 1.3203
bk
2 1.5 1.5 1.375 1.375 1.3438 1.3281 1.3281
xk
1.5 1.25 1.375 1.3125 1.3438 1.3281 1.3203 1.3242
ab ;否则,回 2
5.2 二分法
说明:
x*
(ⅰ)上述计算步骤(2)和(3)每执行一次就把新的区间分成两份,根的范围也 缩小一半. 如果第 k 次二分后得到的区间记 为 [ak , bk ],根的近似值记为 xk ,则 ba (a b ) 有 bk ak k , xk k k ,那么当时 k , bk ak 0,这说明如果二分过 2 2 程无限继续下去,这些区间必将收敛于一点,即为所求根. (ⅱ) 第
3
2 f ( x ) 3 x 1 0, x [1, 2] 解 已知 f (1) 1 0, f (2) 5 0 且 ,
则方程
f ( x) x 3 x 1 0
在区间
(1, 2)
内只有一个实根.
当 k 1 , x1
bk ak 102 ,继续二分;
2.1 引言
通常隔离区间的确定方法为 (1)作 y f ( x) 的草图, 由 y f ( x)与横轴交点的大致位置来确定; 或 者将 f1 ( x) f 2 ( x) 改写成 f ( x) 0 , 根据 y f1 ( x) 和 y f 2 ( x) 交点横坐标来确定
根的隔离区间.
当 k 2 , x2
第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);
第2章 非线性方程(组)求解
1)Newton迭代法的几何意义
求f(x)=0的解,即求曲线f(x)与横坐标的交点a
过 ( x n , f ( x n ) ) 作 切线 , 其斜率为 f ' ( xn )
C=(a+b)/2
左半区间 右半区间
(2) a (3) a a
b b b
No 4:判断是否达到精确度ε:若达到,则得到零点近似值是(a,b)区 间内的一点;否则重复2~4步骤。
4 牛顿迭代法
对方程f(x)=0可构造多种迭代格式,牛顿 迭代法是借助于对函数f(x)=0的泰勒展开而得到 的一种迭代格式。
补充1:Matlab函数创建
Matlab中创建函数有几种方法 • 最常用的是由function命令创建,可以 通过程序、函数或命令窗口来访问 • 第二种创建匿名函数 • 第三种形式是子函数
匿名函数(anonymous function)
• 匿名函数用于在命令行、 script文件或函数文 件中创建简单形式的函数,避免另外定义新的 函数。 • 匿名函数的定义形式: f=@(arglist)expression • Matlab允许定义多重匿名函数,例如,对于表 达式 1 可以通过以下的匿名函数进行计算 g (c) = ∫ ( x 2 + cx + 1)dx 0 g=@(c) quad(@(x) x.^2+c*x+1,0,1) 此处quad为数值积分函数。
注: fzero函数调用一次,只能求一个初值附近的 一个根,且只能是实根; fsolve函数可用于求解非线性方程组。
1 =0 cos( 0.68 x ) • % m-function, f_2.m • function y=f_2(x) % 定义 f_2.m 函数 • y=4-5.25.*x-1./cos(squr(0.68.*x));
第二章 非线性方程(组)的近似解法2
Computational Method
计算方法
§2.2 根的隔离
5 4 3 2
例2.5 求 f ( x) x 2x 5x 8x 7 x 3 0 的正根上界。 解:f ( x) 5x4 8x3 15x2 16x 7
3 2 f ( x) 20x 24x 30x 16
f ( x) 的负根上界和下界。 注:掌握正根上界的求法,正根下界、负根上界和下界
也能求得。用定理1求得的上界和下界往往太大和太小。
Computational Method 计算方法
§2.2 根的隔离
n n1 f ( x ) a x a x 定理2.2 设 0 1
an , a0 0 ,若
f ( x) , 当 x 0 时,f ( x) 1 ,当 x 时, 因此方程必有根。因为
1 0 x 0, e f ( x) ln x 1 0 x 1 , e
1 在区间 0, 上函数是单调递减的,方程无根。在区间 e
Computational Method
计算方法
§2.2 根的隔离
所以,f ( x) 的实根不能大于 1 k B / a0 。即 1 k B / a0
是 f ( x) 的正根上界。
Computational Method
计算方法
§2.2 根的隔离
解:a0 1 0, k 2, B 7,1 k B / a0 1 7 3.645 8
作图法。 画出 y f ( x) 的简图,观察曲线 y f ( x) 与 x 轴交点的大致位置,从而确定隔根区间。
Computational Method
数值分析课件第二章_非线性方程求根
| xn x || ( xn 1 ) ( x ) |
* *
| ( ) || xn 1 x* |
*
| xn x | L | xn1 x | | xn x | L | x0 x |
* n *
lim | xn x | lim L | x0 x | 0
x*即为不动点。
不动点存在的唯一性证明:
设有 x1*≠ x2*, 使得
* 1 * 2 * 1
(x ) x
* 1
* 1
(x ) x
* 2
* 2
* * 则 | x x || ( x ) ( x ) || ( ) || x1 x2 | * 2
其中,ξ介于 x1* 和 x2* 之间。
由于
计法
Ln xn x * x1 x0 1 L
很难估计,采用事后估
| xn x* |
1 | xn 1 xn || xn 1 xn | ,L大误差大。 1 L
不动点迭代法可以求方程的复根和偶数重根。
例 用不同方法求 x 2 3 0 在x=2附近的根。 解: 格式(1)
则对任意x0 [a, b],由xn+1=(xn )得到的迭代序 列{xn }收敛到(x)的不动点x *,并有误差估计:
1 | xn x | | xn 1 xn | 1 L
*
L xn x * x1 x0 1 L
n
证明:
xn ( xn1 ) * * x ( x )
x0
O
x1
x3 x * x2
x0
y ( x)
发散
y ( x)
O
第二章 非线性方程(组)的迭代解法.
输入,,计算fa f (a), fb f (b);
注: 其中 , 为 精度控制参数!
若f f a 0, 则a x, f a f ; ab 为所求根,结束! (4) 若 b a , 则x
否则,转(2);
2
例1
计算f ( x) x3 4x2 10 0在[1 , 2]内的实根。 可得 x* 1.36523, 共计算21次! 取 109, 106,
则 0, 使得 x0 [ x * , x * ]但x0 x*,
由迭代
xn1 (xn )
证明:由泰勒公式和收敛阶定义可证! 注: 1、给出了由迭代函数判断收敛速度的方法;
2、给出了提高收敛速度的方法!
School of Math. & Phys.
15
North China Elec. P.U.
Numerical Analysis
2018/10/11
J. G. Liu
例3 1 a 3 a2 1、证明xk 1 ( xk )和xk 1 xk 3 分别是求 2 xk 4 4 xk
a的平方收敛的迭代格式。
解: 迭代函数为
同理对xk 1 2 ( xk )证明!
School of Math. & Phys. 16
不妨设(x*) 0, 由(x)的连续性,则 δ 0, 当x x * δ 时,(x) 0。
当n充分大以后,[ an ,bn ] ( x * δ,x* δ ),于是当m为偶数时, x [an ,bn ], f ( x) 0,不变号了!(??)
(2) 二分法线性收敛; (3) 二分法可用来细化有根区间,这是它的一大优点! 故二分法可以用来确定迭代法的迭代初值!
非线性方程的数值解法
非线性方程:f(x)=0 包括:代数方程(多项式)、超越方程(三角函数、指
数函数或对数函数)。
求解方法:直接求解法、间接求解法; 直接求解法一般为解析法,能够得到精确解,如二次方 程求根公式等。简单但不一定总有效。 间接求解法一般较复杂,可以利用计算机进行计算,其 结果为近似解,但误差可以控制。
L L2 | x * xk | | x k x k 1 | | x k 1 xk 2 | ...... 1 L 1 L 注:定理条件非必要条件,对某些问题在区间 [a, b]上不 k L 满足| φ ’(x) | L < 1 ,迭代也收敛。 | x1 x0 | 1 L
是
是 是
f (a) =0
否
否 f(a)f(m)>0 否 b=m
打印b, k
结束
打印a, k
k=K+1
应用: 3 f x x 2x 5, a, b 2,3, 0.01 ,求x=? 例、设 解: k ba a x b
0 1 2 3 4 5 6
23+ 2.5+ 1 22.5+ 2.25+ 0.5 22.25+ 2.125+ 0.25 22.125+ 2.06250.125 2.06252.125+ 2.093750.0625 2.09375 2.125+ 2.109375+ 0.03125 2.09375 2.109375 2.1015625 0.015625 0.02
L | x k x k 1 | ? ④ | x * xk | 1 L
3 简单迭代法
| x xk | L | x xk 1 | L | x * xk xk xk 1 | | xk xk |) 1 |来 L(| x * x可用 | | x x k k k 1 (1 L) | x x | L | x x | 控制收敛精度
计算方法 第2章 非线性方程数值解法
第二章非线性方程数值解法本章将讨论非线性方程0)(=x f (2.1)的数值解法,我们最为熟悉的非线性方程是一元二次方程02=++c bx ax也是最简单的非线性方程,其解为:aac b b x 2422,1-±-=但是对于(2.1)式中一般形式的非线性函数)(x f ,很难甚至不可能找到解析形式的解,通常只能用数值的方法求其近似数值解。
2.1 基本概念定义2.1如果*x 满足0)(*=x f ,则称*x 为方程(2.1)的解或根,也称*x 为函数)(x f 的零点或根。
用数值方法求解非线性方程的解,通常需要我们对其解有一个初步的估计,或知道其解的一个限定区间,因此确定包含解的区间将是我们首先需要解决的问题。
定义2.2若连续函数)(x f 在],[b a 内至少有一个根,则称],[b a 为有根区间,若在],[b a 内恰有一个根,则称],[b a 为隔根区间。
定理2.1 如果函数)(x f 在],[b a 上连续且0)()(<b f a f ,则)(x f 在),(b a 内至少有一个根,如果函数)(x f 另外满足在],[b a 上单调连续,则)(x f 在),(b a 内恰有一个根。
寻找隔根区间的通常方法有:图形法, 试探法。
例2.1 求033)(3=+-=x x x f 的有根区间。
解:作出函数)(x f y =的曲线图形图2.1 例2.1曲线示意图观察图中的曲线与X 轴的交点,可判断在区间)2,3(--之间方程有一个根。
例2.2 求033)(23=--+=x x x x f 的有根区间。
解:计算出)(x f 在一些点的值。
从表中可以看出1-=x 是一个根,区间)2,1(是一个有根区间。
如果在[-2,-1]之间把间隔再缩小到0.25我们可以得到下列表格在这个表格里我们又发现一个有根区间)5.1,75.1(--。
从此例中我们可以体会到试探法有可能漏掉某些有根区间,具有一定的局限性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
则利用松弛迭代公式可得:
x( k 1)
0.5 x( k )
0.5 (1.74
2lg
0.1
18.7 5000
xk
,k
1,
2,L
L
L
2.1 化工实际问题的提出
经11次迭代可得摩擦系数为0.07593。
❖同样,在n个组分的等温闪蒸计算中,通过 物料和相平衡计算,我们可得到如下非线性 方程(2-3 ) :
p
A
B T
C
lnT
Dp T2
(2-5)
☺因为公式(2-5)两边都有未知变量,并且无法用解 析的方法求解,必须用数值计算的方法求解。
☺ 通过上面的一些例子,我们可以发现,如果没有适 当的手段和办法来求解非线性方程,那么化学化工中 的许多研究、设计等工作将无法展开,这势必影响化 学化工的发展,下面我们将介绍一些实用的非线性方 程求解方法,并提供计算机程序。
❖ 饱和蒸气压是我们经常要用到的数据,虽然 我们可以通过实验测量来获取饱和蒸气压的数 据。
❖ 我们通常利用前人已经测量得到的数据或回 归的公式来获取,这可以减轻我们大量的基础 实验工作。
❖公式(2-5)是一种常用的饱和蒸气压计算公 式:
ln
p
A
B T
C
ln T
Dp T2
2.1 化工实际问题的提出
ln
2.1 化工实际问题的提出
❖对于这个问题的求解,可利用我们下面介绍的 牛顿迭代法进行计算,也可利用其他迭代公式进 行计算,如采用牛顿迭代公式,则可以得到如下 的具体迭代公式:
m zi (1 ki )
an1 an
i 1 m
ki an zi (1 ki )
i1 (ki an )
(2-4)
2.1 化工实际问题的提出
❖ 计算中通过对分区间,逐步缩小区间范围的步骤 搜索零点的位置。
❖ 如果我们所要求解的方程从物理意义上来讲确实 存在实根,但又不满足f(a) f(b)<0,这时,我们必须
通过改变a和b的值来满足二分法的应用条件。
2.2.2 对分法求根算法
计算f (x) =0的一般计算步骤如下:
1、输入求根区间[a,b]和误差控制量ε,定义函 数f(x)。 2、判断: 如果f(a)f(b)<0则转下,否则,重新输 入a 和 b的值。 3、计算中点 x=(a+b)/2以及f(x)的值
❖当ω<0时,将使迭代反方向进行,可使一些迭代发散过程收敛。
2.4 松弛迭代法
松弛法的迭代公式如下:
xn1 xn ( ( x n ) xn ) (2-7)
2.3直接迭代法
对 给 定 的 方 程 f(x) =0 , 将 它 转 换 成 等 价 形 式: x 。(x)
❖给定初值x0,由此来构造迭代序列
,
k =x1k,12,…( xk,) 如果迭代收敛,
即 lim k
xk 1
lim(
k
xk
)
b
,有 b (b) , 则就是方程
f(x)=0的根。
❖在计算中当 xk1 xk小于给定的精度控制量时,
❖其一,等价形式 x ( x) , 应满足;|'( x*) | 1
❖其二,初值必须取自 x* 的充分小邻域,其大小
决定于函数f(x),及做出的等价形式 x (x) 。
2.3直接迭代法
例:求代数方程 x3-2x-5=0,在x0=2附近的零点。
解:1)x3=2x+5 ,
xk1 3 2xk 5
Q'( x)
xn1 xn ( ( x n ) xn )
(2-7)
❖ 由上式可知,当松弛因子ω等于1时,松弛迭代变为直接迭代。
❖当松弛因子ω大于1时松弛法使迭代步长加大,可加速迭代,但 有可能使原来收敛的迭代变成发散。
❖当0<ω<1时, 松弛法使迭代步长减小,这适合于迭代发散或振荡 收敛的情况,可使振荡收敛过程加速。
2.2.2 对分法求根算法
分情况处理
(1)|f(x)|<ε:停止计算 x*= x,转向步骤4 (2)f(a)f(x)<0:修正区间[a,x]→[a,b],重复3 (3)f(x)f(b)<0:修正区间[x,b]→[a,b],重复3
4、输出近似根 x*。 右图给出对分法的示意图。
x3 = (x0+ x2) / 2
❖ 而对于具体的化工问题,初值和求解范 围常常可根据具体的化工知识来决定。
2.1 化工实际问题的提出
❖常见的雷诺数和摩擦系数关系方程在雷 诺数低于4000时有以下关系式:
1
0.5
1.74
2
lg
2
di
i
18.7
Re
0.5
2.1 化工实际问题的提出
这是一个典型的非线性方程。我们在管路设计中经 常碰到。
2.2 实根的对分法
❖ 2.2.1 使用对分法的条件 ❖ 2.2.2 对分法求根算法 ❖ 2.2.3 对分法VB程序清单
2.2.1 使用对分法的条件
❖ 对分法或称二分法是求方程近似解的一种简单直观 的方法。
❖ 设函数 f(x) 在[a, b]上连续,且 f(a) f(b)<0,则f(x) 在[a, b]上至少有一零点,这是微积分中的介值定理, 也是使用对分法的前提条件。
解非线性方程或非线性方程组也是计算方法
中的一个主题。
一般地,我们用符号f(x)来表示方程左端的函
数,方程的一般形式表示为f(x)= 0,方程的 解称为方程的根或函数的零点。
2.1 化工实际问题的提出
❖ 通常,非线性方程的根不止一个,而任 何一种方法只能算出一个根。
❖ 因此,在求解非线性方程时,要给定初 始值或求解范围。
| x* xk |
Lk 1 L
|
x1
x0
|
(2-6)
2.3直接迭代法
|
x*
xk
|
Lk 1 L
|
x1
x0
|
(2-6)
要构造满足收敛条件的等价形式一般比较困难。
事实上,如果 x* 为f(x)的零点,若能构造等价形
式 x (x),而 |'( x*) | 1,由 '( x) 的边疆性,一定存
在 x*的邻域 [x* , x* ] ,其上有 |'(x) | L 1 ,这时 若初值 x0 [x* , x* ] 迭代也就收敛了。由此 构造收敛迭代格式有两个要素,
1 3
•
(2
x
1
5)
2 3
,| '( x) 1,
x [1.5, 2.5] |
构造的迭代序列收敛。取x0=2,则
准确的解是x = 2.09455148150。 x1 2.08008 , x2 2.09235 , x3 2.094217
2)将迭代格式写为
x4 2.094494 , x5 2.094543 , x6 2.094550
GoTo 100 Else
Print "please repeat input x1 and x2"
GoTo 80 End If 100 x = (x1 + x2) / 2 y = f(x) If Abs(y) <= 0.001 Then
Print "the function root is "; x Print "y="; y
取
b x为k1方程的根。
2.3直接迭代法
例如,代数方程x3-2x-10=0的三种等价形式 及其迭代格式如下:
xk 1
2 xk 10 xk2
xk1 3 2xk 10
xk 1
xk3 10 2
2.3 直接迭代法
对于方程 f (x) 0 构造的多种迭代格式 xk1 (xk ) ,怎样判 断构造的迭代格式是否收敛?收敛是否与迭代的初值有关? 根据数学知识,我们可以直接利用以下收敛条件:
(3) 计算x3=(1.5+2)/2=1.75,f(1.75)=0.078125,有 根区间[a,b]=[1.5,1.75]。
2.2.3 对分法求解实例
一直做到|f(xn)| <ε(计算前给定的精度)或|a-b|<ε时 停止。详细计算结果见表2-1。
对分法的算法简单,然而,若f(x)在[a,b]上有 几个零点时,如不作特殊处理只能算出其中一个 零点;另一方面,即使f(x)在[a,b]上有零点,也未 必有f(a)f(b)<0。这就限制了对分法的使用范围。 对分法只能计算方程f(x)=0的实根。
n
i 1
zi (1 ki )
ki
0
2.1 化工实际问题的提出
n
i 1
zi (1 ki
ki
)
0
(2-3 )
❖ 在方程(2-3)中只有α是未知数,ki为相平衡常 数,zi为进料组分的摩尔浓度,均为已知数。 ❖ 方程(2-3)也无法直接解析求解,必须利用数 值的方法。
❖ 借助于计算机方可精确的计算。
Else If y1 * y < 0 Then x2 = x y2 = y GoTo 100 Else x1 = x y1 = y GoTo 100 End If End If End Sub Public Function f(x) Dim y y=x^3+x^2-1 f=y End Function
xk 1
xk3 2
5
,
2
(
x
)
x3 5 2
|
' 2
(
x
)
||
3x2 2
|
1,
x [1.5, 2.5]
迭代格式不能保证收敛,但并不一定不收敛。