【发布时间】:2019-05-29 20:10:14
【问题描述】:
我有一个给定的 S 点(图表上的红色)和 n 个其他点(图表上的黑色)。我想找到一个点 P,距离 S 为 1,距离所有黑点最远(在这种情况下 - S 之间的距离总和strong>P,每个点都应该是最高的)。
由于 P 与 S 相差 1,我们可以看出 y = √(1 - x^2)。
我个人使用的分析方法是:
- 计算距离的总和
-
Q - P = √((Qx - Sx - x)^2 + (Qy - Sy - √(1 - x^2))^2)(重复所有n个点并总结),
-
- 计算得到的表达式的导数,
- 计算导数的根并找到最大值(在域中),
- 计算域中区间末端的值,
- 选择正确的 X。
在 Java 中最有效的方法是什么?可以使用哪些库?我听说图书馆允许进行这种分析,但听起来很复杂而且速度很慢,所以我一直在寻找任何数字想法,但找不到。
【问题讨论】:
-
基本上,您有两个选择:1) 将圆圈上的点表示为
(cos t, sin t)并将其插入您的目标。然后,找到该一维目标的最大值。 2)为约束添加Lagrange Multipler,并使用数值优化方法找到3D目标的最大值(查看维基百科页面的示例1a)。
标签: java math optimization geometry