【Python】三角関数を微分しグラフに図示する

■三角関数の微分

三角関数の微分公式を以下に示す。

① y = sinx

② y = cosx

③ y = tanx

■pythonで三角関数を微分する

pythonで三角関数を微分する場合は、sympyライブラリの以下のメソッドを使用する。

メソッド概要
Symbol(‘x’)文字列(x)を使用する
diff(計算式)微分の計算をする
sin(x)sin(x)を計算する
cos(x)cos(x)を計算する
tan(x)tan(x)を計算する

▼sympyの使い方

・サンプルコード

import sympy

# 文字列をセット
x = sympy.Symbol('x')

# sin(x)を微分
print(sympy.diff(sympy.sin(x)))

# cos(x)を微分
print(sympy.diff(sympy.cos(x)))

# tan(x)を微分
print(sympy.diff(sympy.tan(x)))

・実行結果

cos(x)
-sin(x)
tan(x)**2 + 1

■例題

(1)関数 f(x) = sinx + cosx を微分する。

(2)関数 f(x) = sinx + cosx および(1)の微分した関数(f`(x))をグラフに図示する。

▼(1)関数 f(x) = sinx + cosx を微分

・サンプルコード

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


# 関数f(x) = sinx + cosx
def f(x):
    return sympy.sin(x) + sympy.cos(x)


# 文字列をセット
x = sympy.Symbol('x')

print(sympy.diff(f(x)))

・実行結果

-sin(x) + cos(x)

▼(2)関数 f(x) = sinx + cosx および(1)の結果をグラフに図示

(1)より、関数 f(x) = sinx + cosxの微分した結果は、f`(x) = cosx – sinxである。

・サンプルコード

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

# 関数f(x) = sinx + cosx
def f_1(x):
    return sympy.sin(x) + sympy.cos(x)

# 関数f`(x) = cosx - sinx
def f_1_d(x):
    return sympy.cos(x) - sympy.sin(x)


def MakeGraph():
    # 便宜上、-5から5までの値を0.1間隔で設定
    x_min = -5
    x_max = 5
    x_interval = 0.1
    x = np.arange(x_min, x_max, x_interval)
    # 関数f(x)を格納する配列
    y_1 = []
    # 導関数f'(x)を格納する配列
    y_1_d = []
    # それぞれ配列に格納していく(便宜上、nは0.1間隔でセット)
    for i in range(len(x)):
        y_1.append(f_1(x[i]))
        y_1_d.append(f_1_d(x[i]))
    # 関数f(x)のグラフを作成
    plt.plot(x, y_1, color='blue', label="f(x)")
    # 導関数f'(x)のグラフを作成
    plt.plot(x, y_1_d, color='orange', label="f`(x)")
    # グラフにx軸,y軸(0)を図示
    # 補助線(0)を作成 [axhline:水平 axvline:垂直]
    plt.axhline(y=0, color="gray")
    plt.axvline(x=0, color="gray")

    # ラベルの表示
    plt.legend(bbox_to_anchor=(1, 1), loc='upper left',
               borderaxespad=0, fontsize=8)
    # グラフを表示
    plt.show()


# グラフを作成
MakeGraph()

・実行結果

コメント