• ベストアンサー

6点からの楕円の近似計算(最小二乗法、xyz次元)

みなさん、こんにちわ。 楕円についてプログラムしないといけなく、わからない点が多いので質問させてください。 ある6点(座標はxyz)からxyz楕円の最小二乗法をプログラムすることは可能でしょうか?この掲示板の「楕円のプログラム」を参考にするとある5点以上の測定点からxy座標(2次元)のグラフにすることは可能であると書いてあり、納得しました。 分からない点はxyzの楕円の基本方程式です。 なお、使用する環境はc言語です。参考になるサイトなどありましたら教えてください。

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

  • ベストアンサー
  • noocyte
  • ベストアンサー率58% (171/291)
回答No.2

ちょっと訂正&補足です. > 合計8自由度ですから,8点以上ないと決定できないと思います (いまいち自信不足). 直観的に考えてみると,5点以上あれば決定できるはずですね.m(_ _)m ただし,この5点は同一平面上にないといけませんが. そのことが自由度にどう影響しているのか, また「3次元空間内の平面図形」ということがどう影響しているのか, 別途考え直してみます. 自由度 (Wikipedia) http://ja.wikipedia.org/wiki/%E8%87%AA%E7%94%B1%E5%BA%A6 3次元空間内の楕円に直接最小自乗法を適用すると,計算がとても大変そうなので, 次のようにした方がよいかもしれません. (1) 与えられた点から,楕円が存在する平面を最小自乗法で決定する. (2) 与えられた点の座標を上記の平面の座標に変換する. (3) 平面座標から最小自乗法で楕円を決定する.

その他の回答 (1)

  • noocyte
  • ベストアンサー率58% (171/291)
回答No.1

xyzということは3次元ですか? それじゃ楕円ではなくて楕円体ですね. それとも3次元空間内での楕円ということでしょうか? 多分後者だと思いますので,その前提で書きます. > この掲示板の「楕円のプログラム」を参考にするとある5点以上の測定点から > xy座標(2次元)のグラフにすることは可能であると書いてあり、納得しました。 2次元では,楕円の自由度は次のようになります. 中心座標:2 長軸の長さ:1 短軸の長さ:1 長軸の方向 (X軸に対する角度):1 合計5自由度ですから,5点以上あれば楕円を決定することができます. 3次元での楕円の自由度は次のようになります. 中心座標:3 長軸の長さ:1 短軸の長さ:1 長軸の方向:2 長軸まわりの回転角:1 (あるいは最後の2つをまとめて,3次元での回転=3自由度としてもよい) 合計8自由度ですから,8点以上ないと決定できないと思います (いまいち自信不足). > 分からない点はxyzの楕円の基本方程式です。 普通の楕円の方程式は探せばいくらでもあると思いますが, 3次元内での楕円の方程式はちょっとなさそうですね. まず,楕円を含む平面をUV平面とし,それに垂直なW軸を考えます. 楕円の中心をUV平面の原点,長軸,短軸方向をU軸,V軸方向とし, それぞれの長さを 2 * a,2 * b とすると, (u/a)^2 + (v/b)^2 = 1. w = 0. UVW系とXYZ系の原点が一致している (つまり楕円の原点のXYZ座標が (0, 0, 0)) の場合には,XYZ座標をUVW座標に変換する回転行列をRとすると, U = R X (ただし U=(u, v, w),X=(x, y, z)). 楕円の原点が X0=(x0, y0, z0) にある場合は, U = R (X - X0). Rは3×3の行列だが,これを2×3の行列Ruv (XYZをUVに変換する) と, 1×3の行列Rw (XYZをWに変換する) に分けて, R = ( Ruv Rw ) とすると, (u, v) = Ruv (X - X0), w = Rw (X - X0). また A = ( 1/(a^2), 0 0, 1/(b^2) ) とすると,楕円の方程式は t(u, v) A (u, v) = 1.(t は転置) これに (u, v) = Ruv (X - X0) を代入して t(X - X0) tRuv A Ruv (X - X0) = 1 … (1) w = Rw (X - X0) = 0 … (2) (1),(2) が楕円の方程式になります. > 最小二乗法をプログラムすることは可能でしょうか? 最小二乗法だと,何を誤差とするかによりますね. 素直に考えれば,点と楕円の (最短) 距離だと思いますが, かなり面倒な式になりそうですね. 楕円 (Wikipedia) http://ja.wikipedia.org/wiki/%E6%A5%95%E5%86%86 Ellipsoid (楕円体,Wikipedia (英語)) http://en.wikipedia.org/wiki/Ellipsoid 二次曲面 (Wikipedia) http://ja.wikipedia.org/wiki/%E4%BA%8C%E6%AC%A1%E6%9B%B2%E9%9D%A2

関連するQ&A

  • 最小二乗法 楕円放物面

    数千のxyz座標データを、最小二乗法を用いて、ax^2+by^2+2cz=1の楕円放物面に近似したいのですが、どのようにしたらいいですか? ご存知の方教えてください。 宜しくお願いします。

  • 楕円の近似

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

  • 測定点の楕円近似

    傾斜した円筒を水平に測定して得られたi個の測定点(X[i],Y[i])を楕円の公式にフィッティングし、その楕円の中心座標(X0,Y0),楕円のなす角度θを求めたいと考えております。 とあるサイト上で楕円の式 f(x,y)={(x-x0)cosθ+(y-y0)sinθ}^2/a^2+{(x-x0)sinθ-(y-y0)cosθ}^2/b^2=1 ただし、a=長半径 b=短半径 として、多変量の非線形最小二乗法にて当てはめる事により5つの変数を求めることが出来るとあり、そのプログラムも公開されていたのですが、私、数学ならびにプログラムに対して全くの素人の為、色々とサイトや文献を調べたのですがどのように行えば良いのか理解する事が出来ませんでした。 出来ればExcelシートで計算出来ればと思っております。 考え方、公式等だけでも構いませんので、どうかご教授願えませんでしょうか? 皆様方、どうか宜しくお願いいたします。

  • 円の方程式を最小二乗法で求める

    工具顕微鏡で測定した測定点の座標から、エクセルにて円の方程式を最小二乗法で求める方法をお教え下さい。  過去の質問から、「楕円」についてのご回答があり、参照させていただき、自分なりに応用(xa+yb+c=-(x^2+y^2)として)してみたのですが、測定点の座標から得られる行列P、及び、その転置行列P'との積の逆行列とP'と()内の式の右辺から得られる行列との積を計算することができません。(3点のデータでは計算できましたが、Pを入力し、P'を求め、…と云った段階的な計算方法を採りました。)  宜しくお願いします。

  • 最小二乗法について

    xy座標平面に存在するn個の点にフィットするm次関数を、最小二乗法によって求めようとしているのですが、感覚的には、m次関数より、m+1次関数の方が偏差二乗和が小さくなると思うのですが、実際には、大きくなることが多々あります。 これはいったいなぜなのでしょうか? どなたかよろしくお願いします。

  • mathematicaを用いた最小二乗法について

    mathematicaを用いて2変数の方程式を最小二乗法で,あるグラフにフィッティングしたいと考えてます.しかし,どのようにやっていいのかいまいちわかりません. 詳しい方がいましたら,ぜひとも教えていただきたいです. よろしくお願いします.

  • 最小二乗法

    レポートで最小二乗法を使おうとしているのですが、Y=aX+b を求める時X、Y、X^2、XYをグラフでまとめたのですが、桁数がバラバラです。有効数字を設定すべきでしょうか?それとも正確性を求めてしない方がよいのでしょうか?教えてください。

  • 最小二乗法について

    いつもお世話になっております. 最小二乗法に関する質問です. 下記のサイトで最小二乗法についてなんとなくではありますが理解できました. http://szksrv.isc.chubu.ac.jp/lms/lms1.html そこで,質問なのですが, データが3次元以上の場合にも最小二乗法の考え方を使うことはできるのでしょうか? 3次の場合にならなんとなくイメージが付きますが・・・・ データの次数が4次,5次・・・になった場合にでも最小二乗法を使うことはできるのでしょうか? 数学にお詳しい方,教えて下さい. ヒントや参考サイトでも構いませんので,宜しくお願い致します.

  • 双曲線にならない楕円の最小2乗法

    概略楕円に近い点列データに対して、最小2乗法を用いて楕円形状を求めたいのですが、与えられた点列が楕円形状のごく一部分でしかない為、どうしても双曲線になってしまいます。 調べて見たのですが、双曲線にならないような方法があるみたいなのですが、詳細がよく分かりませんでした。 ご存知の方は教えていただけないでしょうか? 数学はあまり詳しくないので、専門用語など、詳しくなく、分かりやすく説明していただけると助かります。 また、参考になるサイトもなどありましたら、教えてください。 よろしくお願いします。

  • 3次元の近似直線

    こんにちは。2次元で実験データなどの点列から近似直線を求めるのは、最小二乗法の基本問題ですが、3次元の点群から直線の方程式(x-x0)/a=(y-y0)/b=(z-z0)/cを求めるにはどんなアルゴリズムを使いますか?スマートな方法があれば教えていただけたら幸いです。よろしくお願いします。