我有以下功能:
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
,问题就出现了。我希望能找到解决这个问题的方法。
最佳答案
似乎您必须首先将 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))
关于python - 计算函数在某一点的导数 Python 2.7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45097452/