Calcul formel : Mode d'emploi - Exemples en Maple

Claude Gomez, Bruno Salvy, Paul Zimmermann

Masson, 1995

Chapitre V, section 2.5, exercice 2, page 137.

Philippe.Dumas@inria.fr
http://algo.inria.fr/dumas/Maple/

Page du Projet Algorithmes | Page de Philippe Dumas | Page Maple de Philippe Dumas

Retour en page principale
Table des matières
Index
Maple V.4 worksheet
Maple V.5 worksheet


Un développement suivant la dernière colonne donne tout de suite la récurrence cherchée. D'ailleurs ce procédé fonctionne pour toutes les matrices tridiagonales, mais le fait que la récurrence soit à coefficients constants demande que sur une parallèle à la diagonale tous les coefficients soient égaux.

> rec:={u(1)=x,u(2)=x^2-1,u(n+1)=x*u(n)-u(n-1)};

[Maple Math]

Vérifions que nous sommes dans le vrai en testant la récurrence sur les premiers entiers.

> dim:=10:

> for d to dim do 
A[d]:=array(1..d,1..d,sparse);
for i to d-1 do A[d][i,i+1]:=1 od;
for i to d do A[d][i,i]:=x od;
for i from 2 to d do A[d][i,i-1]:=1 od;
od:

> for d to dim do 
Delta[d]:=linalg[det](A[d])
od;

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

> for d from 3 to dim do collect(Delta[d]-x*Delta[d-1]+Delta[d-2],x) od;

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

Rassurés nous tentons la résolution.

> U:=rsolve(rec,u(n));

[Maple Math]

Un déterminant est une fonction polynôme par rapport aux coefficients de la matrice et ici les coefficients sont des polynômes en x. Il est donc clair que les déterminants considérés sont des polynômes en x. Ceci n'apparaît pas explicitement sur l'expression précédente. Nous transformons donc pas à pas et pour les premiers entiers le résultat obtenu de manière à mettre en valeur le caractère polynomiale de l'expression. Il semble normal d'appeler simplify/radical.

> for nn to 2 do simplify(subs(n=nn,U),radical,symbolic) od;

[Maple Math]

[Maple Math]

Cependant le domaine préféré d'un système de calcul formel est celui des fractions rationnelles. Nous nous ramenons donc à cette situation.

> for nn to 2 do subs(n=nn,(x^2-4)^(1/2)=y,(x^2-4)^(-1/2)=1/y,U) od;

[Maple Math]

[Maple Math]

> for nn to 2 do expr[nn]:=normal(subs(n=nn,(x^2-4)^(1/2)=y,(x^2-4)^(-1/2)=1/y,U),expanded) od;

[Maple Math]

[Maple Math]

> for nn to 2 do subs(y=sqrt(x^2-4),expr[nn]) od;

[Maple Math]

[Maple Math]

> for nn to 2 do normal(subs(y=sqrt(x^2-4),expr[nn]),expanded) od;

[Maple Math]

[Maple Math]

Ayant trouvé le bon chemin, nous appliquons la séquence de calcul sur une plus grande échelle.

> for nn to dim do
normal(subs(y=sqrt(x^2-4),
normal(subs(n=nn,(x^2-4)^(1/2)=y,(x^2-4)^(-1/2)=1/y,U),expanded)),
expanded)
od;

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

Nous avons bien retrouvé les expressions rencontrées au début. Cependant ceci ne nous donne pas l'expression générale. Il n'est pas besoin d'être grand clerc pour reconnaître des coefficients binomiaux dans les polynômes ci-dessus. Ceci n'est pas étonnant puisque l'expression U est la somme des puissances nièmes de deux quantités conjuguées. Le calcul suivant a le mérite de mettre en valeur ces coefficients binomiaux.

> C:=array(1..dim,1..dim,sparse):
for nn to dim do for i to nn do C[nn,i]:=coeff(Delta[nn],x,i) od od:

> print(C);

[Maple Math]

Le lecteur n'aura pas de mal à deviner l'expression générale des polynômes considérés et à fournir une preuve que ses vues sont justes.

Notons pour finir que l'apport du logiciel est relativement limité ici. Cet exercice classique se traite à la main et l'aide apportée est contrebalancée par des problèmes de simplification que le calculateur humain résout aisément.

Retour en page principale