測定点の楕円近似

このQ&Aのポイント
  • 測定点の楕円近似について質問があります。
  • 傾斜した円筒を水平に測定して得られた測定点を楕円の公式にフィッティングし、楕円の中心座標となす角度を求めたいと考えています。
  • 数学やプログラムに詳しくないため、どのように行えば良いのか理解できません。Excelで計算する方法や考え方について教えてください。
回答を見る
  • ベストアンサー

測定点の楕円近似

傾斜した円筒を水平に測定して得られた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シートで計算出来ればと思っております。 考え方、公式等だけでも構いませんので、どうかご教授願えませんでしょうか? 皆様方、どうか宜しくお願いいたします。

  • kisha
  • お礼率61% (8/13)

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

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

おっとと > 『q = inv(P) r ,q = inv(P' P) (P' r) 』を解く のではありません。もう解いてあります。 このご質問の場合、測定点は5より多いでしょうから、 inv(P' P) (P' r) を計算すれば答が出るんです。Excelの関数で書けば =mmult(minverse(mmult(transpose(P),P),mmult(transpose(P),r)) ということです。 例えば10個測定点があるとしましょうか。 PをA列1行目からE列10行目までの範囲に入れることにしましょう。 j番目の測定値のxの値をxj, yの値をyjとするとき、 j行目のA列にxj^2, B列にyj^2, C列にxj*yj, D列にxj,E列にyj を並べたものです。10行5列の行列ということになります。 具体的にはD列とE列にデータを入れて、 A列1行目に =C1^2 B列1行目に =D1^2 C列1行目に =C1*D1 を入力し、 A列1行目からC列10行目までの範囲を選択しておいて、「下方向へコピー」のコマンドを使えばできあがりです。 rというのは1を縦にずらりと10個並べたもの。 これをG列1行目からG列10行目までの範囲に置くことにしましょう。 そして、答のベクトルqをJ列1行目からJ列5行目に置くことにしましょうか。 答は5個の数値が縦に並んだもので、 1個目がa, 2個目がb, ..., 5個目がeの値です。 そうすると、J列1行目からJ列5行目の範囲を選んだ状態で、J列1行目のセルに =mmult(minverse(mmult(transpose(A1:E10),A1:E10),mmult(transpose(A1:E10),G1:G10)) と入力します。で、数式入力の欄にカーソルを入れたまま、controlキーを押しながらEnterを押す。(Macならリンゴマークのキーを押しながらEnterを押す。)すると、数式入力の欄には {=mmult(minverse(mmult(transpose(A1:E10),A1:E10),mmult(transpose(A1:E10),G1:G10))} と表示され、答がJ列1行目からJ列5行目に表示されます。 Excelにおいて、行列全体にPだのrだのと言った名前をつける方法も知っていると便利です。Excelのマニュアルをご参照あれ。

kisha
質問者

お礼

お礼を申し上げるのが遅くなり、申し訳ありませんでした。ご丁寧なご回答本当にありがとうございました。

その他の回答 (1)

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

しばしば非線形の問題として扱うようですが、実は線形の簡単な問題として解くことができます。 一般に、楕円や双曲線は a(x^2)+b(y^2)+cxy+dx+ey=1 (a,b,c,d,eは実数)を満たす<x,y>の集合として表されます。 楕円あるいは双曲線の曲線上の座標<x,y>をn回測定したものを<x[j],y[j]> (j=1,2,...,n)とし、その値に誤差がないとするならば、5個の測定点があれば5元連立一次方程式 a(x[1]^2)+b(y[1]^2)+cx[1]y[1]+dx[1]+ey[1]=1  : a(x[5]^2)+b(y[5]^2)+cx[5]y[5]+dx[5]+ey[5]=1 を解けばa,b,c,d,eが決まります。これを行列で表せば P[j,1] = x[j]^2 P[j,2] = y[j]^2 P[j,3] = x[j]y[j] P[j,4] = x[j] P[j,5] = y[j] とし、 r[j] = 1 そして未知数のベクトルを q[1] = a q[2] = b q[3] = c q[4] = d q[5] = e とすれば P q = r を解くことに相当します。つまり q = inv(P) r ここにinv(P)はPの逆行列です。 測定点が5個より多い場合(n>5)にも j=1,2,...,nについてP,rを作り q = inv(P' P) (P' r) を計算すればq(すなわちa,b,c,d,e)が求められます。ここにP'はPの転置行列です。 nが大きいほど(つまり測定点が多いほど)測定値に少し誤差があってもその影響を受けにくくなります。 Excelでは 行列の転置はtranspose(), 逆行列はminverse()、行列(或いはベクトル)の積はmmult(,)という関数で計算できます。 a,b,c,d,eから、楕円の長軸・短軸の長さと向きおよび中心の座標を求めるのは、別の問題と考えれば良いでしょう。

kisha
質問者

お礼

早速のご回答誠にありがとうございます。 ご丁寧に解法をご説明していただいたのですが、何分レベルが高く、私、数学的知識がほとんど無いため、『q = inv(P) r ,q = inv(P' P) (P' r) 』を解くというお話から理解する事が出来ませんでした。本内容について理解すべく勉強いたします。 ありがとうございました。

関連するQ&A

  • 計算式の誤差(楕円マクロ)

    最近楕円のマクロ(ファナック)を作成してみました。内容は楕円公式にのっとって作ったもので、a>b>0、ピッチをx=0.1としa=20b=15の楕円で中心x0y0からy頂点(b)までG01で進み設定した角度j(x-z平面角度)の角度でx頂点(a)まで進み、yマイナス頂点→xマイナス頂点→y頂点といった具合に楕円上に一周まわるといった内容です。何とか動作できたのですが次にこれを 工具半径=Dを考慮したマクロを作成しようとしているのですがこの場合 工具中心をX,Y楕円と工具の交点Xp,Ypとの角度を微分して求め任意の点で角度を求めるマクロを作りたいと思ったのですが、この場合工具半径D=1としたらa=20b=15の場合実際の工具中心はa=19b=14の楕円を描いていくということですよね?なので、微分して求めた傾きを工具半径D=1にSIN,COSで補正量を計算し求めた値Xを楕円公式にあてはめYの値を計算したところ0.02ほどの誤差(a=19,b=14の楕円と比較して)が生じました!このくらいの誤差はでるものなのでしょうか?それとも僕の計算間違いでしょうか?どなたか教えていただければ幸いです。

  • 楕円の媒介変数表示

    楕円 x^2/a^2+y^2/b^2=1 の媒介変数表示は、 x=a/cosθ y=b/sinθ x=a/sinθ y=b/cosθ どちらでもよいのでしょうか? それともxはcosと関係が深いので、xとcosの組のほうがよいのでしょうか? 宜しくお願いします

  • 楕円の面積と関数

    xy平面上にある楕円上の座標は、 (x,y)=( a・sinθ,b・cosθ ) で、関数と面積Sは x^2/a^2+y^2/b^2=1 S=πab となります。 次に、 (x,y)=( a・sinθ,b・cos(θ+α) ) a,b,α:定数 はx,y軸に対して斜めに配置された楕円になりますが、この楕円の面積はどのように求めるのでしょうか?また、関数にできるのでしょうか? お分かりになる方、お手数ですが、教えてください。 よろしくお願いします。

  • 回転した楕円を任意の直線に投影した長さの求め方

    回転した楕円を任意の直線に投影した長さの求め方 長軸を2a、短軸を2bとした場合の楕円x^2/a^2+y^2/b^2=1(楕円上の点は(a*cosθ、b*sinθ))を、長軸とx軸との角度φとして回転させ、原点を通る任意の直線(例えばx軸との角度ψが10度の直線)に投影した長さ(例えば、x軸(ψ=0)なら楕円が収まる長方形の横の長さ)の求め方が分かりません。 今のところの考えでは、 (1).回転後の楕円を求める。 ⇒x^2+y^2=a^2*(cosφ)^2+b^2*(sinφ)^2 (楕円上の点は(a*cosθ*cosφ-b*sinθ*sinφ、a*sinθ*cosφ+b*cosθ*sinφ)) (2).投影する直線の式を求める。 ⇒? (3).(2)の直線と(2)の直線の垂線で楕円と1点で接する直線の交点の座標を求める。 (4).(3)の点と原点との距離を算出し、投影した長さを求める。 というように考えていますが、(2)のところで行き詰ってしまっています。 長くなりましたが、 ・そもそも、この考えかたは合っているのでしょうか。 ・あっている場合、(2)以降を教えていただけると助かります。 ・他に計算が楽になる求め方は無いでしょうか。 よろしくお願いします。

  • 楕円の軌道に傾斜をつける方法を教えてください

    ActionScriptでボールを楕円に動かすスクリプトを作成しています。 x軸、y軸に平行に動くスクリプトはできるのですが、斜め45度に動くやり方がわかりません。 ↓x軸y軸に平行運動する楕円スクリプト。 //-------------------------------------------- //長軸100、短軸50の楕円形にボールを動かす r = 100;//半径 onClipEvent (enterFrame) { ang += 10; //角度を10ずつ追加 radian = Math.PI/180*ang; //ラジアンに変換(1度=pai割る180で計算) X = Math.cos(radian)*r; //コサイン×半径 でx座標を計算 Y = Math.sin(radian)*r; //サイン×半径 でy座標を計算 this._x = X; //Xを座標に反映 this._y = Y/2; //Yの半分を座標に反映 } //-------------------------------------------- なんとか傾斜した動きを作りたくていろんなサイトを見ましたが、どうしても式がわかりません。 ぜひ教えてもらえませんでしょうか。 どうぞよろしくお願いします。

    • ベストアンサー
    • Flash
  • 楕円の変数変換

    楕円E:(x/a)^2+(y/b)^2≦1 に関して 面積 ∬_E dxdy を求めるとき、 変数変換 x=ar*cosθ,y=br*sinθ を行うと、楕円 E の r,θ での表示 E' はどのようになるのでしょうか?

  • 楕円 tanθ パラメータ表示

    三角関数の計算がわかりません。 楕円C x=acosθ y=bsinθ (0≦θ<2π)を tanθを使って、表すとき、2倍角の公式から、sinθ=2sin(θ/2)cos(θ/2) cosθ=cos²(θ/2)-sin²(θ/2)を用いて、 sinθ={2sin(θ/2)cos(θ/2)}/{sin²(θ/2)+cos²(θ/2)}={2tan(θ/2)}/{1+tan²(θ/2)} cosθ={cos²(θ/2)-sin²(θ/2)}/{sin²(θ/2)+cos²(θ/2)}=1-tan²(θ/2)/{1+tan²(θ/2)} と書き直せる そうですが、sinθ={2sin(θ/2)cos(θ/2)}/{sin²(θ/2)+cos²(θ/2)}の分子、分母をcos²(θ/2)で割っても、右辺になりません。cosθもあわせて、詳しい計算過程を教えてください。

  • 楕円の弧の長さ

    楕円の弧の長さを求める計算がわかりません。 b>a>0のとき、x²/a²+y²/b²=1この楕円を x=acosθ,y=bsinθを使って表した時、θが0からαまで動くときの楕円の弧Lの長さを求める時に、dx²+dy²を利用し、b>a>0のと仮定したので、1-(a/b)²=k² とおくことができ、そうすると楕円の弧の長さから  ∫√1-k²sin²θdθ・・・(1)  (√ のなかは1-k²sin²θ)という積分が登場するそうです。 変数変換をsinθ=t として、cosθdθ=dt,第一象限にある弧長を求める限りでは、 cosθ>0したがって、√1-sin²θdθ=dt (√ のなかは1-sin²θ) ここからの計算がわからないのです。(1)はtに関する積分として ∫√(1-k²t²)/(1-t²)dt (√ のなかは(1-k²t²)/(1-t²))となるそうですが、(1+kt)(1-kt)/(1+t)(1-t)としてみたり、 置換積分の説明を見たりしても、わかりませんでした。tに関する積分への、計算を教えてください。お願いします。

  • 楕円の極座標表示

    x^2/a^2+y^2/b^2=1の楕円で、原点(0,0)を極Oとして対応させた時の極方程式はどうなりますか?r=ab/(b^2cos^2θ+a^2sin^2θ)^(1/2)までは出ますが、もう少し綺麗になると聞いたのですが…ここでストップですか?

  • 楕円の極座標による表示

    xy 平面上の楕円 E:(x/a)^2+(y/b)^2≦1 の極座標 (r,θ) による表示が、 F={ (r,θ) | 0≦r≦ab/√((b*cosθ)^2+(a*sinθ)^2) , 0≦θ≦2π } となることを示すためには、どうすればよいでしょうか。 どなたか教えて頂けませんでしょうか。