Optimization 寻找最小距离

Optimization 寻找最小距离,optimization,distance,geometry,curves,Optimization,Distance,Geometry,Curves,我需要在给定的圆(或曲线)上找到一个或多个使d0+d1最小的点?曲线的半径和中心分别为(0,0)和“r”,点A和B的坐标已知。假设A=(x1,y1)和B=(x1,-y1)以及r>sqrt(x1^2+y1^2)。C是圆的未知点,应使长度d0+d1最小 d0-圆上A到C之间的距离 d1-圆上B到C之间的距离 点C沿圆移动。我需要在给定的圆(或曲线)上找到一个或多个使d0+d1最小的点?如果直线AB与圆相交,则C是该交点(请注意,可以有两个交点,且两者的距离相等d0+d1) 如果AB不与圆相交,则C

我需要在给定的圆(或曲线)上找到一个或多个使d0+d1最小的点?曲线的半径和中心分别为(0,0)和“r”,点A和B的坐标已知。假设A=(x1,y1)和B=(x1,-y1)以及r>sqrt(x1^2+y1^2)。C是圆的未知点,应使长度d0+d1最小 d0-圆上A到C之间的距离 d1-圆上B到C之间的距离


点C沿圆移动。我需要在给定的圆(或曲线)上找到一个或多个使d0+d1最小的点?

如果直线AB与圆相交,则C是该交点(请注意,可以有两个交点,且两者的距离相等
d0+d1

如果AB不与圆相交,则C是圆上与直线AB上离圆心最近的点的假想线相交的点


网上有很多关于如何在一条直线上找到离另一点最近的点,以及如何找到两条直线之间的交点的文章,这将解决第二种情况。对于第一种情况,您可以通过谷歌搜索“线-圆交点”

一般情况非常复杂,但特殊情况

A=(x1,y1)
B=(x1,-y1)
r>sqrt(x1^2+y1^2)

以原点为圆心的圆具有足够的对称性,至少在某些情况下可以获得解。我假设
A≠ B
,(相当于
y1≠ 0),否则这个问题对于一个圆来说是微不足道的

dist(p,Q)
为点
p
Q
之间的欧几里德距离。连接
A
B
的(闭合)直线段是点
P
的轨迹

dist(P,A) + dist(P,B) = dist(A,B)
对于
D>dist(A,B)
,具有

f(P) = dist(P,A) + dist(P,B) = D
是一个椭圆
E(D)
,其焦点是
A
B
。设
P
为圆上的一点,
D=f(P)

  • 如果点
    P
    中与圆和椭圆
    E(D)
    的切线不重合,
    P
    既不是局限于圆的局部最小值,也不是局部最大值
  • 如果切线重合,且圆的曲率大于
    P
    E(D)
    的曲率,则
    P
    是仅限于圆的一个孤立的局部最大值
    f
  • 如果切线重合,且圆的曲率小于
    P
    E(D)
    的曲率,则
    P
    是仅限于圆的一个孤立的局部最小值
    f
  • 如果切线重合且圆的曲率等于
    P
    E(D)
    的曲率,则
    • P
      是一个孤立的
      f
      局部最小值,如果
      dist(P,A)=dist(P,B)
      ,则限制在圆圈内
    • P
      既不是
      f的局部最大值,也不是局部最小值
      仅限于圆圈
首先,如果
x1=0
,则很容易看出(在几何上不明显的情况下)最小化
f
的圆上的点是x坐标
0
的点,即
P1=(0,r)
P2=(0,-r)
。[如果
r²,这甚至是真的≤ x1²+y1²
]

现在,假设
x1≠ 0
,不丧失通用性
x1>0
。然后很明显,最小化
f
的圆上的点
P=(x,y)
必须具有
x>x1
。根据情况的对称性,点
R=(R,0)
必须是限制在圆内的局部最小值或局部最大值
f

计算
f
R
附近的行为,我们发现
R
是局部极小值当且仅当

r ≥ (x1² + y1²) / x1
由于
R
E(f(R))
的最小曲率点(
R
E(f(R))
的切线与圆重合),
R
也是全局最小曲率点


如果
r<(x1²+y1²)/x1
,则
r
是限制在圆圈内的
f
的局部最大值。然后,
f
在圆上有两个全局极小值,具有相同的x坐标。不幸的是,我没有一个好的公式来计算它们,所以我不能提供一个比迭代搜索更好的方法。

你能添加图片吗?你需要定义你的距离函数!第二部分一般不正确。如果连接
A
B
的线段完全位于圆外,则当且仅当圆的中心与
A
的距离与
B
的距离相等时,最靠近线段的点将使距离之和最小化。然而,在这个问题上,情况就是这样。但是线段完全位于圆内,这使得在这种情况下事情更加复杂。嗨,丹尼尔。谢谢你的解释。问题是如何开始迭代搜索,并将其作为一种算法。