Intégration symbolique par création télescopique
TD du cours de Calcul formel, Frédéric Chyzak,
Décembre 2004
Il s'agit dans ce TD d'implanter l'algorithme de Fasenmyer donné en
cours pour la sommation symbolique hypergéométrique paramétrée.
Par simplicité, on se limite à des suites
hypergéométriques hn,k en deux indices,
n et k, la sommation portant sur k.
Tout au long du sujet, on testera sur les deux exemples suivant :
-
somme du binôme : Rn:=(n+1)/(n+1-k); Rk:=(n-k)/(k+1);
S:=[<i,j>:i in [0..1],j in [0..1]];
-
identité de Dixon : Rn:=((n+1)/(n+1-k))^3;
Rk:=-((n-k)/(k+1))^3; S:=[<i,j>:i in [0..3],j in [0..3];
On suivra les étapes de programmation suivantes :
-
Construire le corps des fractions rationnelles en n
et k. On utilisera les fonctions
RationalField et FunctionField.
-
Écrire des fonctions DecalageN, DecalageK et
DecalageInverseK réalisant respectivement les décalages
n devient n+1,
k devient k+1,
k devient k-1 sur une fraction
rationnelle. On utilisera la fonction hom.
-
Écrire une fonction Facteur qui prend en entrée les deux
fractions rationnelles
Rn(n,k) = hn+1,k / hn,k
et Rk(n,k) = hn,k+1 / hn,k
associées à une suite hypergéométrique et donc supposées vérifier la
relation de commutation
Rn(n,k+1) Rk(n,k) = Rk(n+1,k) Rn(n,k),
ainsi que deux entiers positifs i et j, et
renvoie la fraction
hn+i,k+j / hn,k.
-
Écrire une fonction Fasenmyer qui prend en entrée les
deux fractions rationnelles Rn
et Rk et un ensemble S de
paires (i,j) et appliquer l'algorithme de Fasenmyer pour
la suite hypergéométriques représentée par Rn
et Rk relativement au
support S. L'ensemble sera simplement représenté par
une séquence Magma. On pourra procéder comme suit :
-
calculer les fractions
hn+i,k+j / hn,k pour
les (i,j) de S, intervenant dans la mise
en équation
∑(i,j)∈S φi,j(n)
hn+i,k+j / hn,k = 0 ;
-
déterminer leur dénominateur commun. On utilisera les fonctions
Denominator et Lcm ;
-
déduire l'équation à coefficient polynomiaux
∑(i,j)∈S φi,j(n)
pi,j(n,k) = 0
régissant les φi,j. On utilisera la
fonction Numerator ;
-
retirer un éventuel contenu commun des
coefficients pi,j de l'équation. On
utilisera la fonction Gcd ;
-
calculer le degré en k maximal des
coefficients pi,j de l'équation. On
utilisera les fonctions Degree
et Maximum ;
-
construire et résoudre le système linéaire auquel satisfont les
coefficients φi,j. Plus précisément, on
construira une matrice dont chaque ligne donne les coefficients
en k de l'une des
entrées φi,j de S, extraits
par degrés croissants et on recherchera les vecteurs lignes qui,
multipliés à gauche de la matrice, produisent une combinaison linéaire
nulle des lignes de la matrice. On utilisera les fonctions
Coefficient, Matrix, NullSpace,
et Basis ;
-
pour chaque vecteur ligne
(φi1,j1,...,φis,js)
de la base de solutions, construire les sommes sur j
des φi,j, et normaliser la famille de
récurrences
∑i
∑j t.q. (i,j)∈S φi,j(n)
∑k hn+i,k = 0
obtenues, de façon à renvoyer la récurrence
sur ∑k hn,kd'ordre
minimal représentée par le vecteur de ses coefficients. On utilisera
la fonction EchelonForm.
Last modified: Wed Dec 8 16:30:13 CET 2004