0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

前置き

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
Screenshot 2024-07-11 at 13.32.00.png

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次方程式の頂点と解を求めてみてはいかがでしょうか。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?