我正在为我的一个朋友编写一个程序,该程序当前正在研究航空工程。我正在尝试测试我实现的数学是否有效。对于那些知道的人,我正在尝试计算差异(我认为我不是工程师,也不会假装自己是我。)
他向我发送了一个Stack Overflow链接,该链接指向他认为应该如何执行。 (可以在here中找到该线程。他的版本对我不起作用,因为它给了我一个Numpy错误,如下所示:
numpy.core._internal.AxisError: axis 1 is out of bounds for array of
dimension 1
现在,我尝试了一种不同的方法,该方法给了我一个不同的错误,如下所示:
ValueError: operands could not be broadcast together with shapes (60,58)
(60,59)
此方法给了我上面的错误,我不太确定如何解决它。我已经输入了上面的错误代码。
velocity = np.diff(c_flow)/np.diff(zex)
ucom = velocity.real
vcom = -(velocity.imag)
deltau = np.divide((np.diff(ucom)),(np.diff(x)))
deltav = np.divide((np.diff(vcom)),np.diff(y))
print(deltau + deltav)
注意:C_flow
在程序的前面定义,并且很复杂。 zex
在早期也被定义为复杂变量的早期形式。 x
和y
是坐标向量中的两个坐标矩阵。
print语句的预期结果应为零或非常接近零的值。 (我不完全确定值应该是多少,但正如我所说,我不是工程师)
提前谢谢
编辑:
在遵循BenT的建议之后,我使用了np.gradient和np.sum,但是这是在错误的方向上添加了轴,因此为了抵消它,我分离了两个功能,如下所示:
velocity = np.diff(c_flow)/np.diff(z)
grad = (np.gradient(velocity))
divergence = np.sum(grad, axis=0)
print(np.average(divergence))
print(np.average(velocity))