【发布时间】:2016-07-04 01:16:42
【问题描述】:
我有一个 XY 网格,其中一些网格点具有分配给它们的某些值,在这种情况下,每个值都表示一定的质量,所以基本上是网格中的点质量。我现在想要获得一组遵循 1/R 密度分布的点,其中 R 是到中心的距离,所以 R = sqrt(x^2 + y^2)。通过密度分布,我的意思是点的数量必须下降为 1/R。我将如何进行编码?
我的代码如下:
import numpy as np
x = np.linspace(-50,50,100)
y = np.linspace(-50,50,100)
X, Y = np.meshgrid(x,y)
zeta_a = (25,25)
zeta_b = (-10,5)
M_a = 150
M_b = 150
zeta_a 和 zeta_b 对应于 2 个质量为 150 单位的点质量。我还需要使用这些点进行后续计算,所以我也想知道如何使用更通用的格式,而不是使用 'a'、'b'、'c' 来表示 n 点质量。
感谢您的帮助。
【问题讨论】:
-
我不是 100% 确定我真的理解您的问题,但您可能想为 zeta 和 M 创建列表或数组,例如 zeta = [(25,25), (-10,5), ...] 和 M = [150, 150, ...],然后您可以使用作为 zeta[n] 和 M[n] 来处理第 n 个点质量。
-
是的,我的问题是如何为 zeta 生成一个列表/数组,它遵循 1/R(距中心的距离)的密度分布,这些值可以是完全任意的。
-
1/R在 xy 平面上的(双)积分是无限的。要成为概率密度函数 (pdf),积分必须等于 1——或者至少是常数。所以我认为你正在寻找的是不可能的。对于某些epsilon > 0,pdf 必须下降为1/R**(2+epsilon),才能使pdf 可积分。 -
对,我想过,但我只是希望它是一个近似值,说只要它不超过 1/R,它不一定必须是 1/R。此外,不是设置无限数量的点,我不能选择某个有限数量,并分配它们遵循 1/R 分布的近似值吗?我所说的密度就是点的分布
标签: python numpy grid distribution