Webで学ぶセンター試験数学−BASICプログラミング > 二分法

二分法

中間値の定理

 関数f(x)が区間[a, b]で連続であるとき、f(a)f(b)が異符号ならば、 方程式f(x)=0abの間に少なくとも1つ解を持つ。

    

[補足]

 f(a)f(b)が異符号⇔f(a)f(b)<0

 中間値の定理を利用することで、直接解を求めることが困難な方程式の解の近似値(おおよその値)がわかります。

[例] 中間値の定理を利用してx^3-3*x^2+3*x+5の近似解を求める。

   y=f(x)のグラフ

   y=x^3-3*x^2+3*x+5のグラフ

f(x)=x^3-3*x^2+3*x+5とおくと、

f'(x)=3*x^2-6*x+3
   =3*(x-1)^2≧0

よって、f(x)は単調に増加するので、実数解は1つしかありません。

ここで、

   f(-1)=-2<0 f(0)=5>0

なので、中間値の定理より、解は-1と0の間にあることがわかります。

 次に、この区間を[-1, -1/2][-1/2, 0]の半分に分けて、f(-1)f(-1/2)f(-1/2)f(0)の符号を調べることでさらに解の範囲を狭めることができます。

(i) 区間[-1, -1/2]

   f(-1)=-2<0 f(-1/2)>0

なので、中間値の定理より、解は−1と-1/2の間にあることがわかります。

(ii) 区間[-1/2, 0]

   f(-1/2)>0 f(0)=5>0

なので、中間値の定理より、解は-1/2と0の間にはありません。

   (i) 区間[-1, -1/2]                 (ii) 区間[-1/2, 0]

    

 これにより、解は区間[-1, -1/2]にあることがわかったので、もう一度この区間を[-1, -3/4][-3/4, -1/2]の半分に分けて、f(-1)f(-3/4)f(-3/4)f(-1/2)の符号を調べることでさらに解の範囲を狭めることができます。

(i)' 区間[-1, -3/4]

   f(-1)=-2<0 f(-3/4)>0

なので、中間値の定理より、解は−1と-3/4の間にあることがわかります。

(ii)' 区間[-1/2, 0]

   f(-1/2)>0 f(0)=5>0

なので、中間値の定理より、解は-3/4-1/2の間にはありません。

 (i)', (ii)'から、解が存在する区間を[-1, -3/4]に絞ることができました。次は[-1, -7/8][-7/8, -3/4]の半分に分けて調べます。

 この手順を繰り返すことにより、x^3-3*x^2+3*x+5の近似解を求めることができます。この方法は二分法と呼ばれています。

二分法

 方程式f(x)=0f(a)f(b)<0で、区間(a, b)にただ1つの実数解 をもつ場合を考える。

手順1. a, bの中点m=(a+b)/2をとる。

手順2.

(i) f(a)f(m)が異符号、すなわち、f(a)f(m)<0のとき

   a<x0<m

となるので、mを新しいbとする。(右端をmとして区間を半分にする)

   

(ii) f(a)f(m)が同符号、すなわち、f(a)f(m)>0のとき

   a<x0<m

となるので、mを新しいaとする。(左端をmとして区間を半分にする)

   

手順3. これを繰り返す。

[プログラム] 二分法により、方程式x^3-3*x^2+3*x+5の近似解を求める。

    100  INPUT PROMPT "n="; N
    110  LET A=-1
    120  LET B=0
    130  FOR I=1 TO N
    140      LET M=_______
    150      PRINT "a=";A;"m=";M;"b=";B
    160      LET FA=A^3-3*A^2+3*A+5
    170      LET FM=M^3-3*M^2+3*M+5
    180      LET FB=B^3-3*B^2+3*B+5
    190      PRINT "f(a)=";FA;"f(m)=";FM;"f(b)=";FB
    200      IF FA*FM<0 THEN LET ___ ELSE LET ___
    210  NEXT I
    220  PRINT "approximate x=";M
    230  END

[実行例]

・n=2のとき

  n=2
  a=-1 m=-.5 b= 0 
  f(a)=-2 f(m)= 2.625 f(b)= 5 
  a=-1 m=-.75 b=-.5 
  f(a)=-2 f(m)= .640625 f(b)= 2.625 
  approxiate x=-.75

・n=10のとき

  (途中省略)
  a=-.818359375 m=-.8173828125 b=-.81640625
  f(a)=-1.22794732451439E-2 f(m)=-2.59786564856767E-3 f(b)= 7.07334280014038E-3
  approximate x=-.8173828125

・n=100

  (途中省略)
  a=-.81712059283214 m=-.81712059283214 b=-.817120592832139 
  f(a)=-3.37E-15 f(m)=-3.37E-15 f(b)= 6.533E-15 
  approximate x=-.81712059283214

<< 前のページトップページ次のページ >>
inserted by FC2 system