Python 汉克尔函数的二阶导数
我想用Simpy绘制Hankel函数的二阶导数。在这种情况下,很容易做到:Python 汉克尔函数的二阶导数,python,sympy,symbolic-math,derivative,bessel-functions,Python,Sympy,Symbolic Math,Derivative,Bessel Functions,我想用Simpy绘制Hankel函数的二阶导数。在这种情况下,很容易做到: D[HankelH2[1,z],z] 这可以通过使用属性进行分析 但我想学习如何直接用Sympy推导它。 到目前为止,我已经尝试过: from scipy.special import hankel2 import sympy as sp x = sp.Symbol('x') dh2 = sp.diff(lambda x: hankel2(1,x),x) 我看不清错误信息: SympifyError回溯(最近的调用
D[HankelH2[1,z],z]
这可以通过使用属性进行分析
但我想学习如何直接用Sympy推导它。
到目前为止,我已经尝试过:
from scipy.special import hankel2
import sympy as sp
x = sp.Symbol('x')
dh2 = sp.diff(lambda x: hankel2(1,x),x)
我看不清错误信息:
SympifyError回溯(最近的调用
最后)在()
1作为sp导入Symphy
2 x=sp.Symbol('x')
---->3 dh2=sp.diff(λx:hankel2(1,x),x)
/usr/lib/python2.7/dist-packages/sympy/core/function.pyc中的diff(f,
*符号,**kwargs)1639”“”1640 kwargs.setdefault('evaluate',True)
->1641返回导数(f,*符号,**kwargs)1642 1643
/中的usr/lib/python2.7/dist-packages/sympy/core/function.pyc
新的(cls、expr、*变量、**假设)
985 def新的(cls、expr、*变量、**假设):
986
-->987 expr=同情(expr)
988
989#没有变量,我们区分所有自由符号
/sympify中的usr/lib/python2.7/dist-packages/sympy/core/sympify.pyc(a,
局部变量,转换(异或,严格,有理,求值)
313 expr=parse_expr(a,local_dict=locals,transformations=transformations,evaluate=evaluate)
314作为exc的(令牌错误、语法错误)除外:
-->315 raise SYMBIFYERROR('无法分析%r'%a,exc)
316
317返回表达式
SympifyError:表达式“无法在0x7fdf3eca9e60>处分析u”的Sympify失败,原因是正在处理异常
引发:语法错误:无效语法(,第1行)
知道我的错在哪里吗
提前感谢。您不能将SciPy函数与SymPy一起使用。SciPy函数是数值函数,而SymPy仅与符号函数(即SymPy本身内部的函数)一起使用。将其包装在
lambda
中不会改变这一点
您需要做的是从Symphy导入hankel2
,然后使用它
>>> from sympy import hankel2, symbols, diff
>>> x = symbols('x')
>>> diff(hankel2(1, x), x)
hankel2(0, x)/2 - hankel2(2, x)/2
如果要绘制此图,可以使用sympy.plot
函数。或者,可以使用scipy with将其转换为数值函数
l = lambdify(x, diff(hankel2(1, x), x), {'hankel2': scipy.special.hankel2})
并将其与绘图库一起使用,如maptlotlib
(看起来hankel2是一个复杂的函数,我认为Symphy的plot
现在处理得不太好,因此您可能更喜欢此选项)