SymPy求xⁿ的n阶导数未得阶乘结果,如何解决?
SymPy求xⁿ的n阶导数实现方法
你的代码无法得到sp.factorial(n)的原因是没有给符号n添加正整数约束,SymPy无法自动识别n的取值范围来化简导数表达式。
修正后的代码
import sympy as sp # 定义符号,为n添加正整数约束 x = sp.symbols('x') n = sp.Symbol('n', integer=True, positive=True) f = x**n # 计算n阶导数并化简 nth_derivative = sp.simplify(f.diff((x, n))) print(nth_derivative) # 输出 factorial(n)
原理说明
xⁿ的n阶导数展开为:
n*(n-1)(n-2)...*1 = n!
SymPy只有在明确n是正整数时,才会将这个连乘积化简为factorial(n)。如果仅定义n为整数(不限制正),SymPy会保留更通用的Gamma函数形式gamma(n+1)(因为Gamma函数是阶乘的延拓,gamma(n+1)=factorial(n)对正整数n成立)。
内容的提问来源于stack exchange,提问作者lukas kiss
相关产品推荐
相关产品推荐

