from sage.all import *
def legendre_p(n, x, a = -1, b = 1):
- """
+ r"""
Returns the ``n``th Legendre polynomial of the first kind over the
interval [a, b] with respect to ``x``.
sage: a = -pi
sage: b = pi
sage: def inner_product(v1, v2):
- ... return integrate(v1*v2, x, a, b)
- ...
+ ....: return integrate(v1*v2, x, a, b)
sage: def norm(v):
- ... return sqrt(inner_product(v,v))
- ...
+ ....: return sqrt(inner_product(v,v))
sage: def project(basis, v):
- ... return sum( inner_product(v, b)*b/norm(b)**2
- ... for b in basis)
- ...
+ ....: return sum( inner_product(v, b)*b/norm(b)**2
+ ....: for b in basis)
sage: f = sin(x)
sage: legendre_basis = [ legendre_p(k, x, a, b) for k in xrange(4) ]
sage: proj = project(legendre_basis, f)