Intégration symbolique des fractions rationnelles
TD du cours de Calcul formel, Frédéric Chyzak,
Novembre 2004
Il s'agit dans ce TD d'implanter les algorithmes du cours pour
l'intégration des fractions rationnelles.
Par simplicité, les fractions rationnelles en entrée des fonctions
demandées seront données par deux arguments polynomiaux, numérateur et
dénominateur. On rappelle que Magma note ses séquences d'objets d'un
même univers avec des crochets, par exemple
[x,x2,x-1,-4*x], et ses paires, triplets,
n-uplets, éléments de produits cartésiens finis d'univers,
avec des piquants, par exemple
<"Frédéric","Chyzak",30,12,1971>.
-
Construire un anneau de polynômes d'une indéterminée. On utilisera
les fonctions RationalField et
PolynomialRing.
-
Écrire une fonction intPoly qui prend en entrée deux
polynômes g et f représentant la
fraction g/f, extrait et intègre la partie polynomiale
de l'intégrale de cette fraction rationnelle, et renvoie la partie
polynomiale toute intégrée ainsi que le numérateur r
donnant le reliquat r/f à intégrer. On pourra utiliser
les fonctions Quotrem et Integral, ou bien
tout reprogrammer à partir des opérateurs div,
mod et des fonctions Coefficient,
&+ et Degree ;-). Tester sur la
fraction rationnelle (x2+1)/(x+2).
-
Écrire une fonction intHermite qui prend en entrée deux
polynômes r et f représentant la
fraction r/f et lui applique l'algorithme de réduction
de Hermite. La sortie demandée est d'une part la séquence des
fractions rationnelles toutes intégrées obtenues au cours de
l'algorithme et d'autre part la séquence des parties logarithmiques
restant à intégrer obtenues au cours de l'algorithme. On utilisera
les fonctions SquareFreePartialFractionDecomposition,
Derivative, XGCD, Parent
et cat. Tester sur la fraction
rationnelle x/(x2+1)2.
-
Écrire une fonction intRT qui prend en entrée deux
polynômes a et b représentant la
fraction a/b et lui applique l'algorithme de
Rothstein-Trager. Il est demandé de ne faire aucune extension des
constantes, le corps algébrique de coefficients devant être fourni par
l'utilisateur comme corps de coefficients des polynômes en entrée.
Soit l'intégration est possible avec ce corps de constantes, et on
demande de renvoyer la séquence de
paires (ci,vi), soit l'intégration
est impossible et on renverra la paire constituée d'un message
d'erreur et de la factorisation du résultant. On utilisera les
fonctions Derivative, Parent,
PolynomialRing, Coefficient,
hom, Resultant,
LeadingCoefficient, Factorization,
&or, Degree, GCD
et Roots. Tester sur les fractions rationnelles
1/(x2+1) et 1/(x3+x).
-
Enfin, écrire une fonction integration qui prend en
entrée deux polynômes g et f représentant la
fraction g/f et en calcule une primitive à l'aide des
fonctions précédentes. La fonction renverra la partie polynomiale
intégrée, la séquence des parties rationnelles intégrées, la séquence
des paires de coefficients et arguments de la partie logarithmique
intégrée. Tester sur la fraction rationnelle
1/(2x2+1)2.
-
Reprendre cette dernière intégration, mais cette fois sur le corps de
constantes Q[21/2i]. On utilisera les
fonctions RationalField, PolynomialRing
et NumberField.
Last modified: Tue Dec 7 14:10:21 CET 2004