如何获得具有辛比的广义拉盖尔多项式的二阶导数?

  • 本文关键字:多项式 何获得 python sympy
  • 更新时间 :
  • 英文 :


我可以得到导数的表达式,但它不适用于n = 0,1,因为n应该是>= 0,而在导数中有L(n-2,2,r(。考虑到当 L 是显式形式时很容易获得它,如何使用 sympy 计算它?

更新:我的代码。所以我不能用 l = 0 代替 chiLambdified。

import sympy as sym
from sympy.utilities.lambdify import lambdify
from sympy.functions.special.gamma_functions import gamma as SymG
from sympy import assoc_laguerre as SymL
from sympy import factorial as SymFactorial
from sympy import exp as SymExp
r, l, beta = sym.symbols('r, l, beta', real = True)
def chifD(r, l, beta):
return sym.sqrt( SymFactorial(l)*beta**3/(SymG(3 + l))) * r * SymL(l,2, beta * r) * SymExp(- beta * r / 2 )
def chiD(r, l, beta):
return sym.diff(chifD(r ,l, beta), r, r)
chiLambdified = sym.lambdify((r, l, beta), chiD(r, l, beta), 'sympy')

0 或 1 阶多项式的二阶导数为零。
您可以按如下方式显示它。

# Calculating the third order differential of 
# a second order polynomial: yields a zero
diff(3*x**2 + 2, x, 3)

使用sympy计算一阶和二阶导数。

from sympy import Symbol, Function, diff
x = Symbol("x")
dydx = diff(3*x**2 + 2, x, 1)
d2ydx2 = diff(3*x**2 + 2, x, 2)
dydx, d2ydx2

输出

(6*x, 6)

如果要使用函数:

f = Function("f")(x)
n = 2 # order of derivative
d2ydx2 = diff(f, x, n).subs(f, 3*x**2 + 2).doit()

另一个使用特殊函数的例子:

import 
Lgr = sympy.polys.orthopolys.laguerre_poly
Lgr(2, x=x), diff(Lgr(2, x=x), x, 2), diff(Lgr(2, x=x), x, 3), diff(Lgr(1, x=x), x, 2)

输出

(3*x**2/2 - 1/2, 1, 0, 0)

最新更新