二分法计算过程
二分法的计算过程为:
- 取区间
[
a
,
b
]
[a,b]
[a,b]的中点
x
0
=
a
+
b
2
x_{0}=\frac{a+b}{2}
x0=2a+b,并计算中点函数值
f
(
x
0
)
f(x_{0})
f(x0),判断:
- 若 f ( a ) f ( x 0 ) < 0 f(a)f(x_{0})<0 f(a)f(x0)<0,则有根区间为 [ a , x 0 ] [a,x_{0}] [a,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]
- 若 f ( a ) f ( x 0 ) = 0 f(a)f(x_{0})=0 f(a)f(x0)=0,则 x 0 x_{0} x0即为所求的根 α \alpha α
- 若 f ( a ) f ( x 0 ) > 0 f(a)f(x_{0})>0 f(a)f(x0)>0 ,则有根区间为 [ x 0 , b ] [x_{0},b] [x0,b],取 a 1 = x 0 , b 1 = b a_{1}=x_{0},b_{1}=b a1=x0,b1=b,即新的有根区间为 [ a 1 , b 1 ] [a_{1},b_{1}] [a1,b1]
- 取区间
[
a
1
,
b
1
]
[a_{1},b_{1}]
[a1,b1]的中点
x
1
=
a
1
+
b
1
2
x_{1}=\frac{a_{1}+b_{1}}{2}
x1=2a1+b1,并计算中点函数值
f
(
x
1
)
f(x_{1})
f(x1),判断:
- 若 f ( a 1 ) f ( x 1 ) < 0 f(a_{1})f(x_{1})<0 f(a1)f(x1)<0,则有根区间为 [ a 1 , x 1 ] [a_{1},x_{1}] [a1,x1],取 a 2 = a 1 , b 2 = x 1 a_{2}=a_{1},b_{2}=x_{1} a2=a1,b2=x1,即新的有根区间为 [ a 2 , b 2 ] [a_{2},b_{2}] [a2,b2]
- 若 f ( a 1 ) f ( x 1 ) = 0 f(a_{1})f(x_{1})=0 f(a1)f(x1)=0,则 x 1 x_{1} x1即为所求的根 α \alpha α
- 若 f ( a 1 ) f ( x 0 ) > 0 f(a_{1})f(x_{0})>0 f(a1)f(x0)>0 ,则有根区间为 [ x 1 , b 1 ] [x_{1},b_{1}] [x1,b1],取 a 2 = x 0 , b 2 = b 1 a_{2}=x_{0},b_{2}=b_{1} a2=x0,b2=b1,即新的有根区间为 [ a 2 , b 2 ] [a_{2},b_{2}] [a2,b2]
此过程可以一直进行下去,则可得到一系列有根区间
[
a
,
b
]
⊃
[
a
1
,
b
1
]
⊃
[
a
2
,
b
2
]
⊃
⋯
⊃
[
a
n
,
b
n
]
⊃
⋯
[a,b]\supset [a_{1},b_{1}]\supset [a_{2}, b_{2}]\supset \cdots\supset [a_{n}, b_{n}]\supset \cdots
[a,b]⊃[a1,b1]⊃[a2,b2]⊃⋯⊃[an,bn]⊃⋯
显然,
[
a
n
,
b
n
]
[a_{n},b_{n}]
[an,bn]的区间长度为:
b
n
−
a
n
=
b
n
−
1
−
a
n
−
1
2
=
⋯
=
b
−
a
2
n
(1)
b_{n}-a_{n}=\frac{b_{n-1}-a_{n-1}}{2}=\cdots=\frac{b-a}{2^{n}}\tag{1}
bn−an=2bn−1−an−1=⋯=2nb−a(1)
此过程如下图所示:
取最后一个区间的中点
x
n
x_{n}
xn作为方程的根的近似值:
x
n
=
a
n
+
b
n
2
,
x
n
∈
[
a
n
,
b
n
]
(2)
x_{n}=\frac{a_{n}+b_{n}}{2},\quad x_{n}\in [a_{n},b_{n}]\tag{2}
xn=2an+bn,xn∈[an,bn](2)
二分法误差和迭代次数
其误差估计式为:
∣
α
−
x
n
∣
≤
b
n
−
a
n
2
=
b
−
a
2
n
+
1
(3)
|\alpha-x_{n}|\le \frac{b_{n}-a_{n}}{2}=\frac{b-a}{2^{n+1}}\tag{3}
∣α−xn∣≤2bn−an=2n+1b−a(3)
当
n
→
∞
n\to \infty
n→∞时,
∣
α
−
x
n
∣
≤
b
−
a
2
n
+
1
→
0
|\alpha-x_{n}|\le \frac{b-a}{2^{n+1}}\to 0
∣α−xn∣≤2n+1b−a→0,即
x
n
→
α
x_{n}\to \alpha
xn→α
对给定的小数
ε
>
0
\varepsilon>0
ε>0,要使:
∣
α
−
x
n
∣
<
ε
|\alpha-x_{n}|<\varepsilon
∣α−xn∣<ε
只须令
b
−
a
2
n
+
1
<
ε
\frac{b-a}{2^{n+1}}<\varepsilon
2n+1b−a<ε
即
2
n
+
1
>
b
−
a
ε
2^{n+1}>\frac{b-a}{\varepsilon}
2n+1>εb−a
所以
n
=
⌊
[
(
l
n
(
b
−
a
)
−
l
n
ε
)
/
l
n
2
]
⌋
(4)
n=\lfloor{[(ln(b-a)-ln\varepsilon)/ln2]}\rfloor\tag{4}
n=⌊[(ln(b−a)−lnε)/ln2]⌋(4)
利用式(4)可以预先确定出二分的次数。
二分法优缺点
- 优点:计算简单,收敛性可保证,对函数的性质要求低,只要求连续就可以了。
- 缺点:计算收敛的速度慢,不能求偶数重根,也不能求复根和虚根。特别是函数值 f ( a k ) , f ( b k ) ( k = 0 , 1 , 2 , ⋯ ) f(a_{k}),f(b_{k})(k=0,1,2,\cdots) f(ak),f(bk)(k=0,1,2,⋯)每次均已计算出来,但没有利用上,只利用了它们的符号,是一种浪费。