バックナンバーはこちら。
https://www.simulationroom999.com/blog/stock-predict-matlabpython-backnumber/
はじめに
前回は、収支シミュレーション向けた作業として以下を実施。
- 終値から平均値を引いた値と算出したものをcsvにしていたが、終値をそのままcsv化。
- MATLAB、Pythonで終値を取り込んでから平均値を引く方式に変更。
今回は、IFFTから出力された波形の極大値、極小値の求め方について。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
極値の求め方
今回は、極大値と極小値の求め方か・・・。
以前もいったが、それほど難しい話では無い。
まぁそこを解説してもらおうか。
端的に言うと、微分して0になれば極値だ。
まぁ、なるほどとは思ったけど、
「極値が分かる」ってのは分かったけど、
これが極小値なのか極大値なのかがわからないような・・・。
極大値と極小値の求め方
極大値は、「微分値がプラス→0→マイナス」となるところ。
極小値は、「微分値がマイナス→0→プラス」となるところ。
???
絵で書くとこんな感じだよ。
ほう。
確かに言われてみるとそうだね。
微分して0でも極値じゃない場合も
ちなみに微分して0になったとしても極値ではないパターンもある。
そんなパターンあるの?
思いつかないけど?
こんなパターンだな。
確かにこれは極値とは言えないね。
ちなみにこのグラフの式は以下になるね。
\(y=x^3+x^2\)
↓微分して\(x=0\)時の傾きを算出
\(y\prime=3x^2+2x\)
\(y\prime=3(0)^2+2(0)=0\)
ちなみに、以下でもいいんだけど、「変曲点の傾き0」の見やすさ重視で上の式を使った。
\(y=x^3\)
↓微分して\(x=0\)時の傾きを算出
\(y\prime=3x^2\)
\(y\prime=3(0)^2=0\)
こんなシンプルな関数でも発生し得るのか・・・。
微分するには?
どっちにしても微分をする必要があると思うのだけど、
プログラム的にはどうするの?
引き算するだけだな。
引き算だけだと微分にならなくない?
たしか、dtの兼ね合いも考える必要があったような・・・。
今回欲しいのは厳密な微分値でも近似な微分値でも無くて、
微分した結果がプラスか、マイナスかだけなので、
引き算でOKなんだよ。
あ、そっか。
確かに接線傾きの正負を知りたいだけだから、それだけでいいのか。
さらに、微分じゃなくて差分であるが故に微分値0を捕まえることはほぼ不可能。
よって、
極大値を探す場合は差分の結果マイナス。
極小値を探す場合は差分の結果プラス。
の点を探すことになる。
確かに離散的なデータなわけだから理想的な微分ができるわけじゃないもんね。
というわけで、次回は今回の話を元に具体的なプログラムにするとどうなるか?
ってところだな。
(今回は珍しくわかりやすかった)
まとめ
まとめだよ。
- 微分して0になれば極値。
- 極大値は、「微分値がプラス→0→マイナス」となるところ。
- 極小値は、「微分値がマイナス→0→プラス」となるところ。
- 「微分して0」でも極値にならないパターンもある。
- 3次関数とかが代表的。
バックナンバーはこちら。
コメント