from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
x, y, z = np.meshgrid(np.arange(-0.8, 1, 0.2),
np.arange(-0.8, 1, 0.2),
np.arange(-0.8, 1, 0.8))
u = 0
v = y**2
w = -2*y*z - y
ax.quiver(x, y, z, u, v, w, length=0.1)
plt.show()
可以使用^{} 计算向量场的旋度。
示例:
假设F(x,y,z)=y2zi-xyj+z2k,那么:
y
是R[1]
,x
是R[0]
,z
是R[2]
R.x
、R.y
、R.z
。计算矢量场旋度的代码是:
在这种情况下,G将等于
R_y**2*R.y + (-2*R_y*R_z - R_y)*R.z
,或者换句话说,G=0i+y2j+(-2yz-y)k。
要绘制它,您需要将上述结果转换为3个单独的函数:u、v、w
(下面的示例改编自thismatplotlib示例):
最终的结果是:
要计算向量函数的旋度,还可以使用numdifftools进行自动数值微分,而无需绕道符号微分。Numdifftools不提供
curl()
函数,但它计算一个或多个变量的向量值函数的雅可比矩阵,这提供了向量场的所有分量相对于所有变量的导数;这是计算旋度所必需的。返回旋度在
x
:array([-216., -2., 0.])
的值 绘制如上文所述。相关问题 更多 >
编程相关推荐