我在python中有一个vectofield,它显示了实验几何体上粒子的速度分布。对于每个位置,在两个数组x
和y
vx
和vy
方向的速度为z(x,y
现在我想计算导致此速度分布的表面z
)。 z
可以稍后重新调整,以通过缩放因子来提取值。
对于中心部分,它应该是vy=np.array([
[ 0.06145939, 0.0570322 , 0.04584799, 0.01882581, 0. , 0. , 0. , -0.01882581, -0.04584799, -0.0570322 ],
[ 0.05489626, 0.04700205, 0.03006774, 0.00924726, 0. , 0. , 0. , -0.00924726, -0.03006774, -0.04700205],
[ 0.04715306, 0.03727663, 0.02143105, 0.00589854, 0. , 0. , 0. , -0.00589854, -0.02143105, -0.03727663],
[ 0.04019211, 0.03012073, 0.01641931, 0.00433099, 0. , 0. , 0. , -0.00433099, -0.01641931, -0.03012073]])
vy=np.array([
[-0.02143105, -0.03006774, -0.04584799, -0.05832448, -0.0665558, -0.0665558 , -0.0665558 , -0.05832448, -0.04584799, -0.03006774],
[-0.03727663, -0.04700205, -0.0570322 , -0.06378726, -0.0665558 , -0.0665558, -0.0665558 , -0.06378726, -0.0570322 , -0.04700205],
[-0.04715306, -0.05489626, -0.06145939, -0.0653094 , -0.0665558 , -0.0665558, -0.0665558 , -0.0653094 , -0.06145939, -0.05489626],
[-0.05314604, -0.05899633, -0.06346224, -0.06585704, -0.0665558 , -0.0665558 , -0.0665558 , -0.06585704, -0.06346224, -0.05899633]])
的简单线性增加。对于其他部分,它应该导致我想的圆形。
我想过沿着x和y轴左右做cumsums。
但这导致了预期的结果。
您有任何建议或想法吗?
以下是x = [5,15]和y [0,4]的一些示例数据:
<INPUT id=Edit class=Design_01 style="IME-MODE: active" type=submit value= Edit>
答案 0 :(得分:1)
Here is a naive approximation:
# calculate midpoints
vxm = 0.5 * (vx[:, 1:] + vx[:, :-1])
vym = 0.5 * (vy[1:, :] + vy[:-1, :])
# integrate
VX, VY = np.zeros_like(vx), np.zeros_like(vy)
VX[:, 1:] = np.cumsum(vxm, axis=-1)
VY[1:, :] = np.cumsum(vym, axis=0)
# compare xy and yx
VYX = VY[:, 0:1] + VX
VXY = VX[0:1, :] + VY
np.nanmax(np.abs(VXY - VYX) / (np.abs(VXY) + np.abs(VYX)))
# 0.12076532205227976 <- not great, but ...
# take mean
E = 0.5 * (VYX+VXY)
E
# array([[ 0. , 0.0592458 , 0.11068589, 0.14302279, 0.1524357 ,
# 0.1524357 , 0.1524357 , 0.14302279, 0.11068589, 0.0592458 ],
# [-0.02935384, 0.02115311, 0.059688 , 0.08087732, 0.08514562,
# 0.08514562, 0.08514562, 0.08087732, 0.059688 , 0.02115311],
# [-0.07156868, -0.02979605, 0. , 0.01554169, 0.01796908,
# 0.01796908, 0.01796908, 0.01554169, 0. , -0.02979605],
# [-0.12171823, -0.08687318, -0.0628763 , -0.05054064, -0.04899143,
# -0.04899143, -0.04899143, -0.05054064, -0.0628763 , -0.08687318]])