解析方法和数值方法
求方程
fx()= 0
的解(或根),就是要寻找一个数 x
*
,使得满足
0)(
*
=xf 。
求方程的解主要方法有两种:解析方法和数值方法。
§ 6 方程的近似求解解析方法 也称为公式法,它是将方程的解表达为方程的系数的函数形式,只要把待求的方程的系数代入表达式,就可以求出方程的解。
例如,对于一元二次方程
ax bx c a
2
00++= ≠,( ),
可以得到它的两个解为
xx
bb ac
a
12
2
4
2
,=
±?
。
解析方法和数值方法
求方程
fx()
§ 6 方程的近似求解
= 0
的解(或根),就是要寻找一个数 x
*
,使得满足
0)(
*
=xf 。
求方程的解主要方法有两种:解析方法和数值方法。
数值方法是一种求近似解的方法。由于实际问题中绝大多数方程都无法找到其解析解,因此,数值方法是用数学工具解决实际问题过程中的一个重要方法。
二分法
对于一个实的方程
fx()= 0,
最简单的数值求解方法为 二分法 。
设 fx()在 [,]ab中连续,且成立
fa fb() ()? < 0,
那么在 [,]ab至少存在着 fx()的一个解 x
*
。我们希望求出它的近似值
~
x,
满足
*
0
xx ε? ≤ ,
这里
0
ε 是预先给定的精度要求。
数值方法是一种求近似解的方法。由于实际问题中绝大多数方程都无法找到其解析解,因此,数值方法是用数学工具解决实际问题过程中的一个重要方法。
⑴ 记 [,]ab
11
=[,]ab;取 x
1
为 [,]ab
11
的中点,即 x
ab
1
11
2
=
+
。
⑵ 计算 fx()
1
,
若 fx()
1
0=,则 x
1
即为方程的解 x
*
,取
~
xx=
1
,计算结束 。
⑶ 否则,按如下规则得到区间 [,]ab
22
,
(a)若 fx fb() ()
11
0? < 。
此时 fx()的解在 [,]xb
11
中,取 ax
21
=,bb
21
= 。
(b)若 fx fb() ()
11
0? > 。
此时 fa fx() ()
11
0? <,因此 fx()的解在 [,]ax
11
中,取 aa
21
=,
bx
21
=,
易知 x
*
∈[,]ab
22
,且 [,]ab
22
的长度是 [,]ab
11
的一半。
⑷ 取 x
2
为 [,]ab
22
的中点。
⑸ 类似地,若 x
2
是方程的解 x
*
,计算结束;否则可以得到 [,]ab
33
。
⑹ 重复上述过程……。
假设执行过程中没有发生 x
k
恰好等于 x
*
的情况,由于对任何 k 都有
ba
ba
kk k
=
2
1
,
因此 [,]ab
kk
的中点 x
k
与精确解 x
*
的距离不会超过 ],[
kk
ba 长度的一半,即成立
xx
k
*
0
22
kk
k
ba ba
ε
≤ =≤,
所以,当执行到
+
=
0
2
log
ε
ab
k
时,必有
xx
k
*
0
ε≤,
于是,
k
x x= 便是符合精度要求的近似解。
Newton 迭代法
数值计算中常用的求近似值的方法是 迭代法。先将原来的方程
fx()= 0
化为等价的形式
xFx= (),
所谓“等价”是指若 x
*
是方程 0)( =xf 的解,则成立
xFx
**
()=,
反之亦然。这里的 Fx()称为 迭代函数。
取一个适当的初始值 x
0
,按
xFxk
kk+
= =
1
012(),,,, "
产生序列 {}x
k
(设每个 x
k
都属于 Fx()的定义域),这样的计算过程称为迭代。若成立
)(
*
∞→→ kxx
k
,
则 x
*
就是原方程的解。因此只要在迭代过程中,选取某个合适的 x
k
作为
~
x,就得到原方程的近似解了。
构造迭代函数可以有多种方法,最简单的可以取
Fx x fx() ()=? 。
下面我们利用 Taylor 公式来构造迭代函数。
设 fx()在含有 x
*
的某个区间 [,]ab中具有二阶连续导数,且对于每个 ],[ bax∈,都有 ′ ≠fx() 0。作出 fx()
*
在 x处的 Taylor 公式,由于 x
*
是方程 0)( =xf 的解,则有
*2
**
()
() () ()( ) () 0
2
xx
fx fx f xx x fξ
′′′
= +?+ =,
也即
*2
*
() ()( )
() () 2
f xf xx
xx
fx fx
ξ
′′
=
′′
,
当 xx→
*
时,上式的最后一项是趋向于零的,因此有
*
*
*
*
*
)(
)(
)(
)(
lim x
xf
xf
x
xf
xf
x
xx
=
′
=
′
→
。
这样,
Fx x
fx
fx
()
()
()
=?
′
就是一个满足 xFx
**
()= 要求的迭代函数,由此得到迭代公式
xx
fx
fx
k
kk
k
k
+
=?
′
=
1
012
()
()
,,, ",
这就是著名的 Newton 迭代法 (简称 Newton 法 )。
Newton 法具有明显的几何意义。求解 fx()= 0实际上是求曲线
yfx= ()与 x轴的交点的横坐标,曲线在 xx
k
= 处的切线方程为
yfxxx fx
kk k
= ′? +()( ) ()
它与 x轴的交点的横坐标恰为
xx
fx
fx
x
k
k
k
k
=?
′
=
+
()
()
1
。
也就是说,Newton 法实质上是通过一系列的切线与 x轴的交点的横坐标,来逼近曲线与 x 轴的交点的横坐标(图
5.6.1),所以 Newton 迭代法也叫
Newton 切线法 。
我们不加证明地给出如下结论。
定理 5.6.1 设 fx()在 [,]ab中有二阶连续导数,且满足条件
⑴ fa fb() ()? < 0;
⑵ ′fx()在 (,)ab保号;
⑶ ′′fx()在 (,)ab保号;
取 x
0
是 a和 b中满足
fx f x() ()
00
0? ′′ >
的那一个点,则以 x
0
为初值的 Newton 迭代过程
xx
fx
fx
k
kk
k
k
+
=?
′
=
1
012
()
()
,,, ",
产生的序列 {}x
k
单调收敛于方程
fx()= 0
在 [,]ab中的唯一解。
例5.6.1 解方程
ln sinx x= 。
解 记 fx x x() ln sin=?,考虑区间
π
,e
2
,则有
πππ
ln sin 0
222
f
=?<
,
f (e) ln e sin e=? > 0。
而
0cos
1
)( >?=
′
x
x
xf,
π
,e
2
x
∈
,
22
14
() sin sine 0
π
fx x
x
′′
=?>?>,
π
,e
2
x
∈
,
所以符合定理 5.6.1 的全部条件。
因为
ff(e) (e)′′ > 0,
所以初值取为 x
0
= e,计算结果如下,
k
x
k
xx
k
*
1 2.25781562063662289 3.87×10
-2
2 2.21951249017300478 4.05×10
-4
3 2.21910719517387323 4.63×10
-8
4 2.21910714891374683 8.88×10
-16
最后,取
~
x =x
4
=2.21910714891374683 作为 x
*
的近似值。
例5.6.2 用 Newton 法求 A,A> 0是一个给定的数。
解 显然,求 A等价于求方程
fx x A()≡? =
2
0
的解 x
*
(
+
∈R
*
x )。
首先寻找一个正整数 n,使得
()nAn? < <1
22
,
然后取 xn
0
=,用 Newton 迭代
),2,1,0(
2
1
2
2
1
求方程
fx()= 0
的解(或根),就是要寻找一个数 x
*
,使得满足
0)(
*
=xf 。
求方程的解主要方法有两种:解析方法和数值方法。
§ 6 方程的近似求解解析方法 也称为公式法,它是将方程的解表达为方程的系数的函数形式,只要把待求的方程的系数代入表达式,就可以求出方程的解。
例如,对于一元二次方程
ax bx c a
2
00++= ≠,( ),
可以得到它的两个解为
xx
bb ac
a
12
2
4
2
,=
±?
。
解析方法和数值方法
求方程
fx()
§ 6 方程的近似求解
= 0
的解(或根),就是要寻找一个数 x
*
,使得满足
0)(
*
=xf 。
求方程的解主要方法有两种:解析方法和数值方法。
数值方法是一种求近似解的方法。由于实际问题中绝大多数方程都无法找到其解析解,因此,数值方法是用数学工具解决实际问题过程中的一个重要方法。
二分法
对于一个实的方程
fx()= 0,
最简单的数值求解方法为 二分法 。
设 fx()在 [,]ab中连续,且成立
fa fb() ()? < 0,
那么在 [,]ab至少存在着 fx()的一个解 x
*
。我们希望求出它的近似值
~
x,
满足
*
0
xx ε? ≤ ,
这里
0
ε 是预先给定的精度要求。
数值方法是一种求近似解的方法。由于实际问题中绝大多数方程都无法找到其解析解,因此,数值方法是用数学工具解决实际问题过程中的一个重要方法。
⑴ 记 [,]ab
11
=[,]ab;取 x
1
为 [,]ab
11
的中点,即 x
ab
1
11
2
=
+
。
⑵ 计算 fx()
1
,
若 fx()
1
0=,则 x
1
即为方程的解 x
*
,取
~
xx=
1
,计算结束 。
⑶ 否则,按如下规则得到区间 [,]ab
22
,
(a)若 fx fb() ()
11
0? < 。
此时 fx()的解在 [,]xb
11
中,取 ax
21
=,bb
21
= 。
(b)若 fx fb() ()
11
0? > 。
此时 fa fx() ()
11
0? <,因此 fx()的解在 [,]ax
11
中,取 aa
21
=,
bx
21
=,
易知 x
*
∈[,]ab
22
,且 [,]ab
22
的长度是 [,]ab
11
的一半。
⑷ 取 x
2
为 [,]ab
22
的中点。
⑸ 类似地,若 x
2
是方程的解 x
*
,计算结束;否则可以得到 [,]ab
33
。
⑹ 重复上述过程……。
假设执行过程中没有发生 x
k
恰好等于 x
*
的情况,由于对任何 k 都有
ba
ba
kk k
=
2
1
,
因此 [,]ab
kk
的中点 x
k
与精确解 x
*
的距离不会超过 ],[
kk
ba 长度的一半,即成立
xx
k
*
0
22
kk
k
ba ba
ε
≤ =≤,
所以,当执行到
+
=
0
2
log
ε
ab
k
时,必有
xx
k
*
0
ε≤,
于是,
k
x x= 便是符合精度要求的近似解。
Newton 迭代法
数值计算中常用的求近似值的方法是 迭代法。先将原来的方程
fx()= 0
化为等价的形式
xFx= (),
所谓“等价”是指若 x
*
是方程 0)( =xf 的解,则成立
xFx
**
()=,
反之亦然。这里的 Fx()称为 迭代函数。
取一个适当的初始值 x
0
,按
xFxk
kk+
= =
1
012(),,,, "
产生序列 {}x
k
(设每个 x
k
都属于 Fx()的定义域),这样的计算过程称为迭代。若成立
)(
*
∞→→ kxx
k
,
则 x
*
就是原方程的解。因此只要在迭代过程中,选取某个合适的 x
k
作为
~
x,就得到原方程的近似解了。
构造迭代函数可以有多种方法,最简单的可以取
Fx x fx() ()=? 。
下面我们利用 Taylor 公式来构造迭代函数。
设 fx()在含有 x
*
的某个区间 [,]ab中具有二阶连续导数,且对于每个 ],[ bax∈,都有 ′ ≠fx() 0。作出 fx()
*
在 x处的 Taylor 公式,由于 x
*
是方程 0)( =xf 的解,则有
*2
**
()
() () ()( ) () 0
2
xx
fx fx f xx x fξ
′′′
= +?+ =,
也即
*2
*
() ()( )
() () 2
f xf xx
xx
fx fx
ξ
′′
=
′′
,
当 xx→
*
时,上式的最后一项是趋向于零的,因此有
*
*
*
*
*
)(
)(
)(
)(
lim x
xf
xf
x
xf
xf
x
xx
=
′
=
′
→
。
这样,
Fx x
fx
fx
()
()
()
=?
′
就是一个满足 xFx
**
()= 要求的迭代函数,由此得到迭代公式
xx
fx
fx
k
kk
k
k
+
=?
′
=
1
012
()
()
,,, ",
这就是著名的 Newton 迭代法 (简称 Newton 法 )。
Newton 法具有明显的几何意义。求解 fx()= 0实际上是求曲线
yfx= ()与 x轴的交点的横坐标,曲线在 xx
k
= 处的切线方程为
yfxxx fx
kk k
= ′? +()( ) ()
它与 x轴的交点的横坐标恰为
xx
fx
fx
x
k
k
k
k
=?
′
=
+
()
()
1
。
也就是说,Newton 法实质上是通过一系列的切线与 x轴的交点的横坐标,来逼近曲线与 x 轴的交点的横坐标(图
5.6.1),所以 Newton 迭代法也叫
Newton 切线法 。
我们不加证明地给出如下结论。
定理 5.6.1 设 fx()在 [,]ab中有二阶连续导数,且满足条件
⑴ fa fb() ()? < 0;
⑵ ′fx()在 (,)ab保号;
⑶ ′′fx()在 (,)ab保号;
取 x
0
是 a和 b中满足
fx f x() ()
00
0? ′′ >
的那一个点,则以 x
0
为初值的 Newton 迭代过程
xx
fx
fx
k
kk
k
k
+
=?
′
=
1
012
()
()
,,, ",
产生的序列 {}x
k
单调收敛于方程
fx()= 0
在 [,]ab中的唯一解。
例5.6.1 解方程
ln sinx x= 。
解 记 fx x x() ln sin=?,考虑区间
π
,e
2
,则有
πππ
ln sin 0
222
f
=?<
,
f (e) ln e sin e=? > 0。
而
0cos
1
)( >?=
′
x
x
xf,
π
,e
2
x
∈
,
22
14
() sin sine 0
π
fx x
x
′′
=?>?>,
π
,e
2
x
∈
,
所以符合定理 5.6.1 的全部条件。
因为
ff(e) (e)′′ > 0,
所以初值取为 x
0
= e,计算结果如下,
k
x
k
xx
k
*
1 2.25781562063662289 3.87×10
-2
2 2.21951249017300478 4.05×10
-4
3 2.21910719517387323 4.63×10
-8
4 2.21910714891374683 8.88×10
-16
最后,取
~
x =x
4
=2.21910714891374683 作为 x
*
的近似值。
例5.6.2 用 Newton 法求 A,A> 0是一个给定的数。
解 显然,求 A等价于求方程
fx x A()≡? =
2
0
的解 x
*
(
+
∈R
*
x )。
首先寻找一个正整数 n,使得
()nAn? < <1
22
,
然后取 xn
0
=,用 Newton 迭代
),2,1,0(
2
1
2
2
1