※なにか気になる点がありましたらコメント欄にご記入ください。
【目次】
1.はじめに
数値計算と呼ばれる分野で、与えられた数値から信号の微分値を求める方法に、3点微分というものがあります。簡潔に精度を上げて計算できるということで、ロボットの制御などで応用されているようです。
(唐突に話が始まる、など)
今回は数式を久しぶりに書いてみたいというのもある感じで進めていきます。
2.GPT氏に聞いてみた
ChatGPTに3点微分の公式を聞いてみたところ、
という式を提示してくれました。この式は以下の式
と似ていますが、実は計算の精度の点で違いがあります。まずはその点から見ていきます。
まずについてテイラー展開をすると、
となります。以上の項は以下ではと表すことにします。すなわち、
とします。(はを0に近づけていくと、この項がのオーダーで0に近づいていくことを意味します)
またはxの1階微分、はxの2階微分を意味しています。(3階微分も同じ)
も同様にテイラー展開して(1)式の分母に代入すると、
うまくの項が消えました。結果、
()
となります。
一方(2)式について見てみると、
したがって
となります。結果としてhの項が残ってしまい、収束の度合いとしてはとなることが分かります。
つまりChatGPTが示してくれた公式の方が誤差はなので、精度が高いと言えます。
3.リチャードソン外挿法
ここで一つ問題が現れます。
現時点で数値処理したいデータがそろっている場合なら問題はないのですが、ロボットなどようにリアルタイムで計算処理する場合、時刻において時刻における関数の値は観測できません。
だけ時間をずらしてもよさそうですが、それは2章の(2)式と同じになるので、精度はに落ちてしまいます。
そこで登場するのがリチャードソン外挿法です。リチャードソン外挿法とは、「異なる間隔 を用いた数値微分結果を組み合わせて、誤差を打ち消すことによって精度を向上させる手法」のことです。(ChatGPTより引用)
具体的に見ていきます。
といった具合に、時間幅との異なる値を用いて微分値の近似値を計算するという訳です。式の中のとの値はこれから決めていきます。
(めんどくさい方は下の方をご覧ください)
(3)式の分母をと置き、分子をまとめて見ていきます。
とをテイラー展開すると、
となります。
※ここで注意しておきますが、に関してですが(ここではの1乗)、これは収束の度合いを含んだ誤差を意味しており、同士で足し算や引き算をしたり、一定の値(ゼロ以外)を掛けたとしても、誤差の値は変わるかとは思いますが、誤差なので正確な値を示す必要はなく、収束の度合い(オーダー)は変わらないので、という表記は変わらないです。
上の式より、分母がであることも考え合わせて、
とすればよいことが分かります。これらを解いて、
が導かれます。これを(3)式に代入すると、
これにより、、、の値よりの微分値の近似値を求めることができました。
精度的には分母はのオーダーなので、になります。
4.実用例
図1に実際に筆者が倒立振子で実験したときのようすをグラフで示します。
上のグラフがタイヤの回転角のグラフです。横軸は時間(秒)で縦軸は回転角度(degree)です。下のグラフは上のグラフを時間で微分した様子です。
そして、青が2章の(2)式から求めたもので、茶色が3章の(3)式から求めたものです。
見てみると大きな違いは分からないです。ノイズものっているので、数式上は精度が高いと出ても、実際に運用する場面ではこんなもんです。(あれれ)
とは言え、(3)式を用いても実用上問題なく使用できることが分かるかと思います。
(各所で値が飛んでいるところがありますが、これはマイコンからPCに値を取り込むときの通信エラーのようです)