移动列表中的点,使条目至少相距“dist”

2024-06-11 05:46:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个参考浮动列表,例如

x_ref = [-0.1, 1.0, 1.2, 3.5, 7.5, 12.0]

我想找到一个x的列表,这样可以实现两件事:

  • x中的条目至少相距dist(例如,2.0)
  • x中的条目尽可能接近其x_ref伙伴,即它们最小化平方距离
    1/2 sum((x_ref[i] - x[i]) ** 2) -> min
    

我做了些东西,但它太臃肿了,可能有马车。也许这里有个简单的方法。有什么提示吗


Tags: 方法ref距离列表dist条目min两件事
1条回答
网友
1楼 · 发布于 2024-06-11 05:46:06

首先,您需要确定列表中的每个严重拥挤区域,最大的子序列(i,j)如下

(x[j] - x[i]) / 2.0 < j-i

编辑 尼科的评论恰到好处:我没有考虑在一端有一个有效的空位。我认为调整间隙识别将达到目的

(x[j] - x[i]) / 2.0 < j-i-1

编辑结束

在您给定的示例中,只有一个这样的位置,值为-0.1到3.5,差为3.6,其中要求排列为6.0。最小排列将由闭合区间[0,(j-i)]k的数p + 2.0 * k组成

您现在有了错误的表达式:

sum for k = 0, (j-i)
    (x[k] - (p + 2k))^2

所有x[k]值都已知,所有2k值都已知。展开表达式,求解p,并最小化导数并将其设置为0。得到的p值为x[i]提供了一个新值,其他值也随之产生

相关问题 更多 >