Generador de Polinomios de Legendre
Este pequeño programa calcula los polinomios de Legendre por el método de Frobenius.
Debe elegir la variable grado, que debe ser el punto de truncamiento de la Serie de Taylor y
GradoMax el orden de la ecuación de Legendre,para un buen resultado GradoMax+2<=grado
grado:=20:GradoMax:=18:
assume(n in Z_)
assumeAlso(n>0)
a:=array(0..grado):
eqcoef:=array(0..grado):
Legendre:=array(1..GradoMax):
Incog:=[a[i] $ i = 0..grado];
y:=sum(a[n]*x^n,n=0..grado):
for GradoPol from 1 to GradoMax do
eq:=diff((1-x^2)*diff(y,x),x)+GradoPol*(GradoPol+1)*y:
if mods(GradoPol,2)=0 then
eqcoef[0]:=a[1]=0
else
eqcoef[0]:=a[0]=0
end_if:
eqcoef[1]:=a[GradoPol]=(2*GradoPol)!/(2^GradoPol*(GradoPol!)^2):
for i from 2 to grado do
eqcoef[i]:=coeff(eq,x,i-2)=0:
end_for:
Ecuaciones:=coerce(eqcoef,DOM_LIST):
Var:=solve(Ecuaciones,Incog):
Legendre[GradoPol]:=subs(y,op(Var,1)):
end_for
Legendre
plot(Legendre[k] $ k=1..GradoMax,x=-1..1)
eqcoef
int(Legendre[1]*Legendre[1]*sqrt(1-x^2),x=-1..1)