我想用Simpy绘制Hankel函数的二阶导数。在Mathematica中,这很简单:
D[HankelH2[1,z],z]
这可以通过使用属性进行分析
但是我想学习如何用Sympy直接推导它。 到目前为止,我已经试过了:
^{pr2}$错误信息在我看来难以辨认:
SympifyError Traceback (most recent call last) in () 1 import sympy as sp 2 x = sp.Symbol('x') ----> 3 dh2 = sp.diff(lambda x: hankel2(1,x),x)
/usr/lib/python2.7/dist-packages/sympy/core/function.pyc in diff(f, *symbols, **kwargs) 1639 """ 1640 kwargs.setdefault('evaluate', True) -> 1641 return Derivative(f, *symbols, **kwargs) 1642 1643
/usr/lib/python2.7/dist-packages/sympy/core/function.pyc in new(cls, expr, *variables, **assumptions) 985 def new(cls, expr, *variables, **assumptions): 986 --> 987 expr = sympify(expr) 988 989 # There are no variables, we differentiate wrt all of the free symbols
/usr/lib/python2.7/dist-packages/sympy/core/sympify.pyc in sympify(a, locals, convert_xor, strict, rational, evaluate) 313 expr = parse_expr(a, local_dict=locals, transformations=transformations, evaluate=evaluate) 314 except (TokenError, SyntaxError) as exc: --> 315 raise SympifyError('could not parse %r' % a, exc) 316 317 return expr
SympifyError: Sympify of expression 'could not parse u' at 0x7fdf3eca9e60>'' failed, because of exception being raised: SyntaxError: invalid syntax (, line 1)
你知道我的错误在哪里吗?在
提前谢谢。在
不能在SymPy中使用SciPy函数。SciPy函数是数值函数,而SymPy只适用于符号函数(即SymPy本身内部的函数)。将其包装在
lambda
中不会改变这一点。在您需要做的是从SymPy导入
hankel2
,并使用它。在如果您想绘制这个图,可以使用
^{pr2}$sympy.plot
函数。或者,可以使用scipy with将其转换为数值函数并将其与
maptlotlib
这样的绘图库一起使用(看起来hankel2是一个复杂的函数,我认为SymPy的plot
处理得不好,所以您可能更喜欢这个选项)。在相关问题 更多 >
编程相关推荐