def bp(nu, theta, phi, sigma, l, sigmap, lp, i_n, i, delta): return (b(l, lp, i_n, i, delta, nu) * legendre(nu, cos(theta)) + 1/(1 + delta**2) * cos(2 * phi) * assoc_legendre(nu, 2, cos(theta)) * (f(l, l, i_n, i, nu) * (-1)**sigma * kappa(nu, l, l) + (-1)**(l + lp) * 2 * delta * f(l, lp, i_n, i, nu) * (-1)**sigmap * kappa(nu, l, lp) + delta**2 * f(lp, lp, i_n, i, nu) * (-1)**sigmap * kappa(nu, lp, lp)))
def test_special_polynomials(): assert mcode(hermite(x, y)) == "HermiteH[x, y]" assert mcode(laguerre(x, y)) == "LaguerreL[x, y]" assert mcode(assoc_laguerre(x, y, z)) == "LaguerreL[x, y, z]" assert mcode(jacobi(x, y, z, w)) == "JacobiP[x, y, z, w]" assert mcode(gegenbauer(x, y, z)) == "GegenbauerC[x, y, z]" assert mcode(chebyshevt(x, y)) == "ChebyshevT[x, y]" assert mcode(chebyshevu(x, y)) == "ChebyshevU[x, y]" assert mcode(legendre(x, y)) == "LegendreP[x, y]" assert mcode(assoc_legendre(x, y, z)) == "LegendreP[x, y, z]"
def test_Function(): assert mcode(sin(x)**cos(x)) == "sin(x).^cos(x)" assert mcode(sign(x)) == "sign(x)" assert mcode(exp(x)) == "exp(x)" assert mcode(log(x)) == "log(x)" assert mcode(factorial(x)) == "factorial(x)" assert mcode(floor(x)) == "floor(x)" assert mcode(atan2(y, x)) == "atan2(y, x)" assert mcode(beta(x, y)) == 'beta(x, y)' assert mcode(polylog(x, y)) == 'polylog(x, y)' assert mcode(harmonic(x)) == 'harmonic(x)' assert mcode(bernoulli(x)) == "bernoulli(x)" assert mcode(bernoulli(x, y)) == "bernoulli(x, y)" assert mcode(legendre(x, y)) == "legendre(x, y)"
from matplotlib import cm from matplotlib.ticker import LinearLocator, FormatStrFormatter from matplotlib import animation, rc from IPython.display import HTML #init_printing(use_unicode=True) #x, y, z, u, v, r = symbols('x y z, u, v, r') from sympy.abc import x, y, r, n, k, m #k, m, n = symbols('k m n', integer=True) #f, step, potential = symbols('f step potential', cls=Function) #var('n m x') #theta = Symbol("theta") #phi = Symbol("phi") ## Luego probamos que las definiciones funcionan correctamente con algunos ejemplos: sp.legendre(3, x) #sp se refiere a simpy.functions print(sp.legendre(3, x)) ## Podemos por ejemplo integrarlos (o diferenciarlos, o hacer otras operaciones con ellos), por ejemplo: integrate(sp.legendre(5, x), x) #integrate es una función que importamos desde sympy print(integrate(sp.legendre(5, x), x)) ## Por ejemplo podemos probar una de las fórmulas más útiles para hacer integrales usando los polinomios de Legendre:dP_(l+1)/dx − dP_(l−1)/dx − l(l+1)P_l = 0. ## Solo se puede constatar la fórmula para valores particulares (no la sabe simplificar completamente). Poner cualquier valor entero positivo (>1) para k. k = 5 diff(sp.legendre(k + 1, x), x) - diff(sp.legendre(k - 1, x), x) - (2 * k + 1) * sp.legendre(k, x) #diff es una función importada desde sympy