我有以下功能:
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
并出现问题。我希望能解决这个问题。
答案 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))