2次方程式の解を求める
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