• ベストアンサー

フィッティング方法?

ある(x,y)の集合を、次式のような関数にフィッティングしたい場合、係数a~fを算出する方法、アルゴリズムを教えてください。 z(x,y) = a + bx + cy + dxy + ex^2 + fy^2

質問者が選んだベストアンサー

  • ベストアンサー
  • First_Noel
  • ベストアンサー率31% (508/1597)
回答No.3

いまちょっと検索してみましたが,見付かりませんでした. (あまりトライしてませんが・・・) 1,2と3の行列AとベクトルBを求めるところまでは, 手計算で式をぐりぐりします. 簡単な例として, 回帰曲線y(x)=a+bx+cx^2 計測点(xi,yi) の場合,手順1で, R=Σ(y(xi) - yi(xi))^2  =Σ(a+bxi+cxi^2 - yi)^2 これを手順2で, ∂R/∂a= 2Σ(a+bxi+cxi^2 - yi)=0 ∂R/∂b= 2Σ(xi×(a+bxi+cxi^2 - yi))=0 ∂R/∂c= 2Σ(xi^2×(a+bxi+cxi^2 - yi))=0 と言うふうにします.これを展開して,係数a,b,c毎に分け, a,b,cの係数のかかっていない項を右辺にもってけば, 連立方程式が完成します. ここまではまず手で式を書いて,それをプログラムに反映させます. 3の連立方程式を解くものは,一番簡単なガウスの消去法とか, ガウスジョルダン法とか,LU分解法とかあります, この辺は数値計算の基本なので, 大概の本に載っていますし,ネット上にもあるような気がします. こんなものですみません.

tomoremo
質問者

お礼

どうもありがとうございます。 とりあえず、これを参考に考えて見ます。

その他の回答 (2)

回答No.2

(x,y)の集合は大域的に2次曲線になるとわかっているのでしょうか? 局所的でいいなら、ある点列の軌跡((x,y)の集合に順序が入っている)と思って ベジュ曲線が使えますが。

  • First_Noel
  • ベストアンサー率31% (508/1597)
回答No.1

最小二乗法で良いですか? 1.残差を求める.   R=Σ(zi(xi,yi)-z(xi,yi))^2 2.残差を係数で偏微分したものが0,として,   係数に関する連立方程式を作る.   例えば,∂R/∂a=0,∂R/∂b=0,・・・ 3.上を行列で書くと,   A(xi,yi) K(a,b,c,d,e,f) = b(xi,yi,zi)   となるので,行列Aの逆行列を両辺に左からかけると   係数ベクトルKが求まる.

tomoremo
質問者

補足

どうもありがとうございます。 上記手順をCプログラムで記述したようなwebページ等はありますでしょうか? あれば教えていただけますでしょうか?

関連するQ&A