はじめに
科学計算をしたいときに関数の極値をあたえるようなxを求めたいときがでてくると思いますが、ちょうどよい一行を見つけたので紹介させていただきます。
とりあえず準備から
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,10,10001)
y = np.exp(-x/10) * np.sin(x)
plt.plot(x,y)
とりあえずこんな感じで関数を用意します。
y = e^{\frac{-x}{10}} \sin(x)
今回は試しにこの関数を微分してみましょう。
dydx = np.gradient(y,x)
結論
ここで微分を簡単に取得できるわけですが、これから極値のx座標を求めるとなると大変です。
そこで以下のコードを通します。
x[1:][dydx[1:] * dydx[:-1] < 0]
このコードは、ある一点の前後の微分値の積の符号がマイナスになったときのx座標を返すというものです。こう言う風にしてみると、いろんな関数の極値のx座標が一発で求まります。是非皆さんもやってみてくださいね。
それでは。