Calcul formel : Mode d'emploi - Exemples en Maple

Claude Gomez, Bruno Salvy, Paul Zimmermann

Masson, 1995

Chapitre VI, section 1.4, exercice 3, page 155.

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


Le point crucial est le fait que la fraction rationnelle proposée [Maple Math] n'a que des pôles simples. Il en résulte que sa décomposition en éléments simples s'écrit [Maple Math], où la somme porte sur les pôles [Maple Math] de la fraction. Le coefficient [Maple Math] est le résidu de la fraction en le pôle [Maple Math] et il est donné par la formule [Maple Math].

Le polynôme cherché est le polynôme [Maple Math] dont les racines sont les [Maple Math]. Dire que [Maple Math] est racine de [Maple Math], c'est dire qu'il existe une racine commune au deux équations [Maple Math] et [Maple Math]. Il suffit donc de prendre pour [Maple Math], le résultant [Maple Math]. Nous avons réduit la première équation au même dénominateur car le résultant s'applique à deux polynômes. Il ne reste plus qu'à mettre ce résultat en pratique.

> R:=(x^9+1)/(x^10-1);

[Maple Math]

> A:=numer(R):
B:=denom(R):

> F:=resultant(z*diff(B,x)-A,B,x);

[Maple Math] [Maple Math]

Il est tentant de vérifier le résultat. On peut procéder comme suit. On décompose la fraction en employant convert/fullparfrac (qui a le mérite de travailler symboliquement et uniquement à l'aide de calculs de pgcd). Ensuite on explicite la décomposition en s'appuyant sur allvalues ; la transformation réussit parce que l'exemple est simple. La procédure unlikely est tirée de [DuGo97, page 119].

> dec:=convert(R,fullparfrac,x);

[Maple Math] [Maple Math]

> unlikely:=proc(s) 
local sf;
if has(s,Sum) then
if op(0,s)=Sum and has(op(2,s),RootOf) then
add(sf,sf={allvalues(subs(op(2,s),op(1,s)))})
else map(unlikely,s)
fi
else s
fi
end: # unlikely

> DEC:=unlikely(dec);

[Maple Math] [Maple Math] [Maple Math]

Il ne reste plus qu'à extraire chaque résidu et à vérifier qu'il est bien racine du polynôme obtenu.

> for i in DEC do 
n:=remove(has,i,x);
evalc(subs(z=n,F))
od;

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

Il est important de noter que la vérification que nous venons d'effectuer est en général impossible parce qu'on ne sait pas résoudre explicitement les équations algébriques. Par contre la première partie, fondée sur l'emploi du résultant, est valable quel que soit le degré des polynômes mis en jeu. La seule hypothèse que nous avons utilisée est le fait que les pôles de la fraction sont simples. Ceci se vérifie par un calcul de pgcd et, à nouveau, ce calcul de pgcd est possible quel que soit le degré.

Retour en page principale