2次方程式の解を求める

 

1.二次方程式の数値解

目次へ

  2次方程式
   ・・・・・・・・・・・・・・・・ (1.1)


が与えられている.この方程式の解を求める場合,判別式の符号を調べて以下の場合分

けで解がどのように得られるかは良く知られている.この問題を整理してみる.

  判別式:

       ・・・・・・・・・・・・・・ (1.2)

a) のとき,

      ・・・・・・・・・・・・・・ (1.3)

b) のとき,

      ・・・・・・・・・・・・・・・・ (1.4)

c) のとき,

     ・・・・・・・・・・ (1.5)

ただし,.

もちろん,a や b が 0 である場合も考えられられるので,

d) a = 0 のとき,

       ・・・・・・・・・・・・・・・・ (1.6)

e) a = 0 , b = 0 のとき,

   解は存在しない.

 上記の幾つかの場合に応じて解を求めるプログラムを作成するために、処理の流れ図を

描くと図1.1のようになる。

              図1.1

 このフローチャートに従ってプログラムを記述すると、以下のようになる。 

コード 


Private Sub CommandButton1_Click()
'
'    2次方程式
'

      With Worksheets("Sheet1")
      A = .Cells(5, 1)
      B = .Cells(5, 2)
      C = .Cells(5, 3)
      End With

      If A = 0# Then GoTo LINEAR
      BB = B / A
      CC = C / A
      D = BB * BB - 4 * CC
      
      If D < 0# Then GoTo COMPLEX
      If D = 0# Then GoTo DUP

REAL:

      D = Sqr(D)
      X1 = -BB + D
      X1 = X1 * 0.5
      X2 = -BB - D
      X2 = X2 * 0.5
      
      With Worksheets("Sheet1")
      .Cells(11, 2) = "x1 = " & X1
      .Cells(12, 2) = "x2 = " & X2
      End With
      
      GoTo ENDJOB
DUP:

      X = -BB * 0.5
      
      With Worksheets("Sheet1")
      .Cells(11, 2) = "x = " & X
      .Cells(12, 2) = ""
      End With
      
      GoTo ENDJOB
      
COMPLEX:

      D = -D
      D = Sqr(D)
      BB = -BB * 0.5
      D1 = D * 0.5
      
      With Worksheets("Sheet1")
      .Cells(11, 2) = "x1 = " & BB & " + " & D1 & " i"
      .Cells(12, 2) = "x2 = " & BB & " - " & D1 & " i"
      End With
            
      GoTo ENDJOB

LINEAR:

   If B <> 0# Then GoTo OUTLIN
   
      With Worksheets("Sheet1")
      .Cells(11, 2) = "解は存在しない。"
      .Cells(12, 2) = ""
      End With
      
      GoTo ENDJOB

OUTLIN:

      X = -C / B
      With Worksheets("sheet1")
      .Cells(11, 2) = "x = " & X
      .Cells(12, 2) = ""
      End With
      
ENDJOB:
End Sub
	

 

サンプル