勉強しているとよく出会うやつ
g2oなどの最適化ソルバーを使って仕事したりしてました
面白いなぁーと思ってから,最適化を日々勉強しています
やっていると,
- 参考書「ここでテイラー展開すると...」
- (ふむふむ)
- 参考書「ここでテイラー展開すると...」
- (ふむふむ...(汗))
- 参考書「ここでテイラー展開すると...」
- (参りました)
あれやろ?と思ってスルーしているとその後の説明についていけないことがざらにあります
そんな自分を〜⤴ぶっ壊す👊,と思った次第です
数式
x0における関数f(x)のテイラー展開
2次まで
f(x + x0) = f(x0) + \frac{1}{1!} \, f'(x0) \, (x - x0) + \frac{1}{2!} \, f''(x0) \, (x - x0)^2 + \cdots
ソフト屋さんなら
ノートに書いたりするだけでなく実装して理解していこう!
自分の勉強の歴史をみてニヤニヤしたりできるから復習効果バツグンなはず!
考えた仕様
-
変更を楽にしよう
- 関数の種類
- そのパラメータ
-
クリックしたxの値においてテイラー展開しよう
様子
見栄え良くするために等間隔でx0を変えた様子を表示してます
2次近似まで計算しています
1次関数
y = 5x + 2
見にくいですが,オリジナルの軌跡,1次,2次近似した軌跡全て重なっています
テイラー展開する必要ないですね
2次関数
y = -3x^2 - 2x + 5
これもに見くいですがオリジナルの軌跡と2次近似した軌跡が重なっています
2次関数であるとわかっている場合は2次近似するモチベーションはないですね
もちろん,1次式でx0近傍の線形的な振る舞いを近似できることは有用です
3次関数
y = x^3 + x^2 + x + 1
ここから可視化し甲斐がでてきました
x0付近で傾きの変化が大きい場合は,1次と比べて2次の方が粘り強いのかな...?
(x0から少し離れたとき,2次式の方がオリジナルの軌跡に近いと思った)
ミカエリス・メンテン式
y = \frac{b_1x}{b_2 + x}
ガウス・ニュートン法の例で使われている式です
後半ほぼ変化なしです
この活動をしてよかったこと
- いろいろな関数の近似した様子を肌で感じることができました
- 好きなところで近似できるようにしたので,気になるところで近似して考える時間を作ることができました
- 傾きの変化が激しい部分はより高次の近似ができるとよいと思いました
- x0から離れるほどオリジナルとの差も大きくなります
- 分子・分母に変数が含まれているときの微分の式をかなりひさしぶりに計算できました
- ミカエリスメンテン式のことですね
ソース置き場と使い方
githubに使い方含めて置いています
https://github.com/fugashy/fgs_opt/tree/master/fgs_opt_from_scratch
2019年8月5日現在,無駄にROS2依存です
高機能な3D可視化ソフトでax + by + cz +d = 0のような関数の可視化もしたいという野望があるのでそうしてます
ROS2非依存で実行できるようにはしたいなぁと思っています