二分法求解根的近似值
前提
给定我们一个有根区间 [ a , b ] [a,b] [a,b],注意在求解非线性方程的数值解法这一章,我们都将注意力放在,我们已知了一个有根区间(且一般这个有根区间只有一个解),然后求解这个根的近似值。我们不需要做的工作是逐步搜索去探索根可能在哪些区间,而是我们已知一个有根区间。
基本原理
考察有根区间[a,b],取中点 x 0 = a + b 2 x_0=\frac{a+b}{2} x0=2a+b,将其分为两半,假设中点 x 0 x_0 x0不是 f ( x ) f(x) f(x)的零点,然后进行根的搜索。
如果
f
(
x
0
)
f(x_0)
f(x0)与
f
(
a
)
f(a)
f(a)是同号,则说明根在
x
0
x_0
x0的右侧,令
a
1
=
x
0
,
b
1
=
b
a_1=x_0,b_1=b
a1=x0,b1=b。
如果
f
(
x
0
)
f(x_0)
f(x0)与
f
(
b
)
f(b)
f(b)是同号,则说明在
x
0
x_0
x0的左侧,令
a
1
=
a
,
b
1
=
x
0
a_1=a,b_1=x_0
a1=a,b1=x0。
新的有根区间
[
a
1
,
b
1
]
[a_1,b_1]
[a1,b1]是原来区间
[
a
,
b
]
[a,b]
[a,b]的一半。
.
.
.
.
.
.
......
......
.
.
.
.
.
.
......
......
然后我们不断通过对区间的压缩,对于第k次压缩,
[
a
k
,
b
k
]
[a_k,b_k]
[ak,bk]的长度,
l
e
n
g
t
h
=
b
k
−
a
k
=
b
−
a
2
k
length=b_k-a_k=\frac{b-a}{2^k}
length=bk−ak=2kb−a
当 k k k趋近于无穷的时候,区间 [ a k , b k ] [a_k,b_k] [ak,bk]趋近于零,最终必收缩于一点,该点就是所求的根的近似值。
二分法的求解精度
每次二分后,取有根区间
[
a
k
,
b
k
]
[a_k,b_k]
[ak,bk]的中点,
x
k
=
a
k
+
b
k
2
x_k=\frac{a_k+b_k}{2}
xk=2ak+bk
由于根一定在这个区间
[
a
k
,
b
k
]
[a_k,b_k]
[ak,bk]内,所有会有根的近似值序列,
x
1
,
x
2
,
x
3
,
.
.
.
,
x
k
,
x
k
+
1
.
.
.
x_1,x_2,x_3,...,x_k,x_{k+1}...
x1,x2,x3,...,xk,xk+1...列出来这个序列,是因为其中的每个值都有可能是根或者说是根的近似值(我们想要的),该序列必须以根
x
x
x为极限。
假设根为
x
x
x,那么一定有
∣
x
−
x
k
∣
≤
b
k
−
a
k
2
=
b
−
a
2
k
+
1
| x-x_k|≤\frac{b_k-a_k}{2}=\frac{b-a}{2^{k+1}}
∣x−xk∣≤2bk−ak=2k+1b−a
我们定义二分法的精度
∣
x
−
x
k
∣
<
ε
|x-x_k|<ε
∣x−xk∣<ε
这里,ε为预定的精度。
例题
对于求解的部分过程如下所示,
对于接下来每步的计算,我们每计算一次,就验证一下是否达到精度要求,若是达到了精度要求,那么可以停止缩小区间。
如下图所示。