我在圈内得到2分。我必须在圆上找到一个点(不是在内部,而不是在外面),以便给定的2点和我发现的点之间的距离之和最小。我只需要找到最小距离,而不是点的位置。
答案 0 :(得分:4)
minimize sqrt((x1-x0)^2 + (y1-y0)^2) + sqrt((x2-x0)^2 + (y2-y0)^2)
^ ^
(distance from point1) (distance from point 2)
subject to constraints:
x1 = C1
y1 = C2
x2 = C3
x4 = C4
x0^2 + y0^2 = r^2
(assuming the coordinates are already aligned to the center of the circle as (0,0)).
(C1,C2,C3,C4,r) are given constants, just need to assign them.
在分配x1,y1,x2,y2之后 - 给出了2个变量(x0,y0)和约束的最小化问题。 可以使用lagrange multiplier 解决最小化问题。
答案 1 :(得分:0)
设(x1,y1)和(x2,y2)是圆内的点,(x,y)是圆上的点,r是圆的半径。 您的问题会缩小为拉格朗日条件极值问题,即:
极值函数:
f(x, y) = sqrt((x-x1)^2 + (y-y1)^2) + sqrt((x-x2)^2 + (y-y2)^2)
条件:
g(x, y) = x^2 + y^2 = r^2 (1)
介绍辅助功能(reference):
Λ(x,y,λ)= f(x,y)+λ(g(x,y) - r ^ 2)
设∂Λ/∂x= 0,我们有:
(x-x1)/sqrt((x-x1)^2 + (y-y1)^2) + (x-x2)/sqrt((x-x2)^2 + (y-y2)^2) + 2λx = 0 (2)
让∂Λ/∂y= 0,我们有:
(y-y1)/sqrt((x-x1)^2 + (y-y1)^2) + (y-y2)/sqrt((x-x2)^2 + (y-y2)^2) + 2λy = 0 (3)
现在我们有3个变量(即x,y和λ)和3个方程(即(1),(2)和(3)),所以它是可以解决的。
请注意,应该有两种解决方案(除非两个内部点恰好是圆圈的中心)。一个是最小值(这是你需要的),另一个是最大值(将被忽略)。
答案 2 :(得分:0)
只是另一种方法(更直接):
为简单起见,假设圆为(0,0),半径为r 并假设两个点是P1(x1,y1)和P2(x2,y2)
我们可以计算这两个点的极角,假设它们是alpha1和alpha2 显然,圆上的点与P1和P2的最小距离之和在由alpha1和alpha2组成的圆形扇区内
同时,该扇区内圆上的点与P1和P2之间的距离之和是二次函数。因此,使用三分法可以找到最小距离。