頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


定点での傾きが決まってる場合のn次曲線近似を最小二乗法で求める(1)

最小二乗法でn次の近似曲線を描くというのはよくやる(頭と尻尾はくれてやる! / n次の近似曲線を求める(1))んだけど、いくら次数を高くしてもさほどキレイな曲線にならないことがあるんだよね。
それじゃあってんで一つの曲線じゃなくて真ん中あたりで半分にわけて二つの近似曲線で描いたらいいんじゃない?って思ったので試してみたんだ。

img1

↑こんなイメージ。分離する左側と右側は別なn次関数(左右とも次数は同じ)。
つなぎ目のところで不自然にならないようにその部分での傾きは同じってことにする。
ここでつなぎ目となる点(xc,yc)とその傾きαcは既にわかっている定数として最小二乗法を考えてみるよ。

二つの近似曲線、、、というとややこしくなるんだけどxc,yc,αcが定数とすると単にある一点を通りそこでの傾きが決まっている場合の最小二乗法って話になるので、二つ同時に考える必要はなくなるんだよね。

式

↑n次関数ってのはこういうのね。

式

↑一階微分がこうなるから、傾きαcは↓のようになる。

式

あと、先のn次関数は(xc,yc)を通るから

式

というのも成り立つよね(いつもながら数式を楽にキレイに書けたらいいのになあ)。

最小二乗法ってのは近似曲線とすでにある点との差分の二乗の総和を小さくするってことだから

式

↑こういう感じになるよね。これをSと定義しておくよ。最小二乗法はこのSに対して各係数pで偏微分した値がゼロになるところから係数を求めるんだよね。

これで必要な素材はそろった、あとは料理するだけみたいなもんだよ。

(1)式と(2)式からp0とp1はそれぞれ他の係数などで表すことができるよね?

式

それぞれ(1)'と(2)'にして、これらをさっきのSに代入して整理してみる。

式

↑各係数p2,p3,…,pnを含む部分をt、その他をuにしてやって最後はえらくスッキリしたね。
これを各係数p2,p3,…,pnで偏微分してやるとどうなるか?
例えばp2で偏微分してみると、、、

式

↑こういう形になる。こういう式がp2だけじゃなくてp3にもp4にも、、、pnにも作れるってことだよね。


ここで残っている偏微分の部分をよーく見ると任意のm (2<= m <= n)に対して

式

とすることができる。
すると先ほどのtはこのTmを使って、、、

式

ってことになる。すると(3)式の左辺は下のように書くことができる。

式

↑これを行列の形にして右辺も考慮すると、、、

式

↑こうなるよね。
これは元々p2で偏微分した場合だったけど、同じようにp3,p4,…,pnで偏微分した結果をまとめると

式

↑ほれ、どこかで見たことあるでしょ?普通の最小二乗法の時にもこういう行列でまとめてたよね。
この形にすれば後はガウスジョルダン法(だっけ?)を使って解くだけでp2,p3,…,pnが求まる。さらに(1)'と(2)'から残りのp0,p1も求まるので欲しいn次式の関数が決まるよ。

長くなったので今回はここまで、ふー。




<< クラスの説明図などもXcodeで管理する  TopPage  id型のオブジェクトのプロパティへアクセスできない? >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/792-d3f8b090




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad