【Python】多項式の微分計算

■多項式の微分計算

机上で多項式の微分計算を行う場合、以下の計算方法使用する。

▼微分計算
y = xnを微分すると、y’ = nxn-1
y = c (cは定数)を微分するとy’ = 0

▼例題
(1)関数 y = 2x3 – x2 + 4x – 7 を微分する。

y’ = 2・3x3-1 – 2・x2-1 + 4・1x1-1 – 0
y’ = 6x2 – 2x1 + 4x0
y’ = 6x2 – 2x1 + 4

(2)関数 y = (-3/2)x4 + x3 – x2 + x – (7/5) を微分する。

y’ = (-3/2)・4x4-1 + 3・x3-1 – 2・x2-1 + 1・x1-1– 0
y’ = -6x3 + 3x2 – 2x + 1

■pythonで微分を行う

pythonで微分を行う場合、sympy.limit()を使用する。
なお、sympy.limit()の使い方は以下を参照してください。

■例題

(1)関数 y = 2x3 – x2 + 4x – 7 を微分する

(2)関数 y = (-3/2)x4 + x3 – x2+ x – (7/5) を微分する

■サンプルコード

# -*- Coding:UTF-8 -*-
import sympy

# 関数:f(x) = 2x**3 - x**2 + 4x - 7
def f_1(x):
    y_1 = (2 * x**3) - (x**2) + (4 * x) - 7

    return y_1


# 関数:f(x) = -3/2x**4 + x**3 - x**2 + x - 7/5
def f_2(x):
    y_2 = (-3/2) * x**4 + (x**3) - (x**2) + x - (7/5)

    return y_2


if __name__ == '__main__':
    # 文字列をセット
    h = sympy.Symbol('h')
    x = sympy.Symbol('x')

    # 導関数を求める
    result_1 = sympy.limit((f_1(x+h)-f_1(x))/h, h, 0)
    result_2 = sympy.limit((f_2(x+h)-f_2(x))/h, h, 0)

    # 計算結果を表示
    print('問題1:', result_1)
    print('問題2:', result_2)

■実行結果

問題1: 6*x**2 - 2*x + 4
問題2: -6.0*x**3 + 3.0*x**2 - 2.0*x + 1.0
タイトルとURLをコピーしました