最小化距离:距离公式

now*_*der 5 algorithm math geometry

我正在用C编写程序.我想通过最小化表达来找到解决方案

D1+D2+......+Dn
Run Code Online (Sandbox Code Playgroud)

其中Di是由2点之间的距离公式计算的距离.上面的表达式是x和y变量

现在我将区分这个表达式并找到解决方案.我的疑问是:

因为在上面的表达式中,所有Di都将作为平方根出现,这将很难解决.所以我们可以解决这个表达式:

D1^2 + D2^2 + ......+ Dn^2
Run Code Online (Sandbox Code Playgroud)

上述表达式产生的答案是否与解决原始表达式所产生的答案相同?

我检查了简单的测试用例,例如n = 2.它产生了正确的答案.一般来说是真的吗?

如果没有,这个问题怎么解决?

Eam*_*nne 7

即使是2d距离,通常也不是最小值与最小值a^2 + b^2相同a + b.当然,对于一些非常具体的有限的问题可能是正确的.如果您正在尝试找到一个反例,请注意这些正方形会使长距离过度; 如果你构造一个最小包含至少一个长距离的例子,那么你很可能会得到一个不同的最小值.

你想解决的问题是什么?当然,对你的问题而言,区别无关紧要; 或者,平方和的最小值是更便宜的问题,并且更容易第一次逼近最终解.

这可能是显而易见的,但是如果各种距离是不相关的,那么对于每个单独的距离,当距离为时,正方形是最小的,因此在正方形的总和处,无关距离的总和是最小的.

编辑帖子更新:您正试图找到一个质心,它具有位于特定线上的限制.总的来说,大概是:你只有一个自由度,你可以做出明显的区分.但是,结果将在分母中包含一系列分数和sqrt; 在一般情况下解决代数是不可能的(AFAIK).我不是100%肯定,但我认为你很幸运,你的距离总和没有局部最小值,除了全球最小值; 在这种情况下,牛顿的方法将可靠而快速地收敛.

因此,如果您可以验证只有一个局部最小值的假设,那么您就可以免费使用,即使可以,也可以相当可靠地获得相当不错的结果,并通过比较牛顿法来检测何时出错用一些现实检查点计算最小值(例如,每个点在线上的正交投影).

  • 在您的具体示例中,直接在线上想象三个点.如果两个点在0上,并且一个点在10处(沿着线测量),则距质心的距离之和的最小值为0(10 - 距离10点处的一点10 ),但是平方和的最小值将是10/3(试一试). (3认同)