Polynômes de Legendre comme fonctions propres dans l’espace des polynômes primitives

P Reinhardt, LCT, UPMC

Clear["Global`*"]

Le problème

Nous avons l’opérateur de différentiation 
(1-(x^2))((d^2)/(dx^2))-2x(d/dx)-((m^2)/((1-(x^2))))
pour générer les polynômes de Legendre comme vecteurs propres dans la base des polynômes primitives. Le produit scalaire est défini comme (∫_(-1)^1)f(x)g(x)dx pour exprimer l’orthonormalité.
La base des polynômes primitives 1, x, etc n’est pas une base orthogonale. Nous allons alors resoudre le système d’équations valeur propre dans une base non-orthogonale.

Ce calcul est numériquement stable jusqu' à l' ordre 8. On utilise des coupures par Chop[]

La base des polynômes

npolys=4

X=x^(Range[npolys]-1)

Matrice de recouvrement et (S^(-1/2))

S[i_,j_]:=Integrate[X[[i]]X[[j]],{x,-1,1}]
Overlap=N[Array[S,{npolys,npolys}]];
MatrixForm[Overlap]

On forme (S^(-1/2))par diagonalisation, filtrage, reconstitution, repassage dans la base d’origine

Chop[]  enlève les petits nombres de l’ordre 10^-17 générés par la précision numérique

P=Transpose[Eigenvectors[Overlap]];
Tmp=Chop[Inverse[P].Overlap.P]
diag=Table[1/Sqrt[Tmp[[i,i]]],{i,1,npolys}]
f[i_,j_]:=0.
A=Array[f,{npolys,npolys}]
Do[A[[i,i]]=A[[i,i]]+diag[[i]],{i,1,npolys}]
A//MatrixForm
Smdemi=P.A.Inverse[P];

Smdemi//MatrixForm

Vérification que c’est bien (S^(-1/2))

Chop[Smdemi.Overlap.Smdemi]//MatrixForm

Opérateur différentiel, appliqué sur la base des polynômes primitifs

Ax[n_]:=-((1-x^2)D[X[[n]],{x,2}]-2x D[x^(n-1),x])//Simplify

AX=Ax[Range[npolys]]//Simplify

La matrice de l' opérateur dans la base des polynômes

XAX[i_,j_]:=Integrate[X[[i]] AX[[j]],{x,-1,1}]
Mat=Array[XAX,{npolys,npolys}];
Mat//MatrixForm

Solution du problème valeur propre

Mattrf=Smdemi.Mat.Smdemi

Chop[Eigenvalues[Mattrf]]//Simplify
Polys=Chop[Reverse[Transpose[Smdemi.Transpose[Eigenvectors[Mattrf]]].X]]

Normalisation de la solution

nfac=Polys/.x->1

Polys=Polys/nfac//Simplify

Le résultat final

Polys//Simplify//TableForm