在Python 2.7点评估函数的导数

时间:2017-07-14 07:44:15

标签: python sympy

我有以下功能:

import sympy as sp
def inverted(q, m, a, nu):
    return (-1)**(m+1)*(a/m)**m*sp.exp(m)*q**(-nu)*sp.diff(1/(sp.sqrt(a**2+q**2))*(sp.sqrt(a**2+q**2)-a)**(nu), a, m+1)

我想定义一些lambda函数,以便

f100 = lambda a, q: inverted(q, 100, a, 0)

但是,当我尝试检查时

q = sp.symbols('q')
f100(1000.0, q)

我得到以下输出:

ValueError: 
Can't calculate 101st derivative wrt 10.

显然,正在发生的事情是,当我致电f100(1000.0, q)时,该功能会返回inverted并出现问题。我希望能解决这个问题。

1 个答案:

答案 0 :(得分:2)

好像你必须先让a成为一个变量才能使diff正常工作。如果您之前修复a(我认为因为您区分a),它就不起作用。您可以随后用a替换1000

import sympy as sp
def inverted(q, m, a, nu):
    return (-1)**(m+1)*(a/m)**m*sp.exp(m)*q**(-nu)*sp.diff(1/(sp.sqrt(a**2+q**2))*(sp.sqrt(a**2+q**2)-a)**(nu), a, m+1)

f100 = lambda a, q: inverted(q, 100, a, 0)

q, a = sp.symbols('q, a')
print(f100(a, q).subs(a, 1000))