Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何求解同一中心的垂直椭圆系?_Algorithm_Intersection_Ellipse - Fatal编程技术网

Algorithm 如何求解同一中心的垂直椭圆系?

Algorithm 如何求解同一中心的垂直椭圆系?,algorithm,intersection,ellipse,Algorithm,Intersection,Ellipse,我正在编写的一个程序需要找到两个椭圆的交点,两个椭圆都是垂直的,并且共享同一个中心。我只需要四个中的第一个解 我可以用来解决这个问题的值是每个椭圆的垂直和水平分量的半径,或者“a”和“b”值,如果你使用椭圆的标准方程。我以前求解过圆锥非线性系统,但我不知道如何将代数思想转化为算法 这看起来相对简单,但我完全被卡住了。如果这是一个愚蠢的问题,我很抱歉,但我仍然希望得到一个答案。将椭圆方程的形式设置为(x/a)^2+(y/b)^2=1对于两对(a,b),系数y^2在右侧,并使左侧相等: (x*b1/

我正在编写的一个程序需要找到两个椭圆的交点,两个椭圆都是垂直的,并且共享同一个中心。我只需要四个中的第一个解

我可以用来解决这个问题的值是每个椭圆的垂直和水平分量的半径,或者“a”和“b”值,如果你使用椭圆的标准方程。我以前求解过圆锥非线性系统,但我不知道如何将代数思想转化为算法


这看起来相对简单,但我完全被卡住了。如果这是一个愚蠢的问题,我很抱歉,但我仍然希望得到一个答案。

将椭圆方程的形式设置为
(x/a)^2+(y/b)^2=1
对于两对(a,b),系数y^2在右侧,并使左侧相等:

(x*b1/a1)^2 - b1^2 = y^2   (1)
(x*b2/a2)^2 - b2^2 = y^2
这简化为:

(x*b1/a1)^2 - b1^2 = (x*b2/a2)^2 - b2^2 
一个x的二次方程,它最多会给出两个实解(x1,x2)。插入x1的椭圆方程(1)将给出两个y值(让我们将它们命名为y1,y2)。您的解决方案是:

(x1, y1)
(x1, y2)
(x2, y1)
(x2, y2)

当然,交点可以少一些,但很容易确定,因为一些二次方程会有复杂的解。

让我们假设您以椭圆的中心位于原点的方式移动坐标系。然后两个椭圆都可以用标准方程来描述:

其中a1、b1、a2、b2是椭圆各自的参数

唯一剩下的就是解这个方程组。例如,我可以帮你做(这里我用c代替a2,用d代替b2)

假设椭圆不平凡,一对可能的解决方案是:


还有其他对,它们在根前面有不同的+/-符号。

答案很好。注意:在中间步骤1中,lhs上的术语应颠倒(减号颠倒)。此处:(xb1/a1)^2-b1^2=(xb2/a2)^2-b2^2