当前位置:文档之家› 计算方法:非线性方程迭代求解

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

OhSo basically we are yeah? Who tells done! the method you that I can’t believe it’s so simple! is convergent? What’s the problem?
Company Logo

Company Logo
3. 实根的对分法
When to stop?
a x1 x* x2 b
x k 1 x k ε1

f ( x ) ε2
不能保证 x 的精 度
2
x* x

Company Logo
3. 实根的对分法

Company Logo
1. 化工实际问题的提出
通常,非线性方程的根不止一个,而任何一种方法只能 算出一个根。因此,在求解非线性方程时,要给定初始 值或求解范围。而对于具体的化工问题,初值和求解范 围常常可根据具体的化工知识来决定。常见的雷诺数和 摩擦系数关系方程在雷诺数低于4000时有以下关系式:
1 x
0 .5
,
2εi di
0 .1 , R e 5 0 0 0 , x
0
0 , 0 .5
则利用松弛迭代公式可得:
x
(k 1)
0 .5 x
(k )
0 .5 1 .7 4 2 lg
1 8 .7 k 0 .1 x , k 1, 2 , 5000

Company Logo
2. 数值法求根
首选要给出一个初始猜测解,然后通过各种迭代格式 使其逐次逼近准确解。 初值好坏对迭代收敛性有很大影响,因此初值的选取 很重要。 对于有专业背景的问题,初值可以按条件选择,对于 没有经验的问题,可以用图解法和计算机试算搜索法 初估近似解。
L | x k x k 1 | ...... L | x 1 x 0 |
| x1 x0 | ?
可用 | x k 1 x k | 来 控制收敛精度
k

L 越 小 收敛越快
Company Logo
对分法举例
例:求 x 点后2位。
3
x1 0
在[1.0, 1.5]内的一实根,精确到小数
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
0 .5
2 i 1 8 .7 1 .7 4 2 lg 0 .5 R e di
(1)

Company Logo
1. 化工实际问题的提出
这是一个典型的非线性方程。我们在管路设计中经常碰 到。当我们已知雷诺数Re,如何根据公式 (1) 求出摩擦 系数 λ,这是我们在管路设计中必须首先解决的问题。 对于方程 (1) 而言,无法用解析的方法求出摩擦系数, 只能用数值求解的方法。如用在下面即将介绍的松弛迭 代法,假设:
( I ) 当 x[a, b] 时, g(x)[a, b];
( II ) 0 L < 1 使得 | g’(x) | L < 1 对 x[a, b] 成立。
则任取 x0[a, b],由 xk+1 = g(xk) 得到的序列 x 收敛 于g(x) 在[a, b]上的唯一不动点。并且有误差估计式:
1 1 L
k
| x k 1 x k | ?
| x k 1 x k | | x * x k | | x * x k 1 | | x * x k | L | x * x k |

| x * xk |
| x k 1
L
1 L x k | | g ( x k ) g ( x k 1 ) | | g ( ξ k )( x k x k 1 ) |
经11次迭代可得摩擦系数为0.07593。
Company Logo
1. 化工实际问题的提出
饱和蒸气压是我们经常要用到的数据,虽然我们可以通过实验测量来 获取饱和蒸气压的数据,但我们通常利用前人已经测量得到的数据或 回归的公式来获取,这可以减轻我们大量的基础实验工作。公式 (2) 是一种常用的饱和蒸气压计算公式:
化工计算:一元非线性方程求解
1. 化工实际问题的提出 2. 数值法求根 3. 实根的对分法 4. 直接迭代法 5. 松弛迭代法 6. 韦格斯坦法 7. 牛顿迭代法

Company Logo
1. 化工实际问题的提出
求解非线性方程是化工设计及模拟计算中必须解决的一个问题。 与线性方程相比,非线性方程问题无论是从理论上还是从计算 公式上,都要比线性方程复杂的多。对于一般的非线性 f(x)=0 , 计算方程的根既无一定章程可循也无直接方法可言。 例如:求解高次方程组7x6-x3+x-1.5=0的根; 求解含有指数和正弦函数的超越方程ex-sin(x)=0的零点。 解非线性方程或非线性方程组也是计算方法中的一个主题。一 般地,我们用符号f(x)来表示方程左端的函数,方程的一般形 式表示为f(x)=0,方程的解称为方程的根或函数的零点。 对于高次代数方程,当次数>4时,则没有通解公式可用,对于 超越方程既不知有几个根,也没有同样的求解方式。实际上, 对于n≥3代数方程以及超越方程都采用数值方法求近似根。
误差 分析: 第1步产生的
x1 ab 2
§2 Bisection Method
有误差
|x 1 x*|
ba 2 ba
2
k
第 k 步产生的 xk 有误差
|x k x*|
对于给定的精度 ,可估计二分法所需的步数 k : ln b a b a ①简单; ② 对f (x) 要求不高(只要连续即可) . ①无法求复根及偶重根 ② 收敛慢
~ ~ ~ ~ x* x g ( x *) g ( x ) g ( ξ ) ( x * x ), 在 x * 和 x 之间 ~ ~ ( x* x )( 1 g ( ξ )) 0 而 | g ( ξ ) | 1 x * x

③ 当k 时, xk 收敛到 x* ?

Company Logo
逐步扫描法求根的初始近似值
用数值法求方程的根可分为两步,首先要找出根的某个近 似值,又称为“初始值”,然后再采用特定算法将初始值 逐步接近真实值,直到获得满足要求的结果。 逐步扫描法
y
y
y = f (x )
y = f (x )
x3=(x0+x2)/2 x0 x3 x2 x2= (x0+x1)/2
Company Logo
x1
3. 实根的对分法 求 f (x) = 0 的根
原理:若 f C[a, b],且 f (a) · (b) < 0, f 则 f 在 (a, b) 上必有一根。
k
证明:① g(x) 在[a, b]上存在不动点?

f ( x) g( x) x
a g( x) b
f (a ) g (a ) a 0 ,
f (x)
f (b ) g (b ) b 0
有根

~ ~ x g ( x ),则
② 不动点唯一?
反证:若不然,设还有
| x * x k | | g ( x *) g ( x k 1 ) | | g ( ξ k 1 ) | | x * x k 1 |
L | x * x k 1 | ...... L | x * x 0 | 0
k


| x * xk |
2
k
ε

k
ln ε
ln 2

注:用二分法求根,最好先给出 f (x) 草图以确定根的大 概位置。或用搜索程序,将[a, b]分为若干小区间,对每一 个满足 f (ak)· (bk) < 0 的区间调用二分法程序,可找出区 f 间[a, b]内的多个根,且不必要求 f (a)· (b) < 0 。 f
y p1 p0
y=x y=g(x)
y p0
y=x

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

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

x x0 x*
p1

x
x1 x0 x*
x1
4. 直接迭代法
定理
考虑方程 x = g(x), g(x)C[a, b], 若
a+h
0 a b x
0
a
a+2h
b
x

Company Logo
3. 实根的对分法
对分法或称二分法是求方程近似解的一种简单直观的方 法。设函数 f(x) 在[a,b]上连续,且 f(a)f(b)<0,则f(x)在 [a,b]上至少有一零点,这是微积分中的介值定理,也是使 用对分法的前提条件。计算中通过对分区间,逐步缩小 区间范围的步骤搜索零点的位置。 如果我们所要求解的方程从物理意义上来讲确实存在实 根,但又不满足 f(a)f(b)<0,这时,我们必须通过改变a和 b的值来满足二分法的应用条件。
0 1.0 1 1.25 2 3 1.3125 4 5 6 1.3203

1.3438 1.3281
4. 直接迭代法
等价变换
f (x) = 0 f (x) 的根
x = g (x) g (x) 的不动点
相关主题