2

フィット データセットのレベル カーブとして楕円を取得しています。特定の楕円を選択した後、それを中心点、長半径と短軸の長さ、および回転角度として報告したいと思います。言い換えれば、(mathematica を使用して) 楕円方程式を次の形式から変換したいと思います。

Ax^2 + By^2 + Cx + Dy + Exy + F = 0

より標準的な形式に:

((xCos[alpha] - ySin[alpha] - h)^2)/(r^2) + ((xSin[alpha] + yCos[alpha] - k)^2)/(s^2) = 1

(h,k)中心、alphaは回転角度、 とrs半軸です。

私が変換しようとしている実際の方程式は

 1.68052 x - 9.83173 x^2 + 4.89519 y - 1.19133 x y - 9.70891 y^2 + 6.09234 = 0

中心点が適合最大値であることはわかっています。これは次のとおりです。

 {0.0704526, 0.247775}
4

2 に答える 2

6

この回答のバージョンを Math SEに投稿しました。これは、適切な数学的組版から多くのメリットが得られるためです。そこにある例もより単純で、追加の詳細がいくつかあります。

次の説明は、ドイツ語のウィキペディアの記事 Hauptachsentransformationに従います。ウィキ間のリンクによると、英語版は主成分分析です。前者の記事は後者よりもはるかに幾何学的だと思います。ただし、後者は統計データに重点​​を置いているため、それでも役立つ場合があります.

回転

あなたの楕円は次のように説明されています

        [A   E/2]   [x]             [x]
[x y] * [E/2   B] * [y]  +  [C D] * [y] + F = 0

まず、回転を識別します。これを行うには、この 2×2 行列の固有値と固有ベクトルを特定します。これらの固有ベクトルは、回転を表す直交行列を形成します。そのエントリは、式のSin[alpha]とです。Cos[alpha]

あなたの数字で、あなたは得る

[A  E/2]   [-0.74248  0.66987]   [-10.369  0     ]   [-0.74248 -0.66987]
[E/2  B] = [-0.66987 -0.74248] * [ 0      -9.1715] * [ 0.66987 -0.74248]

3 つの要素の 1 つ目は、それぞれが単位長に正規化された固有ベクトルによって形成される行列です。中央の行列は対角線上に固有値を持ち、最後の行列は最初の行列の転置です。ベクトル(x,y)を最後の行列で乗算すると、混合項がなくなるように座標系が変更されます。つまり、x 軸と y 軸が楕円の主軸に平行になります。これは、目的の式で起こることです。

Cos[alpha] = -0.74248  (-0.742479398678 with more accuracy)
Sin[alpha] =  0.66987  ( 0.669868899516)

翻訳

上記の式の行ベクトルを 3 つの行列の最初の行列で乗算すると、この効果により、3 番目の行列による[C D]乗算が正確にキャンセルされます。(x, y)したがって、その変更された座標系では、二次項に中心対角行列を使用し、線形項にこの積を使用します。

                     [-0.74248  0.66987]
[1.68052, 4.89519] * [-0.66987 -0.74248] = [-4.5269 -2.5089]

ここで、 との正方形を個別に完成させる必要がxありy、最終的には中心座標を読み取ることができるフォームになります。

-10.369x² -4.5269x = -10.369(x + 0.21829)² + 0.49408
-9.1715y² -2.5089y = -9.1715(y + 0.13677)² + 0.17157

h = -0.21829  (-0.218286476695)
k = -0.13677  (-0.136774259156)

すでに回転した座標系の中心hを記述します。k元の中心を取得するには、最初の行列で再度乗算します。

[-0.74248  0.66987]   [-0.21829]   [0.07045]
[-0.66987 -0.74248] * [-0.13677] = [0.24778]

あなたの説明に合います。

スケーリング

上記の完成した正方形は、定数 factor にいくつかの項を追加しますF

6.09234 + 0.49408 + 0.17157 = 6.7580

これを方程式の右側に移動し、方程式全体をこの数で割って= 1、目的のフォームから を取得します。次に、半径を推測できます。

1    -10.369
-- = ------- = 1.5344
r²   -6.7580

1    -9.1715
-- = ------- = 1.3571
s²   -6.7580

r = 0.80730  (0.807304599162099)
s = 0.85840  (0.858398019487315)

結果の検証

では、間違いがないか確認してみましょう。見つかったパラメーターを使用して、式をまとめることができます

  ((-0.74248*x - 0.66987*y + 0.21829)^2)/(0.80730^2)
+ (( 0.66987*x - 0.74248*y + 0.13677)^2)/(0.85840^2) = 1

1を左辺に動かしてを掛ける-6.7580と元の式になります。それを拡張すると(括弧内に高精度バージョンが印刷されています)、次のようになります。

-9.8317300000 x^2
-1.1913300000 x y
+1.6805200000 x
-9.7089100000 y^2
+4.8951900000 y
+6.0923400000

これはあなたの入力にぴったりです。

于 2013-08-02T23:57:10.027 に答える