gpt4 book ai didi

math - 椭圆的标准形式

转载 作者:行者123 更新时间:2023-12-02 08:39:19 25 4
gpt4 key购买 nike

我将椭圆作为拟合数据集的水平曲线。选择特定椭圆后,我想将其报告为中心点、半长轴和短轴长度以及旋转角度。换句话说,我想从以下形式转换(使用 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}

最佳答案

我发布了 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独立于xy ,您最终会得到一个表格,您可以从中读取中心坐标。

-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)

请注意 hk在已经旋转的坐标系中描述中心;要获得原始中心,您将再次与第一个矩阵相乘:

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

符合您的描述。

缩放

上面完成的方 block 为常数因子 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

这与您的输入完美匹配。

关于math - 椭圆的标准形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18023043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com