前置き
2次方程式とは、$x$の次数が2次、つまり$x$の2乗が出てくる方程式のことである。
基本形は、$ax^2 + bx+ c = 0$である。
今日は、Pythonを使って2次方程式の頂点を求め、方程式を解いてみました。
2次方程式の頂点を求めるプログラムコード
def find_vertex(a, b, c):
# x座標の頂点を計算する
vertex_x = -b / (2 * a)
# y座標の頂点を計算する
vertex_y = a * vertex_x**2 + b * vertex_x + c
return vertex_x, vertex_y
# 2次方程式の係数を入力として受け取る
a = float(input("2次の係数(a)を入力してください: "))
b = float(input("1次の係数(b)を入力してください: "))
c = float(input("定数項(c)を入力してください: "))
# 頂点の座標を計算する
vertex_x, vertex_y = find_vertex(a, b, c)
# 結果を出力する
print(f"2次方程式 {a}x^2 + {b}x + {c} の頂点は ({vertex_x}, {vertex_y}) です。")
プログラムコードの説明
ここでは、$a$を2次の係数、$b$を1次の係数、$c$を定数項として定義している。
頂点は、英語でvertexであり、2次関数のグラフと軸の交点である。
出力結果
2次の係数(a)を入力してください: 2
1次の係数(b)を入力してください: 5
定数項(c)を入力してください: 6
2次方程式 2.0x^2 + 5.0x + 6.0 の頂点は (-1.25, 2.875) です。
2次の係数(a)を入力してください: 3
1次の係数(b)を入力してください: 4
定数項(c)を入力してください: 6
2次方程式 3.0x^2 + 4.0x + 6.0 の頂点は (-0.6666666666666666, 4.666666666666667) です。
2次の係数(a)を入力してください: 5
1次の係数(b)を入力してください: 6
定数項(c)を入力してください: 8
2次方程式 5.0x^2 + 6.0x + 8.0 の頂点は (-0.6, 6.2) です。
平方完成とは
$y = $$ax^2 + bx + c$ を、$y=(x+p)^2 + q$という形に変えるというのが平方完成です。
引用元:https://www.try-it.jp/chapters-5954/sections-5955/lessons-6004/
出力結果の検証(まずは平方完成を用いて検証)
1つ目:$2x^2+5x+6$
この場合、$a= 2, b = 5, c = 6$ になる。
頂点を求めるには、$2(x+5/4)^2 + 23/8 = 0$
$x = -5/4$, $y = 23/8$となり、頂点は、($-1.25, 2.875$)になる。
2つ目:$3x^2+4x+6$
この場合、$a= 3, b = 4, c = 6$ になる。
頂点を求めるには、 $3(x+4/6)^2 + 56/12 = 0$
$x = -4/6$, $y = 56/12$となり、頂点は($-0.6666...$, $4.66666...$)になる。
(注意)この場合、頂点は($-2/3$, $14/3$)が正解ではあるが、循環小数になっている。
3つ目:$5x^2+6x+8$
この場合、$a= 5, b = 6, c = 8$ になる。
頂点を求めるには、$5(x+6/10)^2 + 124/20 = 0$
$x = -6/10, y = 124/20$となり、頂点は(-$0.6, 6.2$)になる。
しかし、平方完成を用いて、頂点を求めると計算ミスを起こしやすい。
そこで、頂点を求める公式を使って3つの方程式を解いてみた。
2次方程式の頂点を求める公式
引用元:https://juken-mikata.net/how-to/mathematics/quadratic-function-vertex.html
1つ目の式:$2x^2 + 5x + 6$
公式に当てはめると、
$-5$/($2$ x $2$ ), - ($5^2$ - $4$ x $2$ x $6$)/($4$ x $2$)
= $-5/4 , -(25 - 48)/ 8$
= $-5/4 , 23/8$
よって、頂点が($-1.25, 2.875$)になり、答えが一致する。
2つ目の式: $3x^2+4x+6$
公式に当てはめると、
$-4$ / ($2$ x $3$) , -($4^2$- $4$ x $3$ x $6$) / ($4$ x $3$)
= $-4 / 6 , -(16-72) / 12$
= $-2/3 , 56/12$
よって、頂点が($-2/3, 14/3$)になり、答えが一致する。
3つ目の式: $5x^2+6x+8$
公式に当てはめると、
$-6$ / $2$ x $5$ , -($6^2$ - $4$ x $5$ x $8$) / ($4$ x $5$)
= $-6/10$ , $-(36-160) / 20$
= $-3/5$ , $124/20$
よって、頂点が($0.6, 6.2$)になり、答えが一致する。
これで頂点を求めることができましたが、次は実際に2次方程式を解いてみましょう。
2次方程式を解くプログラムコード
import math
def solve_quadratic_equation(a, b, c):
# 判別式を計算する
discriminant = b**2 - 4 * a * c
# 判別式が負の場合、実数解が存在しない
if discriminant < 0:
return None
# 解の公式を用いて解を計算する
sqrt_discriminant = math.sqrt(discriminant)
x1 = (-b + sqrt_discriminant) / (2 * a)
x2 = (-b - sqrt_discriminant) / (2 * a)
return x1, x2
# 2次方程式の係数を入力として受け取る
a = float(input("2次の係数(a)を入力してください: "))
b = float(input("1次の係数(b)を入力してください: "))
c = float(input("定数項(c)を入力してください: "))
# 2次方程式の解を計算する
solutions = solve_quadratic_equation(a, b, c)
# 解が存在する場合、それを出力する
if solutions:
x1, x2 = solutions
print(f"2次方程式 {a}x^2 + {b}x + {c} の解は x1 = {x1}, x2 = {x2} です。")
else:
print("この2次方程式には実数解が存在しません。")
プログラムコードの説明
このプログラムコードにおいては、$ax^2 + bx+ c$ という2次方程式の判別式である、
$b^2 - 4ac$ を用いて実数解があるのかないのかを判別している。
$b^2 - 4ac$ の結果がマイナスの場合は、実数解($x$の解)は存在しない。
$b^2 - 4ac$ の結果が0の場合は、実数解($x$の解)は$1$つになる。
$b^2 - 4ac$ の結果がプラスの数の場合は、実数解($x$の解)は$2$つある。
出力結果
ここでは、実数解が存在しない方程式、$1$つ存在する方程式、$2$つ存在する方程式を$1$つずつ出力し、その後結果の検証を行う。
2次の係数(a)を入力してください: 3
1次の係数(b)を入力してください: 7
定数項(c)を入力してください: 8
この2次方程式には実数解が存在しません。
2次の係数(a)を入力してください: 4
1次の係数(b)を入力してください: 12
定数項(c)を入力してください: 9
2次方程式 4.0x^2 + 12.0x + 9.0 の解は x1 = -1.5, x2 = -1.5 です。
2次の係数(a)を入力してください: 4
1次の係数(b)を入力してください: 7
定数項(c)を入力してください: 3
2次方程式 4.0x^2 + 7.0x + 3.0 の解は x1 = -0.75, x2 = -1.0 です。
公式を用いた出力結果の検証
$1$つ目の方程式: $3x^2 + 7x + 8$
$a = 3 , b = 7 , c = 8$
判別式 $b^2 - 4ac$を使って、代入
$7^2$ - $4$ x $3$ x $8$ = $49 - 96 = -47$
判別式の結果がマイナスの数のため、$実数解は存在しない。$
よって、出力結果と公式を用いた検証結果が一致した。
$2$つ目の方程式: $4x^2 + 12x + 9$
$a = 4 , b = 12, c = 9$
判別式 $b^2 - 4ac$を使って、代入
$12^2$ - $4$ x $4$ x $9$ = $144 - 144 = 0$
判別式の結果が$0$のため、実数解は$1$つしか存在しない。
この場合、$(2x+3)^2$になり、解は$x = -1.5$になる。
よって、出力結果と公式を用いた検証結果が一致した。
$3$つ目の方程式: $4x^2 + 7x + 3$
$a = 4 , b = 7, c = 3$
判別式 $b^2 - 4ac$を使って、代入
$7^2$ - $4$ x $4$ x $3$ = $1$
判別式の結果が$1$のため、実数解は$2$つ存在する。
この場合、$(x+1)(4x+3)$ になり、解は$x = -1, -3/4$になる。
よって、出力結果と公式を用いた検証結果が一致した。
終わりに
2次方程式は、日常生活においていろんな方法で使われている。
例えば、ボールを地面に落としたら、重力で跳ね返る。
この跳ね返りをグラフにできたりする。
皆さんも、このプログラムコードを参考にして、時間のある時に、2次方程式の頂点と解を求めてみてはいかがでしょうか。