【Python】 2次関数 x軸との2交点と任意の1点から2次関数を求めてグラフに図示

■2次関数

a > 0 の時、グラフは下に凸(とつ)

a < 0 の時、グラフは上に凸(とつ)

■x軸との2交点と任意の1点から2次関数を算出

x軸との2交点:
A(α, 0), B(β, 0)

任意の1点:
C(x, y)

の場合、aの値は・・・

■例題

x軸との2交点A(-1, 0), B(2, 0)と任意の1点C(3, -4)を通る2次関数を求め、グラフに図示

■サンプルコード

# -*- Coding: UTF-8 -*-
import numpy as np
from matplotlib import pyplot as plt

# x軸との2交点と任意の1点から2次関数を決定する関数
# y = a(x - α)(x - β) を使用
# 引数     : x軸との2交点A(x1, 0)、B(x2, 0)の[x1, x2]
#            任意の1点(x3, y3)
# 戻り値   :y = a(x - α)(x - β) の [a]
def DecisionQuadraticFunc(x1:int, x2:int, x3:int, y3:int) -> int:
    # aの値を算出
    a = y3 / ((x3 - x1) * (x3 - x2))

    return a

# グラフを作成する関数
def MakeGraph(a:int, x1:int, x2:int, x3:int, y3:int) -> None:

    ########## 2次関数をグラフに図示 ##########
    # 2次関数のxを便宜上、0.1間隔で -3 < x < 4 の範囲を指定
    xmin = -3
    xmax = 4
    xinterval = 0.1
    x = np.arange(xmin, xmax, xinterval)

    # yを算出
    y = a * (x - x1) * (x - x2)

    # グラフを作成
    plt.plot(x,y)
    ########################################

    ########## グラフにx軸,y軸から点Cまでを点線で図示 ##########
    # 補助線を点線で作成 [hlines:水平 vlines:垂直]
    plt.hlines([y3], 0, x3, "gray", linestyles='dashed')
    plt.vlines([x3], 0, y3, "gray", linestyles='dashed')
    #######################################################

    ########## グラフにx軸,y軸(0)を図示 ##########
    # 補助線(0)を作成 [axhline:水平 axvline:垂直]
    plt.axhline(y = 0, color = "gray")
    plt.axvline(x = 0, color = "gray")
    ############################################

    # グラフを表示
    plt.show()


# メイン処理
if __name__ == '__main__':
    # A(-1, 0), B(2, 0), C(3, -4)
    x1 = -1
    x2 = 2
    x3 = 3
    y3 = -4


    # x軸との2交点と任意の1点から二次関数を求める
    a = DecisionQuadraticFunc(x1, x2, x3, y3)


    print('二次関数:y = ' + str(a) + '( x - ( ' + str(x1) + ' ))( x - ( ' + str(x2) + ' ))')

    # グラフの作成
    MakeGraph(a, x1, x2, x3, y3)

■実行結果

二次関数:y = -1.0( x - ( -1 ))( x - ( 2 ))

タイトルとURLをコピーしました