第2章非线性方程求解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
须解决的一个问题。
☺与线性方程相比,非线性方程问题无论是从
理论上还是从计算公式上,都要比线性方程复 杂的多
对于一般的非线性f(x)=0,计算方程的根既
无一定章程可循也无直接方法可言。
2.1 化工实际问题的提出
例如,求解高次方程组7x6-x3+x-1.5 = 0的根,
求解含有指数和正弦函数的超越方程ex-sin(x) = 0的零点。
则利用松弛迭代公式可得:
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 ) :
K
x
f(x)
0
1
-2.8
1
2
0.3
2
1.5
0.45
3
1.75
0.078125
4
1.625
-0.141797
5
1.6875 -0.0215332
6
1.71875
0.03078
7
1.70312 0.00525589
求解区间
[1,2] [1.5,2] [1.5,1.75] [1.625,1.75] [1.6875,1.75] [1.6875,1.71875] [1.6875,1.70312]
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)也无法直接解析求解,必须利用数 值的方法。
❖ 借助于计算机方可精确的计算。
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章 非线性方程求解
2.1 化工实际问题的提出 2.2 实根的对分法 2.3 直接迭代法 2.4 松弛迭代法 2.5 韦格斯坦法 2.6 牛顿迭代法 2.7 割线法 2.8 非线性方程组的牛顿方法 2.9 化工生产中非线性方程组求解应用实例
2.1 化工实际问题的提出
☺求解非线性方程是化工设计及模拟计算中必
❖当ω<0时,将使迭代反方向进行,可使一些迭代发散过程收敛。
2.4 松弛迭代法
松弛法的迭代公式如下:
xn1 xn ( ( x n ) xn ) (2-7)
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
|xk-xk-1|
0.5 0.25 0.125 0.0625 0.03125 0.015625
❖对于多个零点的方程,我们可以通过将给定的区间[a,b]进行细 分,然后在细分后的区间内用二分法分别求解,从而得到多个 零点。
❖例如求方程在0-30内的所有根。需要对二分法进行以下处理: 即先给定一个a,本例中为0,然后不断增加,直到找到一个b, 使f(a)f(b)<0,调用二分法,计算在[a,b]范围内的根,然后将b 作为a,重复上面的工作,直到计算范围超出30为止。
xn1 xn ( ( x n ) xn )
(2-7)
❖ 由上式可知,当松弛因子ω等于1时,松弛迭代变为直接迭代。
❖当松弛因子ω大于1时松弛法使迭代步长加大,可加速迭代,但 有可能使原来收敛的迭代变成发散。
❖当0<ω<1时, 松弛法使迭代步长减小,这适合于迭代发散或振荡 收敛的情况,可使振荡收敛过程加速。
p
A
B T
C
lnT
Dp T2
(2-5)
☺因为公式(2-5)两边都有未知变量,并且无法用解 析的方法求解,必须用数值计算的方法求解。
☺ 通过上面的一些例子,我们可以发现,如果没有适 当的手段和办法来求解非线性方程,那么化学化工中 的许多研究、设计等工作将无法展开,这势必影响化 学化工的发展,下面我们将介绍一些实用的非线性方 程求解方法,并提供计算机程序。
取
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 ) ,怎样判 断构造的迭代格式是否收敛?收敛是否与迭代的初值有关? 根据数学知识,我们可以直接利用以下收敛条件:
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
(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的实根。
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小于给定的精度控制量时,
xk 1
xk3 2
5
,
2
(
x
)
x3 5 2
|
' 2
(
x
)
||
3x2 2
|
1,
x [1.5, 2.5]
迭代格式不能保证收敛,但并不一定不收敛。
VB程序界面:
2.4 松弛迭代法
有些非线性方程或方程组当用上一节中的直接迭代法求解时, 迭代过程是发散的。这时可引入松弛因子,利用松弛迭代法。通过 选择合适的松弛因子,就可以使迭代过程收敛。松弛法的迭代公式 如下:
解非线性方程或非线性方程组也是计算方法
中的一个主题。
一般地,我们用符号f(x)来表示方程左端的函
数,方程的一般形式表示为f(x)= 0,方程的 解称为方程的根或函数的零点。
2.1 化工实际问题的提出
❖ 通常,非线性方程的根不止一个,而任 何一种方法只能算出一个根。
❖ 因此,在求解非线性方程时,要给定初 始值或求解范围。
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
1、 当 x [a,b]有 a ( x) b ;
2、 ( x) 在[a,b]上可导,并且存在正数L<1,使任意 的 x[a,b] ,有 | '( x) | L ;
则在[a,b]上有唯一的点 x* 满足x* ( x*) , 称 x*为 ( x) 的 不动点。而且迭代格式对任意初值均收敛于的不动点,并 有下面误差估计式:
x0
x3
x2
x1
x2= (x0+ x1)/2
2.2.3 对分法VB程序清单
Private Sub Command1_Click() Dim x1, x2, x, y1, y2, y, eer 80 x1 = InputBox("x1") x2 = InputBox("x2") y1 = f(x1) y2 = f(x2) If y1 * y2 < 0 Then
❖ 而对于具体的化工问题,初值和求解范 围常常可根据具体的化工知识来决定。
2.1 化工实际问题的提出
❖常见的雷诺数和摩擦系数关系方程在雷 诺数低于4000时有以下关系式:
1
0.5
1.74
2
lg
2
di
i
18.7
Re
0.5
2.1 化工实际问题的提出
这是一个典型的非线性方程。我们在管路设计中经 常碰到。
❖其一,等价形式 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)
❖ 计算中通过对分区间,逐步缩小区间范围的步骤 搜索零点的位置。
❖ 如果我们所要求解的方程从物理意义上来讲确实 存在实根,但又不满足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)的值
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]上至少有一零点,这是微积分中的介值定理, 也是使用对分法的前提条件。
2.1 化工实际问题的提出
❖对于这个问题的求解,可利用我们下面介绍的 牛顿迭代法进行计算,也可利用其他迭代公式进 行计算,如采用牛顿迭代公式,则可以得到如下 的具体迭代公式:
m zi (1 ki )
an1 an
i 1 m
ki an zi (1 ki )
i1 (ki an )
ห้องสมุดไป่ตู้
(2-4)
2.1 化工实际问题的提出
❖ 饱和蒸气压是我们经常要用到的数据,虽然 我们可以通过实验测量来获取饱和蒸气压的数 据。
❖ 我们通常利用前人已经测量得到的数据或回 归的公式来获取,这可以减轻我们大量的基础 实验工作。
❖公式(2-5)是一种常用的饱和蒸气压计算公 式:
ln
p
A
B T
C
ln T
Dp T2
2.1 化工实际问题的提出
ln
2.2.3对分法求解实例
用对分法求 f(x) x3 - 7.7x2 19.2x -15.3 在区间[1,2] 之间的根。
解:
(1) f(1)= -2.8,f(2)=0.3,由介值定理可得有根区 间[a,b]=[1,2]。
(2) 计算x2=(1+2)/2=1.5,f(1.5)= -0.45,有根区间 [a,b]=[1.5,2]。
| 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* ] 迭代也就收敛了。由此 构造收敛迭代格式有两个要素,
❖当我们已知雷诺数Re,如何根据公式(2-1)求出摩擦 系数λ,这是我们在管路设计中必须首先解决的问题。
❖ 对于方程(2-1)而言,无法用解析的方法求出摩擦系 数,只能用数值求解的方法。如用在下面即将介绍的松 弛迭代法,假设:
x
1
0.5
,
2εi di
0.1, Re 3800,
x0 0, 0.5
☺与线性方程相比,非线性方程问题无论是从
理论上还是从计算公式上,都要比线性方程复 杂的多
对于一般的非线性f(x)=0,计算方程的根既
无一定章程可循也无直接方法可言。
2.1 化工实际问题的提出
例如,求解高次方程组7x6-x3+x-1.5 = 0的根,
求解含有指数和正弦函数的超越方程ex-sin(x) = 0的零点。
则利用松弛迭代公式可得:
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 ) :
K
x
f(x)
0
1
-2.8
1
2
0.3
2
1.5
0.45
3
1.75
0.078125
4
1.625
-0.141797
5
1.6875 -0.0215332
6
1.71875
0.03078
7
1.70312 0.00525589
求解区间
[1,2] [1.5,2] [1.5,1.75] [1.625,1.75] [1.6875,1.75] [1.6875,1.71875] [1.6875,1.70312]
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)也无法直接解析求解,必须利用数 值的方法。
❖ 借助于计算机方可精确的计算。
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章 非线性方程求解
2.1 化工实际问题的提出 2.2 实根的对分法 2.3 直接迭代法 2.4 松弛迭代法 2.5 韦格斯坦法 2.6 牛顿迭代法 2.7 割线法 2.8 非线性方程组的牛顿方法 2.9 化工生产中非线性方程组求解应用实例
2.1 化工实际问题的提出
☺求解非线性方程是化工设计及模拟计算中必
❖当ω<0时,将使迭代反方向进行,可使一些迭代发散过程收敛。
2.4 松弛迭代法
松弛法的迭代公式如下:
xn1 xn ( ( x n ) xn ) (2-7)
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
|xk-xk-1|
0.5 0.25 0.125 0.0625 0.03125 0.015625
❖对于多个零点的方程,我们可以通过将给定的区间[a,b]进行细 分,然后在细分后的区间内用二分法分别求解,从而得到多个 零点。
❖例如求方程在0-30内的所有根。需要对二分法进行以下处理: 即先给定一个a,本例中为0,然后不断增加,直到找到一个b, 使f(a)f(b)<0,调用二分法,计算在[a,b]范围内的根,然后将b 作为a,重复上面的工作,直到计算范围超出30为止。
xn1 xn ( ( x n ) xn )
(2-7)
❖ 由上式可知,当松弛因子ω等于1时,松弛迭代变为直接迭代。
❖当松弛因子ω大于1时松弛法使迭代步长加大,可加速迭代,但 有可能使原来收敛的迭代变成发散。
❖当0<ω<1时, 松弛法使迭代步长减小,这适合于迭代发散或振荡 收敛的情况,可使振荡收敛过程加速。
p
A
B T
C
lnT
Dp T2
(2-5)
☺因为公式(2-5)两边都有未知变量,并且无法用解 析的方法求解,必须用数值计算的方法求解。
☺ 通过上面的一些例子,我们可以发现,如果没有适 当的手段和办法来求解非线性方程,那么化学化工中 的许多研究、设计等工作将无法展开,这势必影响化 学化工的发展,下面我们将介绍一些实用的非线性方 程求解方法,并提供计算机程序。
取
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 ) ,怎样判 断构造的迭代格式是否收敛?收敛是否与迭代的初值有关? 根据数学知识,我们可以直接利用以下收敛条件:
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
(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的实根。
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小于给定的精度控制量时,
xk 1
xk3 2
5
,
2
(
x
)
x3 5 2
|
' 2
(
x
)
||
3x2 2
|
1,
x [1.5, 2.5]
迭代格式不能保证收敛,但并不一定不收敛。
VB程序界面:
2.4 松弛迭代法
有些非线性方程或方程组当用上一节中的直接迭代法求解时, 迭代过程是发散的。这时可引入松弛因子,利用松弛迭代法。通过 选择合适的松弛因子,就可以使迭代过程收敛。松弛法的迭代公式 如下:
解非线性方程或非线性方程组也是计算方法
中的一个主题。
一般地,我们用符号f(x)来表示方程左端的函
数,方程的一般形式表示为f(x)= 0,方程的 解称为方程的根或函数的零点。
2.1 化工实际问题的提出
❖ 通常,非线性方程的根不止一个,而任 何一种方法只能算出一个根。
❖ 因此,在求解非线性方程时,要给定初 始值或求解范围。
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
1、 当 x [a,b]有 a ( x) b ;
2、 ( x) 在[a,b]上可导,并且存在正数L<1,使任意 的 x[a,b] ,有 | '( x) | L ;
则在[a,b]上有唯一的点 x* 满足x* ( x*) , 称 x*为 ( x) 的 不动点。而且迭代格式对任意初值均收敛于的不动点,并 有下面误差估计式:
x0
x3
x2
x1
x2= (x0+ x1)/2
2.2.3 对分法VB程序清单
Private Sub Command1_Click() Dim x1, x2, x, y1, y2, y, eer 80 x1 = InputBox("x1") x2 = InputBox("x2") y1 = f(x1) y2 = f(x2) If y1 * y2 < 0 Then
❖ 而对于具体的化工问题,初值和求解范 围常常可根据具体的化工知识来决定。
2.1 化工实际问题的提出
❖常见的雷诺数和摩擦系数关系方程在雷 诺数低于4000时有以下关系式:
1
0.5
1.74
2
lg
2
di
i
18.7
Re
0.5
2.1 化工实际问题的提出
这是一个典型的非线性方程。我们在管路设计中经 常碰到。
❖其一,等价形式 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)
❖ 计算中通过对分区间,逐步缩小区间范围的步骤 搜索零点的位置。
❖ 如果我们所要求解的方程从物理意义上来讲确实 存在实根,但又不满足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)的值
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]上至少有一零点,这是微积分中的介值定理, 也是使用对分法的前提条件。
2.1 化工实际问题的提出
❖对于这个问题的求解,可利用我们下面介绍的 牛顿迭代法进行计算,也可利用其他迭代公式进 行计算,如采用牛顿迭代公式,则可以得到如下 的具体迭代公式:
m zi (1 ki )
an1 an
i 1 m
ki an zi (1 ki )
i1 (ki an )
ห้องสมุดไป่ตู้
(2-4)
2.1 化工实际问题的提出
❖ 饱和蒸气压是我们经常要用到的数据,虽然 我们可以通过实验测量来获取饱和蒸气压的数 据。
❖ 我们通常利用前人已经测量得到的数据或回 归的公式来获取,这可以减轻我们大量的基础 实验工作。
❖公式(2-5)是一种常用的饱和蒸气压计算公 式:
ln
p
A
B T
C
ln T
Dp T2
2.1 化工实际问题的提出
ln
2.2.3对分法求解实例
用对分法求 f(x) x3 - 7.7x2 19.2x -15.3 在区间[1,2] 之间的根。
解:
(1) f(1)= -2.8,f(2)=0.3,由介值定理可得有根区 间[a,b]=[1,2]。
(2) 计算x2=(1+2)/2=1.5,f(1.5)= -0.45,有根区间 [a,b]=[1.5,2]。
| 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* ] 迭代也就收敛了。由此 构造收敛迭代格式有两个要素,
❖当我们已知雷诺数Re,如何根据公式(2-1)求出摩擦 系数λ,这是我们在管路设计中必须首先解决的问题。
❖ 对于方程(2-1)而言,无法用解析的方法求出摩擦系 数,只能用数值求解的方法。如用在下面即将介绍的松 弛迭代法,假设:
x
1
0.5
,
2εi di
0.1, Re 3800,
x0 0, 0.5