计算方法:非线性方程迭代求解.

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
化工计算:一元非线性方程求解
1. 化工实际问题的提出 2. 数值法求根 3. 实根的对分法 4. 直接迭代法 5. 松弛迭代法 6. 韦格斯坦法 7. 牛顿迭代法
www.themegallery.com
Company Logo
1. 化工实际问题的提出
求解非线性方程是化工设计及模拟计算中必须解决的一个问题。 与线性方程相比,非线性方程问题无论是从理论上还是从计算 公式上,都要比线性方程复杂的多。对于一般的非线性 f(x)=0 , 计算方程的根既无一定章程可循也无直接方法可言。 例如:求解高次方程组7x6-x3+x-1.5=0的根; 求解含有指数和正弦函数的超越方程ex-sin(x)=0的零点。 解非线性方程或非线性方程组也是计算方法中的一个主题。一 般地,我们用符号 f(x) 来表示方程左端的函数,方程的一般形 式表示为f(x)=0,方程的解称为方程的根或函数的零点。 对于高次代数方程,当次数>4时,则没有通解公式可用,对于 超越方程既不知有几个根,也没有同样的求解方式。实际上, 对于n≥3代数方程以及超越方程都采用数值方法求近似根。
( II ) 0 L < 1 使得 | g’(x) | L < 1 对 x[a, b] 成立。
则任取 x0[a, b],由 xk+1 = g(xk) 得到的序列 x k 收敛 k 0 于g(x) 在[a, b]上的唯一不动点。并且有误差估计式: | x * xk |
www.themegallery.com
Company Logo
3. 实根的对分法
When to stop?
a x1 x* x2 b
xk 1 xk ε1

f ( x ) ε2
不能保证 x 的精 度
2
x* x
www.themegallery.com
Company Logo
3. 实根的对分法
www.themegallery.com
Company Logo
1. 化工实际问题的提出
通常,非线性方程的根不止一个,而任何一种方法只能 算出一个根。因此,在求解非线性方程时,要给定初始 值或求解范围。而对于具体的化工问题,初值和求解范 围常常可根据具体的化工知识来决定。常见的雷诺数和 摩擦系数关系方程在雷诺数低于4000时有以下关系式:
y p1 p0
y=x y=g(x)
y p0
y=x

x0 y x1 x* y=x x x0 y y=g(x) p0 x* y=g(x)

p1 y=g(x) x1 y=x x
p0 p1 x1 x0 x*

x x0 x*
p1

x
x1
4. 直接迭代法
定理
考虑方程 x = g(x), g(x)C[a, b], 若 ( I ) 当 x[a, b] 时, g(x)[a, b];
证明:① g(x) 在[a, b]上存在不动点?
令 f ( x ) g( x ) x
f ( x ) 有根
a g( x ) b
f ( a ) g(a ) a 0 , f ( b ) g ( b ) b 0

② 不动点唯一?
~ g( x ~ ),则 反证:若不然,设还有 x ~ ) g(ξ ) ( x * x ~ ), 在 x * 和 x ~ 之间 ~ g( x*) g( x x* x ~ )(1 g(ξ )) 0 ~ ( x* x 而 | g(ξ ) | 1 x* x
Company Logo
对分法举例
例:求 x x 1 0 在[1.0, 1.5]内的一实根,精确到小数 点后2位。
3
k
ak
bk 1.5 1.375
xk 1.25 1.375 1.3125 1.3438 1.3281 1.3203 1.3242
f(xk)符号 − + − + + − −
Company Logo
1. 化工实际问题的提出
饱和蒸气压是我们经常要用到的数据,虽然我们可以通过实验测量来 获取饱和蒸气压的数据,但我们通常利用前人已经测量得到的数据或 回归的公式来获取,这可以减轻我们大量的基础实验工作。公式 (2) 是一种常用的饱和蒸气压计算公式:
B Dp ln p A C ln T 2 T T
误差 分析:
x1 ab 2
§2 Bisection Method
ba |x x*| 第1步产生的 有误差 1 2 ba |x x*| k 第 k 步产生的 xk 有误差 2k
对于给定的精度 ,可估计二分法所需的步数 k : ①简单; ② 对f (x) 要求不高(只要连续即可) . ①无法求复根及偶重根 ② 收敛慢
1
0.5
2 i 18.7 (1) 1.74 2 lg 0.5 Re di
www.themegallery.com
Company Logo
1. 化工实际问题的提出
这是一个典型的非线性方程。我们在管路设计中经常碰 到。当我们已知雷诺数Re,如何根据公式 (1) 求出摩擦 系数 λ,这是我们在管路设计中必须首先解决的问题。 对于方程 (1) 而言,无法用解析的方法求出摩擦系数, 只能用数值求解的方法。如用在下面即将介绍的松弛迭 代法,假设: 0.5 2ε 1 0 x , i 0.1,Re 5000,x 0, 0.5 di 则利用松弛迭代公式可得:
1 | x k 1 x k | 1 L
k
L | x1 x0 | | x * xk | 1 L
( k = 1, 2, … )
且存在极限
www.themegallery.com
lim
k
x * x k 1 g x * x * xk
Company Logo
www.themegallery.com
Company Logo
逐步扫描法求根的初始近似值
用数值法求方程的根可分为两步,首先要找出根的某个近 似值,又称为“初始值”,然后再采用特定算法将初始值 逐步接近真实值,直到获得满足要求的结果。 逐步扫描法
y
y
y = f (x)
y = f (x)
a+h
(2)
其中p为饱和蒸气压,单位为mmHg,T为温度,单位为K,A、B、 C、D为已知系数。要想得到某一温度下的饱和蒸气压,直接利用公式 (2) 是无法得到的。因为公式 (2) 两边都有未知变量,并且无法用解析 的方法求解,必须用数值计算的方法求解。 通过上面的一些例子,我们可以发现,如果没有适当的手段和办法来 求解非线性方程,那么化学化工中的许多研究、设计等工作将无法展 开,这势必影响化学化工的发展,下面我们将介绍一些实用的非线性 方程求解方法,并提供计算机程序。
③ 当k 时, xk 收敛到 x* ?
| x * xk | | g( x*) g( xk 1 ) | | g(ξ k 1 ) | | x * xk 1 |
L | x * xk 1 | ...... Lk | x * x0 | 0
④ | x * xk |
0 1.0 1 1.25 2 3 1.3125 4 5 6 1.3203
www.themegallery.com
1.3438 1.3281
4. 直接迭代法
f (x) = 0 f (x) 的根
等价变换
x = g (x) g (x) 的不动点
从一个初值 x0 出发,计算 x1 = g(x0), x2 = g(x1), …, x 思 xk+1 = g(xk), … 若 k k 0 收敛,即存在 x* 使得 路 lim x k x *,且 g 连续,则由 lim x k 1 lim g x k 可 k k k 知 x* = g(x* ),即x* 是 g 的不动点,也就是f 的根。
1 | x k 1 x k | ? 1 L
| xk 1 xk | | x * xk | | x * xk 1 | | x * xk | L | x * xk | | xk 1 xk | 来 Lk 可用 | x1 x0 | ? ⑤ | x * xk | 1 L 控制收敛精度
18.7 k x( k 1) 0.5 x( k ) 0.5 1.74 2lg 0.1 x , k 1, 2, 5000
wk.baidu.com
经11次迭代可得摩擦系数为0.07593。
www.themegallery.com Company Logo
0 a b x
0
a
a+2h
b
x
www.themegallery.com
Company Logo
3. 实根的对分法
对分法或称二分法是求方程近似解的一种简单直观的方 法。设函数 f(x) 在 [a,b]上连续,且 f(a)f(b)<0,则f(x) 在 [a,b]上至少有一零点,这是微积分中的介值定理,也是使 用对分法的前提条件。计算中通过对分区间,逐步缩小 区间范围的步骤搜索零点的位置。 如果我们所要求解的方程从物理意义上来讲确实存在实 根,但又不满足 f(a)f(b)<0,这时,我们必须通过改变a和 b的值来满足二分法的应用条件。
ba ε k 2
lnb a ln ε k
ln 2
www.themegallery.com
注:用二分法求根,最好先给出 f (x) 草图以确定根的大 概位置。或用搜索程序,将[a, b]分为若干小区间,对每一 个满足 f (ak)· f (bk) < 0 的区间调用二分法程序,可找出区 间[a, b]内的多个根,且不必要求 f (a)· f (b) < 0 。
www.themegallery.com
Company Logo
2. 数值法求根
首选要给出一个初始猜测解,然后通过各种迭代格式 使其逐次逼近准确解。 初值好坏对迭代收敛性有很大影响,因此初值的选取 很重要。 对于有专业背景的问题,初值可以按条件选择,对于 没有经验的问题,可以用图解法和计算机试算搜索法 初估近似解。
x3=(x0+x2)/2 x0 x3 x2 x2= (x0+x1)/2
www.themegallery.com Company Logo
x1
3. 实根的对分法 求 f (x) = 0 的根
原理:若 f C[a, b],且 f (a) ·f (b) < 0, 则 f 在 (a, b) 上必有一根。
www.themegallery.com
Company Logo
3. 实根的对分法
计算f(x)=0的一般计算步骤如下:
1、输入求根区间[a,b]和误差控制量 ε ,定义函数f(x)。 2、判断: 如果f(a)f(b)<0则转下,否则,重新输入a和b的值。 3、计算中点 x=(a+b)/2以及f(x)的值 分情况处理: (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*。 右图给出对分法的示意图。
basically are OhSo yeah? Whowe tells done! can’t believe you that I the method it’s so simple! is convergent? What’s the problem?
www.themegallery.com Company Logo
| xk 1 xk | | g( xk ) g( xk 1 ) | | g( ξ k )( xk xk 1 ) |
k L | xk xL | ...... L | x1 x0 | k 1 越 小 收敛越快

⑥ lim
k
lim
k
x * x k 1 g( ξ k )( x * xk ) lim g( x*) k x * xk x * xk
相关文档
最新文档