2013-08-02 3 views
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 является вращение угол, и r и s являются полуоси

фактическое уравнение Я пытается превратить это

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} 
+0

'(h, k)' не является точно центром; это центр в уже повернутой системе координат. Если вам нужен реальный центр, вам придется писать такие вещи, как '(x-h) Cos [alpha]' и так далее. – MvG

+0

Для будущих вопросов, подобных этому, http://math.stackexchange.com/, возможно, лучше спросить. С одной стороны, вопрос более математичен, чем связанный с программированием в природе, а с другой стороны, форматирование формул там намного лучше, используя MathJax. – MvG

+0

Кроме того, имеется специальный сайт StackExchange для * Mathematica *: http://mathematica.stackexchange.com/ –

ответ

0

Если у вас есть h и k, вы можете использовать Множители Лагранжа для максимизации/минимизации функции (x-h)^2+(y-k)^2 действует ограничение бытия на эллипсе. Максимальное расстояние будет главным радиусом, минимальным расстоянием будет меньший радиус, а alpha - насколько они будут повернуты из горизонтали.

6

Я разместил a version of this answer on Math SE, так как он приносит много пользы от правильной математической верстки. Пример также прост, и есть некоторые дополнительные детали.

Нижеследующее описание следует за German Wikipedia article Hauptachsentransformation. Его английская коллега, согласно межвиковым ссылкам, составляет principal component analysis. Я считаю, что прежняя статья намного более геометрична, чем последняя. Тем не менее, последний уделяет особое внимание статистическим данным, поэтому, возможно, это будет полезно для вас.

Вращение

Ваш Эллипс описывается как

 [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] 

Первый из этих трех факторов является матрица, составленная из собственных векторов, каждый нормированный на единицу длины. Центральная матрица имеет собственные значения на диагонали, а последняя - транспонирована первой. Если вы умножите вектор (x,y) на эту последнюю матрицу, то вы измените систему координат таким образом, чтобы смешанный член исчезал, т. Е. Оси x и y параллельны основным осям вашего эллипса.Это как раз то, что происходит в вашей желаемой формуле, так что теперь вы знаете, что

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

Перевод

Если умножить вектор-строку [C D] в приведенной выше формуле с первым из трех матриц, то этот эффект будет точно отмените умножение (x, y) на третью матрицу. Поэтому в этой измененной системе координат вы используете центральную диагональную матрицу для квадратичного члена, а это произведение для линейного члена.

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

Теперь вы должны complete the square независимо друг от друга для 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] 

, который подходит для вашего описания.

Scaling

Заполненные квадраты выше способствовали еще некоторые условия для постоянного множителя 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, и вы должны в конечном итоге с исходным уравнением. Expanding that (с дополнительными версиями точности, напечатанных в скобках), вы получите

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

, который идеально подходит для ввода.

 Смежные вопросы

  • Нет связанных вопросов^_^