我想用 sympy 计算一个符号梯度,例如,
import sympy as sym
x, y, z = sym.symbols("x y z", real=True)
T = sym.cos(x**2+y**2)
gradT = sym.Matrix([sym.diff(T, x), sym.diff(T,y), sym.diff(T,z)])
现在我想用这个表达式创建一个 lamddify 函数:
func = lambdify((x,y,z), gradT,'numpy')
要使用我拥有的功能:
gradT_exact = func(np.linspace(0,2,100), np.linspace(0,2,100), np.linspace(0,2,100))
我收到以下错误:
<lambdifygenerated-3>:2: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
return (array([[-2*x*sin(x**2 + y**2)], [-2*y*sin(x**2 + y**2)], [0]]))
如果我将 T 更改为 x,y,z 的函数,它不会给我带来任何问题......为什么当 T 仅取决于 x 和 y 并且 z 设置为零时它会发出警告。
提前致谢!