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>.

  1. Construire un anneau de polynômes d'une indéterminée. On utilisera les fonctions RationalField et PolynomialRing.
  2. É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).
  3. É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.
  4. É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).
  5. 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.
  6. 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

Valid HTML 4.01!