从矢量场

时间:2017-03-22 01:29:03

标签: python numpy matplotlib surface

我在python中有一个vectofield,它显示了实验几何体上粒子的速度分布。对于每个位置,在两个数组xy

中,vxvy方向的速度为z(x,y

有人可能会举例说明:quiverplot of vectorfield

现在我想计算导致此速度分布的表面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>

1 个答案:

答案 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]])