• ベストアンサー

楕円の近似

XY平面上の点が5点以上与えられたとき、それらの点を効率よく通る楕円の定数(中心座標X,Y、長径、短径、長径の水平方向からの傾き)5つを求める方法がわかりません。 直線では最小二乗法が有名ですが、その方法はわかっております。 楕円の場合、中心からの距離の自乗の誤差の和を最小にするように決めるのかなぁ、と思ってやってみましたが、単純な2次式になってくれないので、つまりました。 何か、ヒントでも教えてください。 よろしくお願いいたします。

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

  • ベストアンサー
  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.3

ANo.2のコメントについてです。  失礼。「以上」を見落としてました f~~)  6点以上が与えられたときには、楕円が全部の点を通るとは限りませんから、「何か」を最小化する、という尺度で最適化をしなくてはいけませんね。  何を最小化するか、あんまり厳密にはこだわらない、ということであれば、 残差r[j]を r[j] = A x[j]^2 +B y[j]^2 + C x[j]y[j] + D x[j] + E y[j] - 1 (j=1,2,…,n, n>5) として、 Σ(r[j])^2  (Σはj=1~nの総和) を最小化するのが一番簡単です。式の数が過剰な連立一次方程式、という格好ですから、そのまんま線形最小二乗法で扱えますので。  しかし、たとえば「 x[j]には誤差がなくて、y[j]の残差だけについて最小二乗法を適用したい」という場合には、方程式を y[j]=… という形に直して扱わねばならない。その他、最小化したいものが指定されている場合には、大抵、非線形最小二乗法の問題になっちゃいます。非線形だと反復計算で数値的に解く訳ですが、その場合、出発値(つまり最初の近似解)として上記の線形最小二乗法の解を使って、ガウス・ニュートン法を適用するのが簡単でしょう。

teamvb
質問者

お礼

何を最小化するかはこだわっておりません。 ということで、stomachmanさんの言われる式で残差にしようと思います。 私がやって見た方法では、おっしゃるとおり反復計算になってしまいました。 最初に残差をどう定義するかが結構重要なのですね。 ありがとうございました。

その他の回答 (2)

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.2

 最小二乗法は関係ありませんし、「効率よく通る」なんて話も出てきません。楕円の方程式は A x^2 +B y^2 + C x y + D x + E y = 1 であり、A~Eが決まれば、中心、長軸、短軸、傾きを出すのは容易です。そして、A~Eの5つのパラメータを決めようとする時に、点<x[j], y[j]>が丁度5個ある(j=1,2,…,5)んですから、過不足はない。単に5つの式から成る連立方程式ができます。 A x[j]^2 +B y[j]^2 + C x [j]y[j] + D x[j] + E y[j] = 1 (j=1,2,…,5)  求める変数はA~Eなのだから、これは5元連立一次方程式。簡単でしょ?  なお、もし点の個数が5個よりも多かったら、初めて、最小二乗法の出番になります。

teamvb
質問者

お礼

5点の場合の解法はよくわかりました。 ありがとうございました。

teamvb
質問者

補足

回答ありがとうございます。 5点よりも多かった場合が知りたいのです。

  • chiezo2005
  • ベストアンサー率41% (634/1537)
回答No.1

効率よく通るというのが何を意味するかが問題ですね。 たぶん,楕円上の点からのそれぞれ与えられた点までの距離の和が最小になるような楕円を意味するのではないのかと思います。 だとすれば解けるでしょう。

teamvb
質問者

お礼

私が変数分離で中心との距離の差で誤差を求めようとしたのが 無理があったのかもしれません。 ありがとうございました。

teamvb
質問者

補足

回答ありがとうございます。 おっしゃる意味です。 それが私には解けないのです。 Σei^2が簡単な式になってくれないのです。 いや、私の数学力が足りないだけかも。

関連するQ&A