ICOM Normal.dot for Word 6.0

Transcription

ICOM Normal.dot for Word 6.0
Introduction
au Calcul Formel
Philippe Fortin
Vous trouverez dans la première partie de ce document des éléments permettant de mieux maîtriser
l'utilisation d'outils de calcul formel, afin en particulier d'éviter bon nombre d'erreurs classiques.
La seconde partie est consacrée à une étude plus approfondie des méthodes de représentations des
expressions mathématiques ainsi qu'à la mise en œuvre de certains algorithmes effectivement utilisés
par les logiciels de calcul formel.
De nombreux exemples, issus de l'utilisation de Maple et du logiciel de calcul formel de la TI-89 et
TI-92 Plus, permettent d'illustrer les points les plus importants.
Sommaire
Possibilités et limites d'une calculatrice
2
La simplification des expressions
5
Les risques de la simplification automatique…
8
Le domaine utilisé pour les calculs
11
La comparaison de deux expressions
15
La fiabilité des calculs
17
L'exemple de la résolution des équations
19
La représentation d'une expression
20
La fonction part
22
Un exemple complet d'utilisation de part : la dérivation
24
Disposer d'un bon outil ne dispense pas de réfléchir !
30
Le calcul formel pas à pas
32
Bases de Gröbner
37
Possibilités et limites d'une calculatrice
Nous allons découvrir dans la suite de ce document de nombreuses particularités liées à l'utilisation
d'un système de calcul formel.
Comme nous le verrons, certains de ces points conduisent parfois à la production de résultats erronés,
ou plus exactement, pouvant donner lieu à des interprétations erronées.
Avant d'aborder cette partie, il n'est peut-être pas inutile de rappeler que l'utilisation de n'importe quel
outil de calcul, y compris purement numérique, peut causer des erreurs liées à la façon dont seront
traitées les données. Seule une connaissance minimale de certaines particularités de fonctionnement
des calculatrices numériques et graphiques permet de les interpréter correctement.
Erreur numérique lors d'un calcul isolé
Une calculatrice numérique ne peut pas manipuler de nombres réels dont le développement décimal
n'est pas limité à 12, 13 ou 14 décimales (suivant les modèles).
De ce fait, des calculs simples comme 3*(1/3) peuvent éventuellement conduire à des résultats
inexacts.
L'arrondi effectué lors de l'affichage du résultat peut dans certains cas masquer le problème, mais on
peut facilement le mettre en évidence.
Dans l'écran suivant, les trois premiers calculs sont effectués en mode approché, et la TI-92 se
comporte comme une calculatrice ordinaire.
Les trois derniers calculs sont effectués sous forme symbolique, ce qui fait naturellement disparaître le
problème.
En particulier, il ne faudra jamais tester l'égalité de deux nombres décimaux dans un programme, il est
largement préférable d'utiliser un test pour voir si la valeur absolue de la différence de ces nombres est
bien inférieure à une certaine valeur.
Imaginons par exemple un programme chargé de résoudre les équations du second degré.
Typiquement, un tel programme va comporter un test sur les valeurs de delta.
Que va-t-il se passer avec l'équation x 2 + 2 2 x + 2 = 0 ?
Si l'on calcule un discriminant associé à une équation de ce type, suivant la calculatrice utilisée, il est
tout à fait possible d'obtenir un résultat non nul, éventuellement négatif !
On va retrouver la même situation dans d'autres cas, comme par exemple pour l'étude de la colinéarité
de deux vecteurs.
Certaines machines "trichent" un peu et arrondissent les résultats très petits... ce n'est bien sûr qu'une
solution très approximative, et qui peut conduire à d'autres erreurs... (par exemple lorsque l'on étudie si
une matrice est inversible à partir de la valeur de son déterminant...).
Cumul d'erreurs
Naturellement ce type d'erreur va avoir des conséquences encore plus importantes si l'on effectue des
calculs en cascades, comme par exemple lors d'un calcul des valeurs des termes d'une suite définie par
récurrence. Le résultat final est parfois totalement incorrect.
3
T © Texas Instruments
Introduction au calcul formel
2/46
Ce point est étudié plus en détail dans le document présentant l'étude de la suite un+1 = (n + 1)un − 1 avec
u0 = e − 1 .
On peut montrer que cette suite possède une limite nulle, alors que l'on obtient des résultats totalement
aberrants, et contradictoires d'un modèle à l'autre, lorsque l'on tente de faire un calcul numérique des
termes de cette suite.
Représentations graphiques chaotiques...
On peut être tenté de "se faire une idée" de la valeur d'une limite en utilisant sa calculatrice.
10
a f lne1x+10x j .
Considérons par exemple f x =
Quelle est la limite de cette fonction quand x tend vers 0 ?
Une étude à partir de la représentation graphique (sur [-0.1, 0.1]) ou de la table des valeurs a de quoi
nous laisser perplexes !
Comment interpréter tout cela ? C'est facile si on sait par exemple que 1 + 10 −14 sera arrondi à 1, que le
logarithme de cette expression sera donc égal à 0, et que la division par 10 −14 ne changera rien à cela !
3
T © Texas Instruments
Introduction au calcul formel
3/46
Une étude formelle permet heureusement de rétablir un résultat correct :
Nous allons dans la suite de ce document tenter de mieux comprendre certaines particularités de
l'utilisation des logiciels de calcul formel.
Pour cela nous devrons approfondir un peu certains aspects parfois un peu techniques de ces logiciels.
Comme dans les premiers exemples numériques de cette section, il est indispensable de les connaître si
l'on souhaite pouvoir correctement maîtriser, et être en mesure d'interpréter les résultats fournis par un
logiciel de calcul formel.
3
T © Texas Instruments
Introduction au calcul formel
4/46
La simplification des expressions
Un des problèmes que l'on rencontre très vite lorsque l'on manipule un logiciel de calcul formel, que
ce soit sur une calculatrice ou un ordinateur concerne la forme parfois inattendue d'un résultat, qui,
bien que correct, n'est pas exprimé sous la "forme simplifiée" à laquelle on s'attendait.
Nous allons revenir à plusieurs reprises sur cette question dans ce document, mais il est important de
mesurer très vite la complexité des problèmes soulevés par cette question.
Pour commencer, il faut absolument comprendre qu'il est bien difficile lorsque l’on fait des calculs sur
des expressions symboliques de définir ce qu’est la forme simplifiée d’une expression.
La plus simple à utiliser… pourrait-on être tenté de répondre.
Commençons par un exemple simple, lié à l'étude des fonctions polynômes. Lorsqu'il s'agit de calculer
les valeurs d'un polynôme en un point, on peut convenir que la forme simplifiée est la forme qui
nécessite un minimum d'opérations.
Par exemple, pour calculer les valeurs du polynôme
af
p x = 243 x 5 + 405 x 4 + 270 x 3 + 90 x 2 + 15 x + 1
c'est à dire de
af
p x = 243 ⋅ x ⋅ x ⋅ x ⋅ x ⋅ x + 405 ⋅ x ⋅ x ⋅ x ⋅ x + 270 ⋅ x ⋅ x ⋅ x + 90 ⋅ x ⋅ x + 15 ⋅ x + 1
on doit, a priori, effectuer 15 multiplications et 5 additions.
Une idée classique consiste à utiliser une forme équivalente de l'expression, mais moins coûteuse lors
que l'on souhaite effectuer des calculs. La méthode de Horner consiste à écrire ce polynôme sous la
forme :
af
a
e c b
f g h j
p x = 1 + 15 + 90 + 270 + 405 + 243 ⋅ x ⋅ x ⋅ x ⋅ x ⋅ x .
Il ne faut pas se laisser abuser par la présence de nombreuses parenthèses. Cette expression est
effectivement moins coûteuse en calculs que l'expression initiale du polynôme. Il suffit maintenant de
calculer 5 produits et 5 sommes
Cet exemple est une première illustration de l'existence de méthodes de calcul spécialement
développées en vue de l'utilisation de systèmes informatiques.
Un élève peut très bien terminer sa scolarité au lycée sans avoir jamais écrit une fonction polynôme
sous cette forme, et sans que cela ne lui pose aucun problème.
Dans ce cas particulier, une bien meilleure méthode consiste à factoriser ce polynôme :
af a
f
p x = 3x + 1 5
Cette factorisation est également particulièrement intéressante si l'on veut résoudre l'équation
af
p x =0
ou encore obtenir une forme simplifiée de la fonction dérivée.
Faut-il pour autant en déduire que l'on doit systématiquement rechercher une forme factorisée lorsque
l'on a besoin de faire des calculs de ce type avec des fonctions polynômes ?
Il suffit de prendre par exemple le polynôme défini par
af
q x = x 5 − 32
pour se convaincre du contraire. La forme factorisée (à coefficients entiers) est
af a
fe
q x = x − 2 x 4 + 2 x 3 + 4 x 2 + 8 x + 16
3
T © Texas Instruments
Introduction au calcul formel
j
5/46
et on ne peut pas dire qu'elle soit beaucoup plus efficace lorsqu'il s'agit de calculer des valeurs, ni
même pour une étude de signe, où il est plus simple d'utiliser la monotonie de x
x 5 que d'étudier le
4
3
2
signe du produit x − 2 x + 2 x + 4 x + 8 x + 16 .
a
fe
j
Cet exemple illustre bien la difficulté que pose l'écriture d'un logiciel de calcul formel… il n'existe
bien souvent pas de méthode optimale, utilisable avec toute une catégorie d'objets, et apte à résoudre
dans les meilleures conditions possibles un problème donné.
En ce qui concerne la simplification des expressions, deux types d'attitude sont possibles.
•
Laisser à l'utilisateur un contrôle complet des simplifications à effectuer.
•
Choisir de proposer systématiquement une forme simplifiée relativement optimale.
Maple, par exemple, laisse un contrôle total à l'utilisateur qui peut décider d'utiliser telle ou telle règle
de simplification, tout en en ignorant d'autres.
Dans un quotient comme
Q=
cos 2 x + sin 2 x
ln( 4) − 2 ln(2) + 1
on pourra par exemple choisir d'appliquer les règles de calcul sur les fonctions trigonométriques, ou
celles concernant les logarithmes, ou encore décider d'appliquer toutes les règles de simplification
disponibles :
Considérons à présent l'exemple de l'expression
A=
32
c
5
5 −1 + 5
h
5
+
32
c
5
h
5 1+ 5 5
obtenue lors du calcul du quatrième terme de la suite de Fibonacci en utilisant les méthodes classiques
de calcul des termes d'une suite récurrente double.
Nous savons que les termes de cette suite définie par
un + 2 = un +1 + un
u0 = u1 = 1
sont tous des entiers, ce qui est loin d'être évident avec l'expression précédente.
Il existe donc une forme plus simple de cette expression, que l'on peut d'ailleurs obtenir très
simplement en calculant les premiers termes de la suite.
3
T © Texas Instruments
Introduction au calcul formel
6/46
Voyons comment cette simplification peut être conduite avec Maple :
Cette fois l'utilisation de la fonction simplify n'a pas été suffisante, et on a dû utiliser des fonctions de
mise en forme plus élaborées (normal ou radsimp dans cet exemple), avec les options appropriées
pour parvenir au résultat souhaité.
Il est facile avec ces exemples de comprendre la puissance de Maple dans ce domaine (on peut
intervenir de façon très progressive, en utilisant seulement certaines règles bien précises), mais aussi la
complexité d'utilisation d'un tel système.
Voici à titre d'exemple la liste des options utilisables avec la fonction simplify : BesselI, BesselJ,
BesselK, BesselY, Ei, GAMMA, RootOf, LambertW, dilog, exp, ln, sqrt, polylog, pg pochhammer, trig,
hypergeom, radical, power, "@". Et il existe naturellement d'autres fonctions destinées à mettre en
forme une expression comme par exemple : collect, combine, convert, expand, factor, normal ou
encore radsimp, pouvant elles-mêmes utiliser d'autres options.
À l'inverse, la TI-89 vise à assurer un maximum de facilité à son utilisateur. C'est pourquoi certaines
simplifications seront automatiquement effectuées, comme on peut le voir sur les écrans suivants qui
reprennent nos deux exemples précédents :
Il est bien évident que l'on gagne énormément en simplicité d'utilisation, mais il faut bien voir que l'on
perd en revanche toute possibilité de simplification partielle.
3
T © Texas Instruments
Introduction au calcul formel
7/46
Les risques de la simplification automatique…
Nous avons déjà vu que la notion de forme simplifiée d'une expression est souvent très dépendante du
contexte, et de la suite que l'on souhaite donner aux différents calculs.
Nous allons aborder ici le problème de la validité de ces simplifications, et des conséquences que cela
peut avoir lorsque l'on souhaite par exemple résoudre une équation faisant intervenir des paramètres.
Nous savons tous qu'il existe un moyen simple de déterminer le PGCD de deux polynômes, en
utilisant l'algorithme d'Euclide, et qu'il est donc facile de simplifier une fraction rationnelle.
À partir de là, il est possible de choisir entre deux attitudes très différentes. On peut laisser les
fractions rationnelles telles qu'elles ont été saisies, ou au contraire choisir de les simplifier de manière
automatique.
Il n'existe pas de choix universel en ce domaine. Par exemple, Maple ne fait ces simplifications qu'à la
demande, ainsi que le montre la copie d'écran ci-dessous :
En revanche, la TI-89 et la TI-92 Plus vont automatiquement réaliser ce type de simplifications :
On peut penser que ce deuxième choix va généralement permettre d'obtenir des résultats sous une
forme plus utilisable, mais il faut être conscient que cela va également avoir des conséquences dans
certains cas.
Prenons par exemple le cas de la recherche du numérateur d'une fonction.
Avec Maple, on doit utiliser la fonction numer :
3
T © Texas Instruments
Introduction au calcul formel
8/46
Que se passe-t-il avec une TI-89 si l'on souhaite effectuer le même calcul ?
Pour comprendre ce résultat, on doit savoir que la TI-89 commence toujours par simplifier les
fractions rationnelles.
Lors de l'évaluation de l'expression
getdenum
F x 2 − 1I
GH x − 1 JK
on commence par simplifier le quotient
x2 − 1
x −1
ce qui conduit à x +1 , puis on recherche le numérateur de cette expression.
Dans cet exemple, il était facile de prévoir cette situation.
Il existe par contre des cas où l'on peut obtenir un résultat faux ou incomplet alors que le problème
étudié ne faisait pas, a priori, intervenir des fractions rationnelles.
Considérons par exemple le système
RSmx + y = 1
Tx + my = 1
Il est facile de constater que les deux cas m = 1 et m = −1 devront faire l'objet d'un traitement séparé.
Pour les autres valeurs, on obtient facilement (en utilisant une méthode de résolution par
combinaisons, ou, ce qui est équivalent, les formules de Cramer)
x=y=
m −1
2
m −1
=
1
.
m +1
Comme on peut le voir dans l'écran ci-dessous, c'est bien cette forme simplifiée qui est obtenue par la
TI-89. On risque alors de croire qu'elle est valable pour toutes les valeurs de m autres que −1 , et que
1
l'on obtient en particulier x = y = pour m = 1.
2
L'écran de droite permet de vérifier qu'il n'en est rien : on obtient une infinité de solutions pour m = 1,
et aucune solution pour m = −1.
Il est indispensable de prendre conscience de ce type de problème lorsque l'on manipule un logiciel de
calcul formel.
3
T © Texas Instruments
Introduction au calcul formel
9/46
On peut vérifier que l'on obtient exactement le même type de situation avec Maple :
On peut également constater qu'aucun avertissement ne vient prévenir un utilisateur de la non validité
de certains calculs lors d'une résolution par étapes à partir de l'inverse de la matrice du système :
Cette absence de prise en compte des cas particuliers est une caractéristique essentielle des logiciels de
calcul formel actuels.
3
T © Texas Instruments
Introduction au calcul formel
10/46
Le domaine utilisé pour les calculs
Tous les logiciels de calcul formel travaillent a priori dans l'ensemble des nombres complexes, ce qui
peut poser quelques problèmes lors de l'utilisation de ces outils avec des élèves de lycée ne
connaissant rien à propos de ces nombres.
Considérons par exemple une fonction comme
af
f x =
x −1
x−2
Peut-on calculer la valeur de cette fonction au point x = −3 ?
La réponse est bien évidemment non, si l'on pense à un calcul dans l'ensemble des nombres réels.
Le problème, c'est que la notation x peut avoir également un sens dans l'ensemble des nombres
complexes, et désigner le nombre a, nul si x = 0 ou tel que
• a= x
π π
• arg a = α [2π ] avec α ∈ − ,
et 2α = arg x [2π ]
2 2
pour x ≠ 0 .
af
OP
Q
OP
Q
af
On peut tout de suite remarquer qu'avec cette nouvelle fonction, on a bien
d x i2 = x
mais que l'on n'a pas les mêmes propriétés que la fonction racine carrée classiquement définie dans
l'ensemble des nombres positifs.
Par exemple, avec x et y complexes quelconques, les égalités
x2 = x
ou encore
xy =
x y
ne sont plus vérifiées !
C'est d'ailleurs pour cela que certains mathématiciens avaient décidé d'exclure la notation
(Par exemple pour éviter des calculs du type −1 = −1 × −1 = −1 −1 = 1 = 1 ??? ).
a fa f
−1 .
Il est de la même façon tout à fait possible de définir le logarithme d'un complexe, ou encore l'arcsinus
d'un nombre supérieur à 1…
Revenons au calcul de
af
f x =
x −1
x−2
au point x = −3…
Si l'on se place dans l'ensemble des nombres complexes, on aura
a f
f −3 =
−4 i 4
2
2 5
=
=
=
.
−5 i 5
5
5
Le résultat final, parfaitement réel, ne laisse pas entrevoir la nature complexe des calculs
intermédiaires.
Ce n'est absolument pas une anomalie, et c'est bien dans cet esprit qu'avaient été introduits les
complexes (par exemple pour pouvoir faire certains calculs intermédiaires lors de la résolution d'une
équation du troisième degré… tout en recherchant des solutions qui seraient parfaitement réelles).
3
T © Texas Instruments
Introduction au calcul formel
11/46
Le problème réside seulement dans le risque de confusion que peut faire l'utilisateur du fait de la
similitude de notation entre des fonctions purement réelles, définies sur des intervalles bien
particuliers, et ces fonctions de la variable complexe.
Cette situation est dans une certaine mesure aggravée sur des calculatrices offrant le choix de mode de
fonctionnement réel ou complexe. Il est indispensable de savoir, par exemple dans le cas des TI-89 et
TI-92 Plus, que l'on s'interdit seulement d'afficher un résultat final complexe en mode réel lorsque l'on
traite un problème réel, mais que cela ne signifie pas que tous les calculs intermédiaires ont été faits
dans l'ensemble des réels.
En conséquence, on risque d'obtenir des résultats incorrects lors de l'utilisation des fonctions racines
carrées, logarithme, ou encore trigonométriques inverses lorsque celles-ci ne sont pas utilisées sur leur
ensemble de définition.
La représentation graphique obtenue en bas de cette feuille de calcul Maple a de quoi surprendre bien
des utilisateurs non avertis. C'est pourtant la conséquence logique des simplifications par le nombre
complexe i lorsque x −1 et x − 2 sont tous les deux négatifs.
On retrouve naturellement le même type de situation sur une TI-89 ou sur une TI-92 puisque ces
calculatrices travaillent également dans le corps des complexes.
L'autre problème concerne l'absence d'utilisation, ou au contraire l'utilisation systématique, de
certaines règles de calcul spécifiques aux seuls nombres réels, lorsque l'on utilise des fonctions comme
la conjugaison, la partie réelle, ou encore la partie imaginaire…
a
f
Que se passe-t-il par exemple si l'on cherche à simplifier une expression comme Re x + i y ?
3
T © Texas Instruments
Introduction au calcul formel
12/46
Comme on peut le voir dans la copie d'écran précédente, Maple considère par défaut que les variables
qu'il rencontre sont complexes, ce n'est que lorsque l'on indique explicitement que les variables
manipulées sont des réels que l'on obtient une simplification de l'expression.
Les concepteurs de la TI-89 ont choisi un point de vue différent. Par défaut, toutes les variables
symboliques non affectées sont réelles.
a
f
Cela permet d'obtenir la simplification d'expression comme Re x + iy ou encore
x + iy
.
x − iy
Lorsque l'on souhaite manipuler une variable symbolique complexe, et éviter l'utilisation de règles de
simplification spécifiques aux variables réelles, il faut lui donner un nom se terminant par le caractère
_ qui indique au système la nature particulière de cette variable.
Il faut enfin savoir que certaines fonctions ne donneront pas la même valeur suivant que l'on est en
mode réel ou complexe. Calculons par exemple la racine cubique de -8 avec Maple :
Ce résultat a de quoi surprendre un utilisateur non averti. Il est pourtant tout à fait prévisible si l'on sait
que Maple travaille dans l'ensemble des complexes. Pour calculer le module du résultat, on prend la
racine cubique au sens usuel du module de −8 , c'est à dire de 8, et on obtient r = 2 .
Pour calculer l'argument, on utilise la valeur de l'argument du nombre -8 contenue dans l'intervalle
−π , π . On divise ensuite cette valeur par 3. On obtient ainsi θ =
3
T © Texas Instruments
Introduction au calcul formel
π
3
.
13/46
FG F π I + i sinF π I IJ = 2FG 1 + i 3 IJ = 1 + i
H H 3 K H 3 KK H 2 2 K
On obtient ainsi z = 2 ei π / 3 = 2 cos
3.
Sur une TI-89, c'est la méthode qui sera utilisée lorsque l'on est en mode complexe. Par contre, en
mode réel, on obtiendra la valeur "habituelle", c'est à dire -2.
On retrouve une situation un peu semblable lorsque l'on veut manipuler des variables à valeurs
entières. En particulier des expressions comme −1 2 n +1 ou encore cos n π peuvent se simplifier
facilement dans le cas où n est un entier.
a f
a f
Dans l'écran ci-dessus, on a explicitement indiqué à Maple que la variable n est entière afin d'obtenir
une forme simplifiée des expressions.
Cette fonctionnalité n'est pas présente sur la TI-89 pour le cas des variables entières. De plus, si l'on
utilise une variable quelconque, le résultat affiché dépend du mode dans lequel on se trouve.
Sur l'écran de gauche la machine est en mode complexe, alors que sur l'écran de droite elle est en
mode réel.
Dans ce mode réel, une tentative de simplification avec passage à la forme complexe provoque une
erreur lorsque l'on veut manipuler une expression comme
( −1)2 n +1 + 1
Tout rentre par contre dans l'ordre si on indique à la TI-89 que l'on veut faire un calcul pour une
variable entière en utilisant une variable dont le nom est du type @n1, @n2, …, @n255.
3
T © Texas Instruments
Introduction au calcul formel
14/46
La comparaison de deux expressions
C'est un des problèmes les plus critiques lorsque l'on manipule des logiciels de calcul formel.
Dans certains cas, la différence d'aspect entre deux expressions est suffisamment minime pour ne
poser aucun problème.
Par exemple lorsque l'on calcule
z
af af
sin x 3 cos x 5 dx
on obtient :
af af
af
F − sin2 a xf − 1 I cos6 a xf avec une TI-89
GH 8 24 JK
1
1
− sin 2 x cos6 x − cos6 x avec Maple
8
24
•
•
Un simple coup d'œil permet de s'assurer qu'il s'agit bien de deux formes équivalentes d'un même
résultat, mais ce n'est pas toujours aussi simple.
Nous allons par exemple rechercher une primitive de la fonction définie par
af
f x =
af
af
sin x − 1
cos x + 1
avec Maple et la TI-89.
Voici pour commencer le résultat obtenu avec Maple :
Et celui obtenu avec une TI-92 Plus, placée en mode Complex Format = REAL1 :
Cette fois, les deux résultats sont suffisamment éloignés pour dérouter plus d'un étudiant.
Si l'on n'a pas en tête l'existence de formules permettant d'exprimer cos x en fonction de tan x / 2 ,
on risque d'avoir quelques difficultés à trouver un lien entre ces deux expressions.
af
1
a f
Il n'y aurait pas de valeur absolue en mode complexe.
3
T © Texas Instruments
Introduction au calcul formel
15/46
Il faut bien être conscient que ce type de situation va se généraliser avec l'arrivée d'autres calculatrices
symboliques… La situation décrite ici se retrouvera donc bientôt dans toutes les classes !
Pour comparer ces deux expressions nous avons ici demandé à Maple de simplifier leur différence.
On remarquera qu'il a été nécessaire de préciser que x était un réel afin d'obtenir une simplification de
af
cos x + 1
tenant compte du fait que pour tout x réel :
af
cos x + 1 ≥ 0
Un étudiant de lycée, et même du supérieur, a toutes les chances d'ignorer ce type de problème. Même
s'il a déjà rencontré l'expression d'un cosinus sous la forme d'une série entière, il lui faudra sans doute
prendre un peu de recul pour deviner la cause de l'échec de la première tentative de simplification.
Il est en fait probable qu'il se contente de penser que Maple "ne sait pas" que cette quantité est
positive, et que la valeur absolue est donc parfaitement inutile…
Cet exemple montre bien que la connaissance des particularités de fonctionnement des logiciels de
calcul formel est vraiment indispensable si l'on veut pouvoir s'en servir efficacement.
Il existe de plus des cas où ce type de comparaison sera beaucoup plus difficile, comme par exemple
lors de la résolution d'équations différentielles faisant intervenir des constantes d'intégration, ou même
parfois dans la simple expression de racines d'une équation polynomiale faisant intervenir des racines
carrées imbriquées.
En fait, il n'existe que quelques cas dans lesquels on est absolument assuré de pouvoir vérifier si deux
expressions sont identiques ou non.
C'est en particulier vrai pour les expressions polynomiales (qu'il suffit de développer) ainsi que pour
les polynômes trigonométriques (que l'on pourra linéariser2 totalement).
2
Cette linéarisation s'obtient avec la fonction tcollect sur la TI-89 ou la TI-92 Plus, ou en utilisant la fonction
combine avec l'option trig avec Maple.
3
T © Texas Instruments
Introduction au calcul formel
16/46
La fiabilité des calculs
Il est important de se poser la question de la fiabilité des résultats fournis par des logiciels de calcul
formel.
Peut-on faire confiance aux résultats obtenus ?
Globalement… oui… mais ce qui précède montre clairement qu'il faut effectivement être prudent en la
matière.
Pour commencer, un bug, c'est à dire une erreur de programmation, est toujours possible compte tenu
du niveau de complexité atteint par les logiciels de calcul formel.
C'est la raison d'être des "patches" que l'on peut charger sur le site Internet de Maple.
Une possibilité de mise à jour est absolument indispensable dans ce domaine. On comprend bien que
l'utilisation de la technologie de la mémoire Flash introduite pour la première fois par Texas
Instruments à l'occasion de la sortie de la TI-89 soit en train de se généraliser sur les machines
concurrentes.
Mais comme nous l'avons vu, il y a aussi toutes les erreurs relatives à un usage incorrect.
Voici quelques erreurs particulièrement répandues :
•
Erreur dans la réinitialisation des variables.
On place une valeur dans une variable x, puis un peu plus tard au cours de la même session de
travail avec Maple, ou même plusieurs jours plus tard avec une calculatrice disposant d'une
mémoire permanente comme la TI-89, on effectue un calcul utilisant cette variable symbolique x,
par exemple pour tester si une expression est constante en la dérivant…
•
Erreur de notation dans la saisie des expressions.
Ce problème existe déjà avec les calculatrices numériques classiques. L'affichage en "pretty print",
c'est à dire sous forme mathématique usuelle, de l'expression saisie est absolument indispensable.
Dans le cas des calculatrices symboliques, il faut aussi éviter toute erreur liée à l'utilisation des
symboles spéciaux comme e ou i. Les produits implicites, comme par exemple y x +1 peuvent
également générer des difficultés.
a f
•
Conflit avec les mesures d'angles.
Ce problème ne se rencontre que sur les calculatrices offrant le choix de calculer en degrés ou en
radians. Par exemple, les formules de dérivation classiques ne s'appliquent pas à la fonction
donnant le sinus d'un angle exprimé en degrés.
•
Problèmes liés à l'utilisation des nombres complexes dans des calculs intermédiaires.
Nous avons déjà vu quelques exemples dans ce document.
Un bug spectaculaire :
z
π /2
0
af
sin 2 x dx = −1, présent dans une précédente version de Maple, était
sans doute lié à ce problème.
•
Calculs non valides dans certains cas, sans que cela puisse se voir dans l'expression de la solution.
C'est tout le problème des simplifications abusives dont nous avons déjà parlé.
•
Erreurs liées à la mauvaise interprétation de ce que font certaines fonctions.
C'est par exemple le cas si on utilise la fonction variance disponible sur la TI-89 sans savoir que
l'on va effectuer une division par n −1, et non par n, lors du calcul de la moyenne des écarts.
3
T © Texas Instruments
Introduction au calcul formel
17/46
En bref, il y a effectivement de quoi se montrer prudent lors de l'utilisation de ces outils.
Mais il faut rappeler que certains formulaires, donnant la liste des primitives de fonctions "classiques",
et que l'on utilisait précédemment, comportaient jusqu'à 10% d'erreurs !
Il serait donc totalement absurde de rejeter les logiciels de calcul formel sous ce prétexte.
Cela montre en revanche combien il serait illusoire de penser pouvoir manipuler de tels outils sans
disposer des connaissances mathématiques indispensables pour savoir en déjouer les pièges et
interpréter correctement les résultats fournis.
Les logiciels de calcul formel sont de fantastiques outils.
Ils ne remplacent en aucun cas une étude approfondie des Mathématiques !
3
T © Texas Instruments
Introduction au calcul formel
18/46
L'exemple de la résolution des équations
Nous allons dans la seconde partie de ce document entrer un peu plus dans le détail du fonctionnement
des systèmes de calcul formel.
Pour cela, nous allons partir de l'exemple de la résolution des équations polynomiales.
af
Si l'on veut résoudre à la main une équation du type p x = 0 , la méthode à utiliser dépend étroitement
de la nature de p x .
af
Voyons comment se présente la situation pour un élève de seconde/première :
af
•
On possède une méthode directement utilisable lorsque p x est un polynôme du premier degré.
•
On sait également résoudre les équations du type a x n = 0 , en se ramenant à a x = 0 .
•
Si l'on a p x = a x ⋅ b x , on est ramené à la résolution de a x = 0 ou de b x = 0 .
•
À défaut, on cherche à se ramener à une expression de ce type en factorisant l'expression.
C'est l'exercice typique en début de seconde avec des exemples comme p x = x 2 − 2 ,
af af af
af
af
af
af
af
a
af
af
fa f
p x = 4 x + 4 x + 1 , ou encore des expressions comme p x = x − 4 + 3x + 6 x − 3 .
2
2
•
Les équations du second degré peuvent être traitées avec une méthode spécifique, mais on évite en
général d'utiliser cette méthode pour des équations comme x 2 − 3 x = 0 ou encore x 2 − 4 = 0 .
•
Dans certains cas, si aucune factorisation n'est possible, on devra au contraire développer
l'expression, en espérant que quelques simplifications se produisent au passage, et permettent de se
ramener à un type d'équation connu, comme par exemple avec
p x = x +1 x + 3 − x + 2 x + 4 .
a f a fa f a fa f
•
Il existe enfin des exercices que l'on ne sait pas encore résoudre à ce niveau comme par exemple
une équation du type x 3 + x − 1 = 0 .
Plusieurs points importants sont mis en évidence par cet exemple :
•
En fonction de la nature de l'expression, des stratégies aussi différentes que le développement
d'une expression, ou au contraire la recherche de facteurs communs pourront être utilisées.
•
Le choix de cette stratégie dépend de la nature de l'expression, qu'il faut donc être en mesure
d'analyser.
•
Lors d'un calcul à la main, on utilise parfois certaines astuces destinées à éviter des calculs
laborieux. Ce problème est moins critique dans un calcul automatisé, il est plus rapide par exemple
d'utiliser systématiquement les formules de résolution d'une équation du second degré que de
tester la présence de tel ou tel cas particulier.
•
Il existe des cas où l'on ne peut pas résoudre le problème posé… et il est indispensable de savoir
les détecter aussi rapidement que possible !
3
T © Texas Instruments
Introduction au calcul formel
19/46
La représentation d'une expression
a f a fa f
p x = x + 1 x + 2 + x + 3 est une somme de trois termes.
af
Si l'on veut par exemple résoudre l'équation p x = 0 , on aura besoin de développer cette somme.
a f a fa fa f
En revanche, p x = x + 1 x + 2 x + 3
développer.
est un produit, et il faudra au contraire éviter de le
La reconnaissance de la nature d'une expression est très importante pour tout outil de calcul formel.
Elle est étroitement liée à la représentation utilisée pour décrire cette expression. Dans ce qui précède,
nous avons utilisé une écriture classique, qui nous semble facile d'utilisation, que ce soit pour l'écriture
ou la lecture d'une expression.
Cependant, il faut être conscient que cette écriture nécessite l'utilisation de nombreuses règles pour
être correctement interprétée : rôle des parenthèses, règles de priorités algébriques… On peut aussi
rencontrer certaines ambiguïtés, en particulier lors de la notation des produits sous forme implicite.
x y + 1 désigne-t-il un produit ou le calcul d'une fonction x en un point y + 1 ?
a f
Il est indispensable de passer à autre type de représentation si l'on souhaite faire manipuler des
expressions par un logiciel de calcul formel.
L'idée principale repose sur une interprétation fonctionnelle de toute expression mathématique.
Par exemple, x +1 est obtenu en appliquant la fonction somme aux arguments x et 1.
a f
On pourrait noter cette expression sous la forme som x,1 .
a f
a f
De même x ^3 ↔ puiss x,3 , et x y ↔ prod x, y .
Les expressions plus complexes sont obtenues en composant différentes fonctions.
Par exemple,
a x + 1fa x + 2f + x + 3 ↔ somc prodbsoma x,1f, soma x,2fg, x, raca3fh
a x + 1fa x + 2fd x + 3 i ↔ prodcsoma x,1f, soma x,2f, somb x, raca3fgh
Cette seconde formulation peut sembler plus complexe, et pourtant, elle permet immédiatement de
faire la différence entre un produit de trois facteurs et une somme de trois termes : il suffit de regarder
la nature de la fonction utilisée en dernier lors de la construction de l'expression.
Une variante classique de cette représentation est la syntaxe utilisée en LISP pour coder les
expressions mathématiques, avec une petite nuance : une expression du type f a, b, c,… est notée
sous la forme f a b c … .
a
a
f
f
Le premier élément de la liste correspond à la fonction à utiliser, le reste de la liste nous donne la liste
des arguments. Pour décrire des expressions plus complexes, il n'y a plus qu'à reprendre le même
principe, en imbriquant des listes lorsque les arguments sont eux-mêmes des expressions.
Par exemple, l'expression
a x + 1fa x + 2f + x + cosa3f
sera notée :
d+ c* a+
f a+
x 1
x 2
fh
x
acos 3fi
Cette notation, presque illisible pour un être humain, est au contraire très bien adaptée à un traitement
informatique. Par exemple, pour savoir quelle est la nature d'une expression (somme, produit…), il
suffit de tester le premier élément de la liste. Pour connaître les termes d'une somme, il suffit de
prendre les éléments suivants dans la liste décrivant l'expression.
3
T © Texas Instruments
Introduction au calcul formel
20/46
Une autre façon de visualiser cette structure consiste à noter les expressions sous la forme d'arbres3 :
Cette visualisation est probablement la manière la plus efficace de comprendre la structure d'une
expression algébrique.
Quel que soit le mode de représentation adopté, il faut retenir le fait que toute expression
mathématique s'obtient en appliquant une fonction à une liste d'arguments pouvant être des nombres,
des variables symboliques, ou des sous-expressions, elles-mêmes définies en utilisant d'autres
fonctions, et que tout logiciel de calcul symbolique est capable d'accéder facilement à ces différents
éléments, et donc de déterminer le type de l'expression manipulée.
De plus, on sait parfaitement bien représenter ce type de structure dans la mémoire d'un ordinateur.
L'idée est que chaque élément est décrit par une liste donnant la nature de l'expression associée ainsi
que la liste des arguments. Les "atomes" c'est à dire les éléments de base des expressions comme x, 10
ou π peuvent eux-mêmes être représentés par des descripteurs permettant de connaître leur valeur,
leur nom, et éventuellement certaines de leurs propriétés4. La représentation interne d'une expression
comme x ⋅ x + y pourrait être quelque chose comme :
a
f
Prod
sum
name
x
name
y
On voit ici deux types de descripteurs : des descripteurs d'expressions (prod, sum) et des descripteurs
de variables (name). Les flèches figurant dans le diagramme précédent sont remplacées par des
adresses mémoire indiquant l'emplacement du descripteur associé à chaque argument. Les descripteurs
associés aux variables x et y comportent ici trois champs. Le premier donne le type de l'objet
représenté (ce sont des variables), le second permet de connaître le nom, le troisième permet de
préciser la valeur de la variable lorsque celle-ci est affectée. L'absence de pointeur dans cette troisième
case des descripteurs des variables x et y correspond au fait que ces variables n'ont pas reçu de valeur.
3
Il est possible de générer automatiquement ce type de représentation avec Maple en utilisant la fonction tree
dont l'écriture est décrite dans le livre Premiers pas en Maple, paru aux éditions Vuibert.
4
Il existe différentes façons de représenter une liste en mémoire. Nous n'entrerons pas ici dans le détail de cette
représentation. On pourra aussi se reporter au livre Introduction to Maple, André Heck, Springer-Verlag pour
avoir plus de précision sur les méthodes utilisées par Maple pour la représentation interne des expressions.
3
T © Texas Instruments
Introduction au calcul formel
21/46
La fonction part
Si l'on utilise une TI-89 ou une TI-92 Plus, il est possible d'accéder, du moins indirectement, à ces
différents éléments en utilisant la fonction part.
•
Utilisée avec un seul argument, elle donne le nombre de sous-expressions composant l'expression.
•
Pour avoir accès à la fonction permettant de construire l'expression (celle qui figure en haut de
l'arbre…), on utilise part avec un deuxième argument égal à 0.
•
Pour avoir accès aux sous-expressions utilisées pour former l'expression, on utilise part avec un
second argument égal au numéro de la sous-expression.
En voici quelques exemples :
Comme on peut le voir, cette fonction ne suit pas exactement le modèle précédent lorsqu'elle donne les
éléments d'une expression.
De manière interne, une somme peut avoir un nombre quelconque de termes, il en est de même pour
un produit…
a fa fb
a fg
Dans le dernier calcul, on utilise l'expression sin x x + 3 1 + sin x , qui est le produit des trois
facteurs sin x , x + 3 , et 1 + sin x .
afa f b
a fg
On pourrait donc s'attendre à obtenir la valeur 3 lors du calcul de part(sin(x)(x+3)(1+sin(x)).
Mais en fait, avec la fonction part, les différents termes ou facteurs seront regroupés de manière à
toujours se ramener à une somme de deux termes ou à un produit de deux facteurs.
Voici à présent quelques exemples "d'extraction" de l'opérateur utilisé pour construire une expression,
et des sous-expressions auxquelles il s'applique :
Une fois encore, il faut insister sur le fait que la fonction part ne traduit pas toujours exactement la
véritable structure interne des expressions.
3
T © Texas Instruments
Introduction au calcul formel
22/46
Nous l'avons déjà signalé pour les sommes de plusieurs termes, ou avec les produits de plusieurs
facteurs, mais c'est aussi par exemple le cas avec des expressions comme a + b − c . Une expression de
ce type est traitée en interne comme une somme de trois termes : a, b, − c , alors que la fonction y verra
la différence entre a + b et c comme le montre l'écran suivant :
N.B. Cette particularité de la fonction part a pour avantage de toujours se ramener à des produits de
deux facteurs, des sommes de deux termes, … mais elle complique par contre l'écriture de certains
programmes où il est souhaitable de pouvoir disposer directement de la liste de tous les facteurs d'un
produit ou de tous les termes d'une somme.
On doit alors écrire une fonction utilisant des appels récursifs à la fonction part pour construire cette
liste.
Sur les TI-89 et les TI-92 Plus, on dispose également de la fonction getType qui permet de savoir
quelle est la nature du contenu d'une variable.
Par exemple, on obtient "NONE" si la variable n'a pas de valeur, "NUM" si c'est une valeur entière, ou
un nombre rationnel, "VAR" si c'est le nom d'une autre variable, "EXPR" si c'est une expression
faisant intervenir une somme, un produit, ou toute autre fonction.
Comme on
expression
numérique
exemple ln
peut le voir dans l'écran ci-dessus, cette fonction ne permet pas de distinguer entre une
faisant intervenir des variables symboliques, comme sin x + x , et une expression
constante nécessitant l'utilisation de fonctions particulières pour son expression. Par
2 ou encore 5 sont de type "EXPR".
af
af
Les spécialistes pourront également remarquer que cette fonction a un caractère un peu particulier.
Généralement, lorsque l'on utilise une fonction f avec un argument arg la TI-89 commence par évaluer
la valeur de arg, puis transmet la valeur obtenue à la fonction f.
af
af
Dans l'exemple précédent, le calcul de f x serait équivalent à celui de f y , et donc de f
d 2i.
Ici c'est bien le type de x que l'on a obtenu, et non celui de y.
Nous allons à présent voir comment utiliser ces outils pour mettre en évidence certains aspects du
fonctionnement des logiciels de calcul formel.
3
T © Texas Instruments
Introduction au calcul formel
23/46
Un exemple complet d'utilisation de part : la dérivation
Non, n'ayez pas d'inquiétude, la TI-89 est bien capable de calculer une dérivée.
Nous allons cependant voir comment lui apprendre à le faire, afin d'avoir un exemple d'utilisation de
part un peu plus complet que celui de la recherche d'un ensemble de définition déjà présent dans le
manuel.
Pour cela, il faut prendre le temps de comprendre comment on procède à la main.
•
Si l'on a une expression qui ne comporte qu'un seul élément simple, comme x, y ou 10, on regarde
si cette expression est ou non égale à la variable par rapport à laquelle on souhaite dériver. Si c'est
le cas, la dérivée est égale à 1, sinon la dérivée est égale à 0.
•
Si l'on a une expression construite en appliquant une fonction à une expression, comme par
exemple sin x ou encore ln x 2 + 1 , on doit appliquer la formule de dérivation d'une expression
af
e j
du type f bua x fg qui est f ′bua x fg ⋅ u ′a x f .
af
Le calcul de f ′ sera fait par simple lecture dans la table des dérivées usuelles, le calcul de u′ x
sera fait en appliquant la méthode de dérivation que nous sommes en train de décrire à u x .
af
•
Si l'on a une somme ou une différence (ces deux notions sont distinctes pour la fonction part,
contrairement à ce qui se passe en interne) alors on peut appliquer la formule de dérivation d'une
somme ou d'une différence. Le calcul de la dérivée de chaque terme se fait en appliquant la
méthode que nous sommes en train de décrire.
•
Si l'on a un produit, on dispose de la formule uv ′ = u ′v + uv ′ .
(Le cas du produit par une constante est un cas particulier du précédent. Dans la mesure où nous
ne cherchons pas à écrire une programme destiné à afficher les étapes pas à pas et travaillant de la
même façon qu'un étudiant, il n'est pas utile de le traiter.)
•
Si l'on a un quotient on dispose de la formule
a f
F u I ′ = u′v −2uv′ .
H vK v
(Le cas d'un inverse, c'est à dire le cas où le numérateur est égal à 1, est un cas particulier. Pour la
même raison que dans le cas du produit par une constante, il est inutile de le traiter.)
•
Si l'on a une puissance, la méthode à utiliser dépend du type de l'exposant et du type de la base.
Dans un calcul manuel, on distinguerait les cas :
f x = u x α , avec f ′ x = α u′ x u x α −1 .
af af
af afaf
x
f a x f = e , avec f ′a x f = e x , et plus généralement f a x f = a x = e x lna a f avec f ′a x f = lnaaf a x
a f b a fg , avec f ′a x f = FG u′a x f ⋅ va x f + lnbua x fg ⋅ v′a x fIJ ua x fva x f
f a x f = ua x f a f = e
H ua x f
K
v x
v x ln u x
Cette dernière formule n'est sans doute pas connue des élèves. Nous pouvons par contre
parfaitement décider de l'utiliser systématiquement afin d'éviter des tests sur la nature de
l'exposant et de la base. Elle se simplifiera lorsque l'un ou l'autre sera constant.
•
Faut-il prévoir d'autres cas ?
Nous pouvons pour l'instant décider de ne pas les traiter, quitte à revenir sur ce problème si cela
est vraiment nécessaire.
Dans cette rubrique pourrait par exemple figurer le cas d'une expression faisant intervenir une
af
intégrale, comme f x =
3
T © Texas Instruments
z
1 −t 2
e dt .
x
Introduction au calcul formel
24/46
Il existe des techniques de programmation (programmation orientée objet) qui permettent une prise en
compte automatique de nouvelles méthodes, sans avoir besoin de modifier la fonction principale.
Il n'est cependant pas possible de développer ce type de méthodes dans le cadre de ce document, nous
allons donc travailler en nous limitant à l'utilisation de techniques tout à fait classiques de
programmation, et dans le cas présent notre énumération va se traduire par une simple instruction If …
EndIf assortie de plusieurs cas.
La programmation de notre fonction ne sera cependant pas totalement naïve.
Comme le montre l'énumération précédente, la dérivation d'une expression fait intervenir le résultat
obtenu en dérivant une ou plusieurs sous-expressions de cette expression.
Notre fonction de dérivation va donc être récursive et s'appeler elle-même.
Naturellement ce processus s'arrête de lui-même lorsque l'on arrive à une sous-expression
suffisamment simple, c'est à dire à une variable ou à une constante (cf. premier cas.).
Pour alléger un peu l'écriture de nos différentes fonctions, nous allons supposer que la fonction que
nous souhaitons dériver est une fonction de x.
Nous allons à présent pouvoir écrire la fonction de dérivation :
der(ex)
Func
Local ex1,ex2,op,fonc
If part(ex)=0 Then
when(ex=x,1,0,0)
ElseIf part(ex)=1 Then
part(ex,0)→fonc
part(ex,1)→ex1
derfonc(fonc,ex1)
ElseIf part(ex)=2 Then
part(ex,0)→op
part(ex,1)→ex1
part(ex,2)→ex2
If op="+" Then
dersum(ex1,ex2)
ElseIf op="-" Then
derdif(ex1,ex2)
ElseIf op="*" Then
derprod(ex1,ex2)
ElseIf op="/" Then
derquot(ex1,ex2)
ElseIf op="^" Then
derpuiss(ex1,ex2)
Else
d(ex,x)
EndIf
EndFunc
Comme on peut le voir, cette fonction fait appel à d'autres fonctions : derfonc, dersum, derdif,
derprod, derquot, derpuiss qui seront chargées de traiter les cas des expressions du type f u x , les
sommes, différences, produits, quotients et puissances d'expressions. Ces fonctions n'existent pas
encore. Nous les définirons ultérieurement.
b a fg
3
T © Texas Instruments
Introduction au calcul formel
25/46
Voici ce que donnent quelques essais de notre fonction, dans l'état actuel d'avancement du projet :
On peut facilement voir que la fonction der effectue bien le tri en fonction des différents cas, et qu'elle
appelle la fonction de dérivation adaptée à chaque situation, en transmettant les arguments dont on a
besoin pour poursuivre les calculs.
Naturellement, le calcul s'arrête aussitôt puisque les différentes fonctions n'ont pas encore été définies.
Définissons par exemple les fonctions dersum et derprod :
dersum(ex1,ex2)
Func
der(ex1)+der(ex2)
EndFunc
derprod(ex1,ex2)
Func
der(ex1)*ex2+ex1*der(ex2)
EndFunc
Nous pouvons à présent faire quelques essais supplémentaires :
Nous allons maintenant aller un peu plus loin en définissant la fonction derfonc qui est chargée de
dériver les expressions du type f u x .
La bonne méthode consiste à gérer une table dans laquelle sont placés les noms de fonctions et la
formule à utiliser pour les dériver.
b a fg
Pour éviter de trop entrer dans des détails techniques, nous allons nous contenter d'utiliser une
fonction qui sera capable de dériver les fonctions trigonométriques et logarithmes. C'est
essentiellement cette partie qu'il faudrait développer pour obtenir un noyau de dérivation vraiment
performant.
af
Pour écrire cette fonction, il faut également savoir qu'une expression comme − cos x est vue par la
TI-89 comme le résultat obtenu en appliquant la fonction "opposé" à l'expression cos x .
Dans la pratique, la valeur retournée par part(ex,0) sera alors égale à "⁻".
af
Cela correspond au premier cas étudié dans le texte de la fonction : If op="⁻" Then...
Les cas suivants correspondent à l'utilisation des fonctions cosinus, sinus, tangente et logarithme
népérien. Il est en revanche inutile de prévoir le cas de la fonction exponentielle car celui-ci est traité
par la fonction chargée de dériver les puissances.
3
T © Texas Instruments
Introduction au calcul formel
26/46
derfonc(op,arg)
Func
Local a
der(arg)→a
If op="⁻" Then
⁻a
ElseIf op="cos" Then
⁻a*sin(arg)
ElseIf op="sin" Then
a*cos(arg)
ElseIf op="tan" Then
a*(1+(tan(arg))^2)
ElseIf op="ln" Then
a/arg
EndIf
EndFunc
Quelques nouveaux essais permettent de se rendre compte des progrès réalisés par notre système de
dérivation avec l'ajout des dernières fonctions :
Il ne reste plus qu'à écrire les dernières fonctions permettant de dériver une différence, un quotient ou
une puissance pour aller encore plus loin.
derdif(ex1,ex2)
Func
der(ex1)-der(ex2)
EndFunc
derquot(ex1,ex2)
Func
(der(ex1)*ex2-ex1*der(ex2))/ex2^2
EndFunc
derpuiss(ex1,ex2)
Func
(der(ex1)*ex2/ex1+ln(ex1)*der(ex2))*ex1^ex2
EndFunc
À présent, notre module de dérivation permet d'effectuer des calculs qui commencent à devenir un peu
compliqués :
3
T © Texas Instruments
Introduction au calcul formel
27/46
Un peu trop compliqués même… et ici il n'est pas inutile de demander une factorisation pour y voir un
peu plus clair !
Naturellement, cet appel à la fonction factor pourrait très bien être intégré dans la fonction de calcul
de la dérivée. C'est d'ailleurs le cas avec la fonction de dérivation intégrée dans la TI-89.
À ce propos, on peut remarquer que dans l'état actuel, très peu de simplifications sont effectuées sur
les résultats obtenus.
af
af af
Voici par exemple ce que l'on obtient si l'on dérive f x = cos x sin x :
D'où vient ce résultat ? Pour dériver cette expression, la fonction der a commencé par déterminer à
l'aide de la fonction part qu'il s'agissait d'un produit, puis les deux arguments ont été extraits, toujours
en utilisant la fonction part, et on a appliqué la fonction derprod à ces deux arguments.
Cette fonction a alors effectué le calcul de der(sin(x)) . cos(x)+sin(x) . der(cos(x)).
On peut refaire à la main les principales étapes de ce calcul :
On obtient le même type de résultat, également non simplifié, dans l'écran de calcul.
Pour obtenir une expression plus simple, il suffit de provoquer une simplification supplémentaire,
comme par exemple en mémorisant le résultat dans une variable, ou encore en lui appliquant tout
simplement une fonction définie par Id x = x . On peut le vérifier sur l'écran suivant :
af
3
T © Texas Instruments
Introduction au calcul formel
28/46
Tout cela peut sembler un peu mystérieux…
•
Avec la première méthode, c'est l'utilisation de la variable a qui provoque une
évaluation/simplification de son contenu. Cette variable contient en fait l'expression non
simplifiée.
On peut le vérifier en utilisant la touche F6:Contents dans le menu VAR-LINK, qui permet de
visualiser le contenu d'une variable, tel qu'il est sans aucune modification.
Voici ce que l'on obtient :
•
Dans le second cas, lors de l'utilisation de la fonction Id, l'argument qui est égal à la valeur (non
simplifiée) de l'expression va être évalué et simplifié avant d'être transmis à cette fonction.
C'est donc lors de l'appel de cette fonction que la simplification a lieu.
Ensuite, la fonction se contente de renvoyer la valeur telle qu'elle l'a reçue.
Tout cela permet d'entrevoir la complexité des mécanismes d'évaluation et de simplification mis en jeu
dans les logiciels de calculs symboliques.
Le choix de la façon dont ces règles seront utilisées est spécifique à chaque système de calcul formel.
Dans le cas de la TI-89 / TI-92, une simplification importante est effectuée dès que l'on utilise une
expression, comme par exemple lors de l'appel d'une fonction.
La majorité des utilisateurs peuvent éventuellement ne pas être au courant de ce type de détail.
Par contre, cela peut prendre une importance capitale si l'on cherche à programmer du calcul formel.
Par exemple, pour comprendre les résultats fournis par la fonction part dans l'écran ci-dessous (et
donc ne pas faire d'erreur lors de son utilisation), il est indispensable de savoir qu'une simplification a
lieu lors de l'appel de cette fonction.
Dans le premier cas, on est resté avec la même expression, car celle-ci n'a pas pu être simplifiée par la
calculatrice. C'est donc bien une somme de deux termes qui a été analysée par part.
Par contre, dans les deux cas suivants, la simplification préalable a conduit à l'analyse d'expressions
constantes. Tout se passe comme si l'on avait en fait calculé part(1) et part(0).
C'est un choix des concepteurs du logiciel présent sur cette calculatrice, mais il n'y a pas de règle
uniforme en la matière.
Par exemple, avec Maple on dispose de la fonction op pour récupérer la liste des sous-expressions.
Lors d'un appel de la forme op(3^2+2*3+1-(3+1)^2), l'expression qui ne fait intervenir que des
entiers sera automatiquement simplifiée, mais ce ne sera pas le cas avec op(x^2+2*x+1-(x+1)^2).
3
T © Texas Instruments
Introduction au calcul formel
29/46
Disposer d'un bon outil ne dispense pas de réfléchir !
Un des principaux problèmes que l'on rencontre lors de l'utilisation de systèmes de calcul formel par
des étudiants néophytes dans ce domaine est l'absence, parfois totale, de réflexion avant de se lancer
dans des calculs pourtant voués à l'échec.
Il suffit pourtant d'exemples très simples pour voir comment un minimum de travail préalable peut
parfois considérablement changer la nature des calculs à accomplir.
Considérons par exemple la suite définie par
R|Su0 = 1
|Tun = un2−1 + 2un−1
On dispose sur la TI-89 et la TI-92 Plus d'une manière particulièrement simple de programmer une
suite de ce type.
Il suffit d'utiliser une instruction du type
when(n=0,1, u(n-1)^2+2* u(n-1) → u(n)
pour définir la fonction u permettant de calculer les termes par récurrence.
Voyons ce que l'on obtient dans l'écran ci-dessous :
Apparemment, ça marche…
Cependant, le calcul de u10 a nécessité près de 55 secondes…
Si vous avez déjà fait de la programmation récursive, vous connaissez sans doute l'origine du
problème… mais adoptons ici le point de vue d'un utilisateur débutant dans ce domaine.
Une première "explication" serait de penser que la calculatrice a tout simplement eu du mal à effectuer
tous les calculs exacts sur les grands entiers intervenant ici. Ce n'est pas totalement faux, et on peut en
effet se demander s'il est bien judicieux d'effectuer un calcul exact dans ce cas précis.
Mais ce n'est pas la seule raison du problème, loin de là.
Pour s'en convaincre, il suffit de choisir la valeur u0 = 0 , qui conduit à un = 0 pour toutes les valeurs
de n. Cette fois les calculs ne devraient pas présenter de difficultés…
Il a encore fallu environ 50 secondes pour obtenir ce dernier résultat, le calcul du terme suivant u11
nécessite près d'une 1'40"…
Et pourtant, on ne fait que manipuler des nombres qui sont tous égaux à 0…
3
T © Texas Instruments
Introduction au calcul formel
30/46
Il faut donc chercher une autre explication, qui va s'appuyer sur le nombre de fois où la fonction u va
devoir être utilisée lors de notre calcul de un .
Le nombre an d'appels nécessaires à la fonction u pour calculer un est de
•
1 pour calculer u0
•
3 pour calculer u1 = u02 + 2u0 : on doit calculer u 1 – appel n°1 –, ce qui va automatiquement
lancer le calcul de u 0 – appel n°2 – que l'on va élever au carré, suivi d'un nouveau calcul de u 0
– appel n°3 – qui sera multiplié par 2.
af
af
af
De même, pour les valeurs supérieures, le calcul de un+1 va utiliser deux calculs de un , et le nombre
d'appels an vérifie donc: an = 1 + 2 an −1 . (On trouve ici l'explication du doublement du temps de calcul
nécessaire lorsque l'on passe de u10 à u11 ).
Pour calculer an , il suffit de remarquer que la suite wn = an + 1 est géométrique, de premier terme
w0 = 1 + 1 = 2 , et de raison 2. On en déduit wn = 2 n ⋅ 2 = 2 n +1 et donc an = 2 n +1 − 1
En fait, une simple transformation de la formule de récurrence permet ici de faire disparaître
totalement ce problème. Il suffit par exemple d'utiliser une mise sous forme canonique :
R|u0 = 1
S|un = b1 + un−1g2 − 1
T
Ce qui peut se traduire par
when(n=0,1, (1+u(n-1))-1) →u(n)
Le calcul est alors beaucoup plus rapide, et seule l'opération d'affichage du résultat nécessite un peu de
temps.
Cela s'explique facilement. Le nombre d'appels nécessaires vérifie à présent la relation de récurrence
RSa0 = 1
Tan = an−1 + 1
Et on a donc an = n + 1 .
Une autre solution aurait consisté à utiliser une fonction intermédiaire pour définir le calcul à effectuer
par récurrence, comme on le fait dans l'écran ci-dessous :
En effet, ici aussi, on ne fait appel qu'une seule fois au calcul de un−1 dans le calcul de un . Le résultat
est ensuite passé en argument à la fonction f, qui se charge d'effectuer le calcul nécessaire à partir de la
valeur transmise. Le nombre d'appels de la fonction u est donc ici aussi égal à an = n + 1 .
Attention cependant, cela ne suffira pas à résoudre les éventuels problèmes liés à la taille des nombres
manipulés. On a ici u10 ≈ 1,80 × 10308 et u11 ≈ 3,23 × 10616 .
Le calcul de u12 provoquera immanquablement un dépassement des capacités de la calculatrice…
3
T © Texas Instruments
Introduction au calcul formel
31/46
Le calcul formel pas à pas
Les logiciels de calcul formel que nous connaissons sont plutôt des boîtes noires (même s'il est parfois
possible de soulever un peu le couvercle, comme nous allons le faire avec Maple).
Ils fournissent des résultats, mais ne permettent généralement pas à un étudiant de savoir comment ils
ont été obtenus.
Maple propose cependant un moyen de suivre un peu certains calculs moyennant l'utilisation d'une
option particulière5.
Voici par exemple les commentaires générés lors du calcul d'une primitive de la fonction
af
f x =
af
af
af
af
cos x + sin x
.
sin x − cos x
{--> enter int, args = (sin(x)+cos(x))/(sin(x)-cos(x)), x
int/indef:
int/indef2:
first-stage indefinite integration
second-stage indefinite integration
{--> enter diff, args = _X, _X
<-- exit diff (now in int/indef2) = 1}
{--> enter diff, args = sin(_X)-cos(_X), _X
<-- exit diff (now in int/indef2) = sin(_X)+cos(_X)}
int/indef2:
int/indef:
applying derivative-divides
first-stage indefinite integration
<-- exit int (now at top level) = ln(sin(x)-cos(x))}
Sans entrer dans les détails, il est assez facile de voir que Maple a utilisé une méthode proche de celle
d'un élève, avec en particulier un calcul de la dérivée du dénominateur, permettant une conclusion
rapide.
Passons à présent à un deuxième exemple, à peine différent.
af
On veut cette fois calculer une primitive de f x =
af
af
af
af
cos x − sin x
.
sin x + cos x
En dérivant le dénominateur, on obtient l'opposé du numérateur, et un calcul "à la main" conduit
rapidement à − ln cos x − sin x .
c af
a fh
On peut d'ailleurs le vérifier sans difficulté sur une TI-89 :
Avec Maple, on obtient
F F 1 xI 2 − 1 + 2 tanF 1 xI I + lnF1 + tanF 1 xI 2 I
GH H 2 K
H 2 K JK GH H 2 K JK
− ln tan
Comment en est-on arrivé là ?
5
infolevel[int]:=5, complété par les commandes debug(int) et debug(der).
3
T © Texas Instruments
Introduction au calcul formel
32/46
Ici aussi on peut demander l'affichage des étapes :
{--> enter int, args = (cos(x)+sin(x))/(cos(x)-sin(x)), x
int/indef:
int/indef2:
first-stage indefinite integration
second-stage indefinite integration
{--> enter diff, args = _X, _X
<-- exit diff (now in int/indef2) = 1}
{--> enter diff, args = cos(_X)-sin(_X), _X
{--> enter diff, args = _X, _X
<-- exit diff (now in diff/cos) = 1}
{--> enter diff, args = _X, _X
<-- exit diff (now in diff/sin) = 1}
<-- exit diff (now in int/indef2) = -sin(_X)-cos(_X)}
{--> enter diff, args = cos(_X), _X
<-- exit diff (now in int/indef2) = -sin(_X)}
{--> enter diff, args = sin(_X), _X
<-- exit diff (now in int/indef2) = cos(_X)}
int/trigon:
int/ratpoly:
case of integrand containing trigs
rational function integration
{--> enter diff, args = _X2-1+2*_X, _X
<-- exit diff (now in int/ratpoly/ratpoly) = 2*_X+2}
{--> enter diff, args = 1+_X2, _X
<-- exit diff (now in int/ratpoly/ratpoly) = 2*_X}
<-- exit int (now at top level) = -ln(tan(1/2*x)2-1+2*tan(1/2*x))+ln(1+tan(1/2*x)2)}
Comme on peut le voir, ou plus exactement le deviner, Maple a bien effectué le calcul de la dérivée du
dénominateur, mais il n'a pas fait de rapprochement avec le numérateur. On est donc entré dans la
méthode d'intégration des fonctions trigonométriques avec un changement de variable classique, suivi
d'un appel à la méthode d'intégration rationnelle. Les expressions _X2-1+2*_X et 1+_X2 correspondent
au dénominateur des fractions rationnelles résultant de la décomposition en éléments simples de la
fraction obtenue lors du changement de variable t = tan x 2 .
a f
Il est d'ailleurs possible de suivre ce calcul en surveillant6 les appels à la fonction convert qui se
charge de cette décomposition lorsque l'on utilise la syntaxe convert(expression, parfrac, variable).
C'est cet appel qui figure sur la ligne placée en gras ci-dessous.
{--> enter int, args = (cos(x)+sin(x))/(cos(x)-sin(x)), x
[…]
int/trigon:
int/ratpoly:
case of integrand containing trigs
rational function integration
{--> enter convert, args = (_X2-1-2*_X)/(_X2-1+2*_X)/(1+_X2), parfrac, _X
[…]
Comme nous l'avons vu, l'affichage de ces étapes est possible, mais n'est pas immédiat. De plus il n'est
pas particulièrement lisible.
Imaginons à présent que les auteurs de Maple aient ajouté quelques lignes de code permettant
d'afficher plus clairement ces différentes étapes.
Peut-on dire que cela constituerait une aide pédagogique efficace pour l'utilisateur ?
6
Avec la commande debug(convert).
3
T © Texas Instruments
Introduction au calcul formel
33/46
Dans le cas précèdent, la méthode utilisée reste compréhensible, même s'il est clair qu'elle ne serait pas
judicieuse dans le cas d'un calcul à la main.
La situation est parfois beaucoup plus complexe.
Par exemple, le calcul de
z
+∞
af
ln x
dx
0 1 + x2
est un exercice relativement classique en prépa.
Après avoir justifié la convergence, le changement de variable t = 1 x permet de montrer que
z
1
a f dx = − z +∞ lna xf dx ,
ln x
0 1 + x2
1
1 + x2
ce qui montre que l'intégrale est nulle.
Voyons quelles sont les principales étapes de Maple pour parvenir à ce résultat :
{--> enter int, args = ln(x)/(1+x2), x = 0 .. infinity
{--> enter diff, args = Beta(z,w), z
{--> enter diff, args = z, z
<-- exit diff (now in diff/Beta) = 1}
{--> enter diff, args = w, z
<-- exit diff (now in diff/Beta) = 0}
{--> enter diff, args = z+w, z
<-- exit diff (now in diff/Beta) = 1}
<-- exit diff (now in int/cook/ngritty) = (Psi(z)-Psi(z+w))*Beta(z,w)}
{--> enter diff, args = Beta(z,w), w
{--> enter diff, args = z, w
<-- exit diff (now in diff/Beta) = 0}
{--> enter diff, args = w, w
<-- exit diff (now in diff/Beta) = 1}
{--> enter diff, args = z+w, w
<-- exit diff (now in diff/Beta) = 1}
<-- exit diff (now in int/cook/ngritty) = (Psi(w)-Psi(z+w))*Beta(z,w)}
<-- exit int (now in g) = 0}
Les méthodes utilisées ici ne sont sans doute connues que par quelques spécialistes7…
Encore une fois, il est bien normal que Maple n'ait pas cherché à "voir" s'il y avait une méthode rapide
pour parvenir au résultat. Il s'est contenté d'appliquer des algorithmes permettant d'arriver au résultat,
quitte à faire certains calculs inutiles.
Cette démarche est tout à fait logique de la part d'un système de calcul formel.
Par contre, il est clair que présenter les étapes d'un tel calcul serait parfaitement inutile.
Concrètement, cela signifie qu'il sera le plus souvent nécessaire de réécrire totalement la partie du
logiciel de calcul formel correspondant à une notion étudiée par un étudiant si l'on souhaite présenter
du calcul pas à pas.
C'est en fait le seul moyen de s'assurer que le logiciel n'utilisera que des notions effectivement connues
par les étudiants.
7
Elles n'ont d'ailleurs pas été intégrées dans le logiciel de calcul formel de la TI-89, qui bascule ici en mode de
calcul approché pour obtenir une valeur effectivement très proche de 0.
3
T © Texas Instruments
Introduction au calcul formel
34/46
De plus, même dans des cas relativement simples, il est souvent possible de choisir entre plusieurs
méthodes.
Comment résoudre, au niveau du lycée, une équation du type x 3 + x 2 + x + 1 = 0 ?
•
En remarquant que x = −1 est racine évidente.
•
Ou en remarquant directement que x 3 + x 2 = x 2 x + 1 , et qu'il est donc facile de factoriser cette
a fe
j
a f
équation sous la forme x + 1 x + 1 = 0 .
2
Comment allez-vous poursuivre la résolution ?
•
En déclenchant la méthode "second degré", et donc en calculant un discriminant…
•
Ou en remarquant plus simplement que x 2 + 1 est visiblement strictement positif (sous réserve
d'une résolution dans l'ensemble des réels).
Pour en rester à un niveau très élémentaire, comment effectuer la résolution de l'équation x 2 = 4 ?
•
Est-il nécessaire de regrouper les termes dans le premier membre, de reconnaître une identité
remarquable, de factoriser, puis d'indiquer qu'un produit est nul si et seulement si un produit de
facteurs est nul…
•
Peut-on passer directement à l'énoncé de la solution x = 2 ou x = −2 ?
Dans chacun de ces cas, la réponse dépend du niveau de l'élève, pas seulement de la classe où il se
trouve, mais du travail qui y a déjà été effectué depuis le début de l'année scolaire…
Autant de contraintes à prendre en compte si l'on veut véritablement créer un logiciel permettant
d'effectuer du calcul formel pas à pas présentant des qualités pédagogiques.
On en est encore assez loin aujourd'hui8.
Il est par contre possible de créer de tels outils, adaptés à un certain niveau d'enseignement, et à une
partie bien précise du programme, tout en sachant que dans telle ou telle situation particulière la
solution proposée ne sera pas la plus simple9.
On peut par exemple parfaitement créer un logiciel permettant d'aider un élève de première à résoudre
une équation rationnelle avec les outils dont il dispose à ce niveau (factorisation, second degré,
recherche de solution évidente,…).
Il sera même possible de disposer de ce type de logiciel sur une "simple" calculatrice. Les TI-89 et
TI-92 Plus, par exemple, offre une puissance de calcul parfaitement suffisante pour cela.
Voici par exemple les principales étapes d'un calcul pas à pas de la dérivée d'une fonction sur l'écran
d'une TI-92 Plus.
8
Prétendre par exemple qu'une calculatrice comporte un mode pas à pas susceptible d'apporter une aide
pédagogique, sans préciser si cet outil s'adresse à un élève de seconde ou de classes préparatoires, relèverait un
peu de la publicité mensongère.
9
Des logiciels de ce type ont déjà été réalisés, il y a une dizaine d'années, pour des micro-ordinateurs dont la
puissance de calcul était bien inférieure à celle dont on dispose sur une TI-89.
Par exemple, le logiciel Intégrale permettait à un élève de s'engager dans au calcul pas à pas, contrôlé et assisté
au besoin par l'ordinateur, de toute primitive dont la recherche relevait des méthodes enseignées dans le cadre du
programme d'une classe de terminale scientifique. Ce logiciel nécessitait seulement 128 ko de mémoire vive
pour fonctionner correctement, et tournait sur un micro-processeur cadencé à une vitesse inférieure de celle du
68000 qui équipe la TI-89. L'interface plutôt rudimentaire de ce logiciel pourrait largement être améliorée
aujourd'hui. On peut à ce sujet s'étonner que la grande majorité des logiciels commerciaux grand public, destinés
au soutien à domicile en mathématiques, en soient restés ces dernières années au stade du QCM plus ou moins
amélioré, même si ce mode de fonctionnement est caché sous une interface graphique particulièrement
attractive…
Une évolution importante est plus que probable dans ce domaine.
3
T © Texas Instruments
Introduction au calcul formel
35/46
On peut vérifier sur le dernier écran que le résultat obtenu est bien identique au résultat que l'on
obtient en utilisant directement la fonction de dérivation de la TI-92 Plus.
Il ne s'agit naturellement que d'un exemple de programme pas à pas, qu'il serait facile d'améliorer pour
tenir compte de tel ou tel besoin.
Le groupe de programmes correspondant à l'exemple ci-dessus est en particulier disponible sur le site
Internet :
http://perso.wanadoo.fr/info.calc/
Il utilise des techniques comparables à celles décrites dans la section présentant l'écriture d'un noyau
de dérivation formelle.
3
T © Texas Instruments
Introduction au calcul formel
36/46
La résolution des systèmes d'équations. Bases de Gröbner
L'utilisation systématique d'algorithmes généraux risque parfois, même dans le cas où une solution
"astucieuse" était à la portée d'un étudiant, de conduire un système de calcul formel à des calculs
inextricables, pouvant parfois provoquer une saturation de la mémoire et donc un échec de la
résolution. À moins que ce ne soit le temps nécessaire pour ces différents calculs qui conduise
l'utilisateur à perdre patience et à provoquer l'interruption des calculs en cours !
Un bon exemple de cette situation est l'utilisation de la méthode des Bases de Gröbner pour la
résolution d'un système d'équations polynomiales. Nous allons tenter de décrire ici les grandes idées
de cette méthode, ce qui nous permettra aussi d'en comprendre certaines limites.
Il faut pour cela rappeler quelques notions très élémentaires sur la notion d'idéal engendré par une
famille de polynômes à plusieurs variables.
Par définition, l'idéal engendré par une famille de polynômes P1, P2 ,…, Pk de X1, X2 ,… Xn est
l'ensemble des polynômes de la forme P = A1P1 + A2 P2 + + Ak Pk avec ∀i ∈„1, k … Ai ∈ X1, X2 ,… Xn
Nous allons à présent voir comment cette notion intervient dans le cadre de la résolution des systèmes
d'équations.
Prenons par exemple le cas de deux polynômes A1 et A2 de K [ X , Y ]. Ces deux polynômes engendrent
un idéal I formé par l'ensemble des polynômes de la forme P = A1. P1 + A2 . P2 avec P1 ∈ K [ X , Y ] et
P2 ∈ K [ X , Y ] .
a f
a f
a f a f a f a f a f
On peut voir en particulier que si x et y sont des valeurs telles que A1 x, y = 0 et A2 x, y = 0 , alors
pour tout polynôme P de cet idéal I, on aura P x, y = A1 x, y ⋅ P1 x, y + A2 x, y ⋅ P2 x, y = 0 .
Il existe naturellement d'autres familles de polynômes de deux variables engendrant le même idéal.
Supposons par exemple que celui-ci soit également engendré par deux polynômes B1 et B2 de
K [ X , Y ]. D'après ce qui précède, puisque B1 et B2 sont dans I, on a déjà
|RS A1a x, yf = 0 ⇒ |RSB1a x, yf = 0
T| A2 a x, yf = 0 T|B2 a x, yf = 0
Réciproquement, puisque A1 et A2 sont dans I, qui est aussi engendré par B1 et B2 , on a l'implication
réciproque :
|RS A1a x, yf = 0 ⇒ |RSB1a x, yf = 0
|T A2 a x, yf = 0 |TB2 a x, yf = 0
Il est donc équivalent de résoudre le système initial, ou tout autre système associé à un ensemble de
générateurs de l'idéal.
Avant d'aller plus loin, il peut être intéressant de voir ce que cela donne dans le cas d'un système défini par
deux polynômes d'une même variable. L'idéal engendré par A et B est l'ensemble des polynômes de la forme
AU + BV , avec U et V polynômes quelconques. Nous savons que cet idéal est également engendré par D, le
polynôme unitaire plus grand diviseur commun de A et B.
Le fait que D soit dans l'idéal est lié à l'existence d'une relation de Bezout du type AU1 + BV1 = D , le fait
qu'il soit générateur est immédiat : A et B étant des multiples de D, tout élément du type AU + BV est
également multiple de D.
Ce qui précède se traduit alors simplement par
RSA( x) = 0 ⇔ D( x) = 0
TB( x) = 0
Ce qui n'est pas vraiment une surprise !
En particulier, si A et B sont premiers entre eux, D = 1 et le système n'a pas de solution.
3
T © Texas Instruments
Introduction au calcul formel
37/46
Certaines familles de générateurs sont particulièrement intéressantes et sont appelées Bases de
Gröbner (nous verrons plus loin comment les construire, ainsi que la définition exacte de cette notion).
Un des intérêts majeurs10 de ces bases réside dans le fait qu'un système d'équations admet un
nombre fini de solutions si et seulement si la base de Gröbner associée contient un polynôme
s'exprimant en fonction d'une variable seulement. Il suffit alors d'utiliser ce polynôme pour
calculer les valeurs possibles de cette variable. De plus, on peut toujours ensuite calculer de
proche en proche les autres variables en utilisant les relations définies par les autres polynômes
de cette base.
Considérons par exemple le système
R|x 2 + y2 − 1 = 0
|Sx 2 − y2 − z = 0
||x + y − z2 = 0
T
af
af
af
on peut montrer que l'idéal engendré par A x = x 2 + y2 − 1, B x = x 2 − y2 − z et C x = x + y − z 2 est
également engendré par la base de Gröbner suivante :
a f
Qa x, y, z f = −4 x 4 + 4 x 2 + x + y − 1
Ra x, y, z f = 8 x 8 − 16 x 6 − 4 x 5 + 12 x 4 + 4 x 3 − 3 x 2 − x
P x, y, z = −2 x 2 + z + 1
Le dernier polynôme s'exprime en fonction de x seulement. L'utilisation d'algorithmes classiques sur la
factorisation des polynômes à coefficients entiers montre que
a
f a fe
je
j
R x, y, z = x x − 1 2 x 2 − 1 4 x 4 + 4 x 3 − 2 x 2 − 4 x − 1 .
Ce qui permet de déterminer les valeurs de x.
a
f
a
f
La résolution de Q x, y, z = 0 donne ensuite immédiatement y, puis celle de P x, y, z = 0 permet de
déterminer les valeurs de z.
Nous allons présenter ici un aperçu de l'algorithme de construction de ces Bases de Gröbner, ce qui
nous permettra de mieux comprendre certaines particularités de cette méthode. Nous devons pour cela
définir quelques notions : ordre sur les monômes, monôme principal d'un polynôme, réduction d'un
polynôme par rapport à une famille de polynômes, et enfin s-polynômes.
Il ne faut pas se laisser impressionner par certains de ces termes. On peut dans une certaine mesure
considérer qu'il ne s'agit que d'une généralisation des méthodes appliquées lors d'une division
euclidienne, ou encore lors d'une réduction de Gauss d'un système linéaire.
Le premier problème est celui de l'ordre dans lequel on va classer les différents monômes d'un
polynôme. Une méthode classique consiste à choisir un ordre sur les variables, puis à l'étendre aux
différents termes en utilisant un ordre lexicographique.
Par exemple, l'ordre induit par Y
X est :
Y 3 > Y 2 X > Y 2 > YX 7 > YX > X
Par contre, avec X
Y , on aura
X 7Y > XY 2 > XY > X > Y 3 > Y 2
10
Nous parlons ici de la résolution des systèmes d'équations, mais il faut savoir que ces Bases de Gröbner sont
également très utilisées lorsque l'on cherche à simplifier une expression en tenant compte des relations existant
entre les différentes variables, ou sous-expressions, qui la composent.
On pourra par exemple simplifier une expression trigonométrique en utilisant le fait que sin 2 ( x ) + cos 2 ( x ) = 1 , ou
encore simplifier un polynôme symétrique en utilisant les polynômes symétriques élémentaires.
3
T © Texas Instruments
Introduction au calcul formel
38/46
On peut alors définir le monôme principal d'un polynôme comme étant celui qui est maximal pour cet
ordre.
Par exemple, si on prend
af
P X = X 7Y + XY 2 + X + Y 3 + Y 2
le monôme principal associé au choix de l'ordre induit par Y
choisit X Y .
X est Y 3 , alors que c'est X 7Y si on
Nous pouvons maintenant définir la notion de réduction d'un polynôme P par rapport à une famille de
polynômes P1,…, Pn .
b
g
b
g
On dit qu'un polynôme P est réduit par rapport à une famille de polynômes P1,…, Pn si aucun
monôme principal des polynômes de la famille ne divise le monôme principal de P.
Dans le cas contraire, il est possible d'éliminer le monôme principal de P en utilisant une opération du
type Q ← P − M ⋅ Pi avec M monôme.
Il est important de bien comprendre que cette notion dépend de celle de terme maximal, et que les
opérations de réduction que l'on pourra faire dépendent de l'ordre choisi pour ordonner les monômes.
Considérons par exemple le polynôme
b
P = X 4Y + XY 4
g
et la famille P1, P2 avec
P1 = X 2Y + Y 4
P2 = X 2Y 4 + XY 5
•
Si on choisit d'utiliser l'ordre lexicographique induit par X
il est divisible par celui de P1 qui est X 2Y .
Y , le terme principal de P est X 4Y , et
On peut l'éliminer par l'opération
e
j
e
j
Q ← P − X 2 P1 = X 4Y + XY 4 − X 2 X 2Y + Y 4 = XY 4 − X 2Y 4
•
Choisissons à présent l'ordre lexicographique induit par Y
utilisant cet ordre :
X et réécrivons les polynômes en
P = Y 4 X + YX 4
P1 = Y 4 + YX 2
P2 = Y 5 X + Y 4 X 2
le terme principal de P est Y 4 X , celui de P1 est Y 4 , celui de P2 est Y 5 X et on peut donc réduire le
monôme principal de P en utilisant l'opération
e
j
Q ← P − XP1 = Y 4 X + YX 4 − X Y 4 + YX 2 = YX 4 − YX 3
De même, on dit qu'un polynôme P est totalement réduit par rapport à une famille de polynômes
P1,…, Pn si aucun monôme de P n'est divisible par le monôme principal d'un élément de P1,…, Pn .
b
g
b
g
Par exemple P = X 6 + X 5Y est réduit par rapport à P1 = X 2Y + Y 4 et P2 = X 2Y 4 + XY 5 : X 6 n'est
divisible ni par X 2Y , ni par X 2Y 4 . (On choisit ici X Y ).
Par contre, il n'est pas totalement réduit. X 5Y est divisible par X 2Y et l'opération
e
j
e
j
Q ← P − X 3 P1 = X 6 + X 5Y − X 3 X 2Y + Y 4 = X 6 − X 3Y 4
3
T © Texas Instruments
Introduction au calcul formel
39/46
permet donc "d'éliminer" le terme X 5Y .
Réduire totalement un polynôme par rapport à une famille de polynômes consiste à appliquer
autant de fois que possible ce type d'opérations jusqu'à ce que l'on parviennent à un polynôme
totalement réduit11.
Cette notion de réduction par rapport à une famille de polynômes permet de définir précisément ce
qu'est une Base de Gröbner12. Elle est très importante dans le domaine du calcul formel13.
Il reste à présent à définir la notion de s-polynôme.
Étant donnés deux polynômes P1 et P2 , de monômes principaux respectifs M1 et M2 , on appelle
s-polynôme le polynôme obtenu en calculant :
ppcm( M1, M2 )
ppcm( M1, M2 )
Q=
P1 −
P2
M1
M2
Cette opération a pour effet "d'éliminer" les monômes M1 et M2 .
Par exemple, pour P1 = X 2Y + Y 4 et P2 = X 2Y 4 + XY 5 , on obtient
Q=
X 2Y 4
X 2Y 4
P
−
P = Y3 P1 − P2 = Y 7 − XY 5 = − XY 5 + Y 7
1
2
2 4 2
X Y
X Y
On obtient une base de Gröbner en utilisant un algorithme (algorithme de Buchberger) qui utilise des
calculs de s-polynômes et des réductions de polynômes. Vous trouverez plus d'informations à ce sujet
page 43, avec un exemple d'utilisation.
Le point important est que la façon dont seront effectuées les étapes de cet algorithme et le résultat
final dépendent de l'ordre choisi pour ordonner les monômes. Par exemple, dans le cas d'un systèmes
d'équations polynomiales en x et y, le choix y x va conduire à une élimination prioritaire des termes
en y, et on obtiendra un polynôme s'exprimant uniquement en fonction de x.
Par exemple, pour le système
R|x3y3 − 2 = 0
S|x3y2 + y − 1 = 0
T
11
Dans le cas où l'on travaille avec des polynômes d'une seule variable, et où la famille ne comporte qu'un seul
polynôme P1 , cette suite de réductions est équivalente à la recherche du reste de la division euclidienne par P1 .
12
Par définition, B est une Base de Gröbner d'un idéal I engendré par une famille de polynôme, si et seulement
si l'appartenance d'un polynôme P à I est caractérisée par le fait que la réduction de P par rapport à B conduit au
polynôme nul.
13
Ces notions de bases de Gröbner et de réduction peuvent également être utilisées lors de la démonstration de
propriétés géométriques. On traduit pour cela les hypothèses sous forme analytique, ce qui conduit à écrire que
certains polynômes de plusieurs variables (les coordonnées des points considérés) sont nuls.
On considère alors une base de Gröbner de l'idéal I engendré par cette famille de polynômes.
La conclusion à démontrer se traduit également par le fait qu'un ou plusieurs polynômes de plusieurs variables
doivent être nuls. Cela sera vrai s'ils sont dans l'idéal I, c'est à dire si la réduction de ces polynômes par rapport à
la base de Gröbner conduit au polynôme nul.
Comme nous l'avons vu, cette notion de réduction généralise celle de division euclidienne, et cela permet de
donner une sens, sans aller plus loin dans les notions de calculs modulo un idéal, à une formule pour le moins
surprenante au premier abord : "Pour démontrer qu'un théorème est vrai, il suffit de diviser la conclusion par les
hypothèses… si le reste est nul, le théorème est démontré.".
Il n'est pas possible de préciser tout cela en détail dans le cadre de ce document d'initiation. Si vous souhaitez
approfondir ce type de sujet, et plus généralement ce qui concerne l'utilisation des outils de calcul formel, vous
pourrez vous reporter à différents ouvrages. On peut par exemple citer le livre Calcul formel mode d'emploi,
Gomez Salvy Zimmermann. Éditions Masson.
3
T © Texas Instruments
Introduction au calcul formel
40/46
avec y
x , on obtient
R|4 x6 + 5x3 + 2 = 0
S|− y + 4 x3 + 3 = 0
T
Par contre, si on choisit x
y , on est conduit à
R|− y2 + y − 2 = 0
S|4 x3 − y + 3 = 0
T
Le choix de l'ordre y x conduit ici à un polynôme de degré 6 en x, alors que le choix de l'ordre x
conduit à un polynôme de degré 2 seulement en x.
y
Voici à présent les différentes bases de Gröbner que l'on obtient en choisissant successivement les
ordres x y z , x z y , y x z , y z x , z x y puis z y x dans le cas du système :
R|x 2 + y2 − 1 = 0
|Sx 2 − y2 − z = 0
||x + y − z2 = 0
T
Elles ont été obtenues avec Maple en utilisant la fonction gbasis14, présente dans le package grobner.
14
Le premier argument est la liste des polynômes, le deuxième l'ordre à utiliser entre les différentes variables – il
y a ici 6 possibilités – le troisième indique comment cet ordre est étendu aux monômes s'exprimant en fonction
de plusieurs variables. On utilise ici le choix plex qui correspond à l'ordre lexical.
3
T © Texas Instruments
Introduction au calcul formel
41/46
Notons que l'on obtient dans certains cas une famille de quatre polynômes. Cela n'a rien d'anormal.
Les "Bases" de Gröbner ne se comportent pas comme les bases auxquelles nous sommes habitués dans
le cadre de l'algèbre linéaire. Elles ne comportent pas toutes un même nombre d'éléments, et ce
nombre peut être supérieur au cardinal de la famille génératrice initiale15.
On peut aussi constater que le degré des polynômes manipulés augmente avec la complexité du
système initial. Dans certains cas, les calculs générés par l'algorithme de construction deviennent trop
complexes, et entraînent une saturation des capacités du système de calcul formel utilisé.
Ce qui précède montre que le choix utilisé pour ordonner les variables a une importance considérable.
Il est automatiquement déterminé par le système en fonction de différents critères.
Dans le cas de la TI-89, une réécriture sous une forme différente des équations permet parfois d'aboutir
à un choix différent, et à une complexité moins grande, qui sera naturellement accompagnée d'une
réduction du temps de calcul.
Par exemple, la fonction cSolve permet d'obtenir en quelques secondes seulement les solutions du
système :
R|x3y3 − 2 = 0
S|x3y2 + y − 1 = 0
T
aSf
alors qu'il faut environ 1'40" si on demande de résoudre le système obtenu en permutant le rôle des
inconnues x et y :
|RSy3x3 − 2 = 0
|Ty3x 2 + x − 1 = 0
aS ′f
Ce qui précède permet de le comprendre facilement. Dans les deux cas, la TI-89 a choisi d'éliminer en
priorité la variable x afin d'obtenir une équation polynomiale en y. Permuter ces deux variables revient
en fait à inverser l'ordre qui sera utilisé lors de la recherche d'une base de Gröbner.
On retrouve donc les calculs correspondant aux deux choix x y et y
base de Gröbner associée au polynômes définissant le système S .
af
x lors de la recherche d'une
Comme nous l'avons vu page 41, cela conduit à une équation de degré 2 dans le premier cas, alors que
dans le second on obtient une équation de degré 6.
Par ailleurs, cet algorithme ne sera pas automatiquement utilisé par une TI-89 pour résoudre le
système formé par
1 1
+ =1
x y
1 1
− =2
x y
alors qu'il est facile de se ramener à un système polynomial, et que ce système est de plus clairement à
la portée d'un élève de seconde moyennant un simple changement de variable…
Une fois encore il est important de savoir que les logiciels de calcul formel n'ont aucune raison d'être
astucieux, ils se contentent d'appliquer des méthodes générales qui doivent, même au prix de calculs
inutiles permettre d'obtenir la ou les solutions d'un problème donné. Une raison supplémentaire de
prendre un peu de temps avant de se lancer aveuglément dans certains calculs sur un logiciel de calcul
formel, au risque de bien des déceptions !
15
3
Cela s'explique par l'ajout éventuel de polynômes au cours de l'algorithme de construction, voir page 43.
T © Texas Instruments
Introduction au calcul formel
42/46
Annexe : un exemple complet de recherche de base de Gröbner
b
g
Soit P1,…, Pn une famille de polynômes. Voici comment16 obtenir une base de Gröbner :
•
•
a f
Si pour tout couple d'entiers distincts i, j ∈„1, n … , le s-polynôme S de Pi et Pj peut être réduit à 0
en utilisant, plusieurs fois au besoin, des opérations de réductions du type S ← S − M ⋅ Pi , alors
la famille est une base de Gröbner, et l'algorithme est terminé.
Dans le cas contraire,
1. On ajoute la forme réduite d'un s-polynôme ne se réduisant pas à 0 à la famille initiale.
2. On remplace ensuite chaque polynôme par sa forme réduite par rapport à la sous-famille
constituée par les autres polynômes de la famille. Lorsque la forme réduite obtenue est égale à
0, on supprime ce polynôme de la famille.
3. On recommence ce qui précède à partir de cette nouvelle famille de polynômes…
Vous trouverez ci-dessous un exemple complet des calculs effectués pour la recherche par cette
méthode de la base de Gröbner de l'idéal engendré par P = x 3 y3 − 2 et Q = x 3 y2 + y − 1 . Cette base
pourra ensuite être utilisée pour déterminer les solutions du système :
R|x3y3 − 2 = 0
S|x3y2 + y − 1 = 0
T
N.B. Les lignes suivantes ont été générées par un programme, ce qui explique leur aspect répétitif. De
plus, les polynômes sont renumérotés lors de l'ajout ou de la suppression de polynômes dans la
famille. Une série de lignes de la forme suivante :
Étude de la réduction éventuelle de
x3 y-2 x3+y-1
x3 y avec 1/4 y P2 : -2 x3+3/4 y-1+1/4 y3
-2 x3 avec -1/2 P2 : 1/4 y3+3/4 y-1/2-1/2 y2
1/4 y3 avec -1/4 y P1 : -1/4 y2+1/4 y-1/2
…
traduit une suite de réductions rendues possibles par le fait que le monôme principal d'un polynôme de
la famille divise le monôme principal17 du polynôme à réduire.
Dans le cas présent, la première ligne indique que l'on a éliminé le monôme x 3 y à l'aide du polynôme
y
3y
y3
⋅ P2 , et que l'on a obtenu −2 x 3 +
− 1 + . On a ensuite éliminé le monôme
4
4
4
3
−2 x figurant dans ce dernier polynôme en utilisant le polynôme P2 , et ainsi de suite…
P2 en calculant P −
1/ Calcul liés au choix de l'ordre x
y.
Étude de la famille composée de :
P1 = x3 y3-2
P2 = x3 y2+y-1
Calcul du s-polynôme de P1 et P2 :
Réduction
- pas de réduction pour
-y2+y-2
-y2+y-2
Ce n'est pas une base de Gröbner.
Il faut ajouter
-y2+y-2
16
Il s'agit ici d'une version simplifiée et non optimisée. Il est par exemple inutile de recalculer et d'étudier la
réduction de tous les s-polynômes à chaque nouvelle étape. Cette description permet cependant de comprendre
les idées de cette méthode, qui se termine toujours après un nombre fini (mais parfois élevé…) d'opérations.
17
3
Ou un monôme quelconque dans le cas de la recherche d'une réduction totale.
T © Texas Instruments
Introduction au calcul formel
43/46
Nouvelle famille génératrice (avant réduction):
P1 = x3 y3-2
P2 = x3 y2+y-1
P3 = -y2+y-2
Recherche des éléments à supprimer
Étude de la réduction éventuelle de
x3 y3-2
x3 y3 avec y P1 : -y2+y-2
-y2 avec P2 : 0
Étude de la réduction éventuelle de
x3 y2+y-1
3
2
3
3
3
x y avec -x P2 : y-1+x y-2 x
- pas de réduction pour
x3 y-2 x3+y-1
Étude de la réduction éventuelle de
-y2+y-2
- pas de réduction pour
-y2+y-2
Nouvelle famille génératrice (après réduction):
P1 = x3 y-2 x3+y-1
P2 = -y2+y-2
Test de la nouvelle famille génératrice
Étude de la famille composée de :
P1 = x3 y-2 x3+y-1
P2 = -y2+y-2
Calcul du s-polynôme de P1 et P2 :
x3 y-y2+y+2 x3
Réduction
x3 y avec P1 : 4 x3-y2+1
- pas de réduction pour
4 x3-y2+1
Ce n'est pas une base de Gröbner.
Il faut ajouter
4 x3-y2+1
Nouvelle famille génératrice (avant réduction):
P1 = x3 y-2 x3+y-1
P2 = -y2+y-2
P3 = 4 x3-y2+1
Recherche des éléments à supprimer
Étude de la réduction éventuelle de
x3 y-2 x3+y-1
3
3
x y avec 1/4 y P2 : -2 x +3/4 y-1+1/4 y3
-2 x3 avec -1/2 P2 : 1/4 y3+3/4 y-1/2-1/2 y2
1/4 y3 avec -1/4 y P1 : -1/4 y2+1/4 y-1/2
-1/4 y2 avec 1/4 P1 : 0
Étude de la réduction éventuelle de
-y2+y-2
- pas de réduction pour
-y2+y-2
Étude de la réduction éventuelle de
4 x3-y2+1
4 x3 avec P2 : -y+4 x3+3
- pas de réduction pour
4 x3-y+3
Nouvelle famille génératrice (après réduction):
P1 = -y2+y-2
P2 = 4 x3-y+3
Test de la nouvelle famille génératrice
Étude de la famille composée de :
P1 = -y2+y-2
P2 = 4 x3-y+3
Calcul du s-polynôme de P1 et P2 :
4 x3 y-8 x3-y3+3 y2
Réduction
4 x3 y avec y P2 : -8 x3-y3+4 y2-3 y
-8 x3 avec -2 P2 : -y3+4 y2-5 y+6
-y3 avec y P1 : 3 y2-3 y+6
3 y2 avec -3 P1 : 0
Le s-polynôme de P1 et P2 se réduit à 0
C'est une base de Gröbner
3
T © Texas Instruments
Introduction au calcul formel
44/46
On obtient donc ici le système équivalent :
2/ Calcul liés au choix de l'ordre y
R|− y2 + y − 2 = 0
S|4 x3 − y + 3 = 0
T
x
Étude de la famille composée de :
P1 = y3 x3-2
P2 = y2 x3+y-1
Calcul du s-polynôme de P1 et P2 :
Réduction
- pas de réduction pour
-y2+y-2
-y2+y-2
Ce n'est pas une base de Gröbner.
Il faut ajouter
-y2+y-2
Nouvelle famille génératrice (avant réduction):
P1 = y3 x3-2
P2 = y2 x3+y-1
P3 = -y2+y-2
Recherche des éléments à supprimer
Étude de la réduction éventuelle de
y3 x3-2
y3 x3 avec y P1 : -y2+y-2
-y2 avec P2 : 0
Étude de la réduction éventuelle de
y2 x3+y-1
y2 x3 avec -x3 P2 : y x3+y-2 x3-1
- pas de réduction pour
y x3+y-2 x3-1
Étude de la réduction éventuelle de
-y2+y-2
- pas de réduction pour
-y2+y-2
Nouvelle famille génératrice (après réduction):
P1 = y x3+y-2 x3-1
P2 = -y2+y-2
Test de la nouvelle famille génératrice
Étude de la famille composée de :
P1 = y x3+y-2 x3-1
P2 = -y2+y-2
Calcul du s-polynôme de P1 et P2 :
-y2+y x3+y+2 x3
Réduction
-y2 avec P2 : y x3+2 x3+2
y x3 avec P1 : -y+4 x3+3
- pas de réduction pour
-y+4 x3+3
Ce n'est pas une base de Gröbner.
Il faut ajouter
-y+4 x3+3
Nouvelle famille génératrice (avant réduction):
P1 = y x3+y-2 x3-1
P2 = -y2+y-2
P3 = -y+4 x3+3
Recherche des éléments à supprimer
Étude de la réduction éventuelle de
y x3+y-2 x3-1
3
3
3
6
y x avec -x P2 : y+x -1+4 x
y avec -P2 : 4 x6+5 x3+2
- pas de réduction pour
4 x6+5 x3+2
Étude de la réduction éventuelle de
-y2+y-2
2
3
-y avec y P2 : -2 y-2-4 y x
-4 y x3 avec -4 P1 : 2 y-6-8 x3
3
T © Texas Instruments
Introduction au calcul formel
45/46
2 y avec -2 P2 : 0
Étude de la réduction éventuelle de
- pas de réduction pour
-y+4 x3+3
-y+4 x3+3
Nouvelle famille génératrice (après réduction):
P1 = 4 x6+5 x3+2
P2 = -y+4 x3+3
Test de la nouvelle famille génératrice
Étude de la famille composée de :
P1 = 4 x6+5 x3+2
P2 = -y+4 x3+3
Calcul du s-polynôme de P1 et P2 :
-5 y x3-2 y-16 x9-12 x6
Réduction
-5 y x3 avec 5 x3 P2 : -2 y-16 x9-32 x6-15 x3
-2 y avec 2 P2 : -16 x9-32 x6-23 x3-6
-16 x9 avec -4 x3 P1 : -12 x6-15 x3-6
-12 x6 avec -3 P1 : 0
Le s-polynôme de P1 et P2 se réduit à 0
C'est une base de Gröbner
On obtient le système équivalent :
R|4 x6 + 5x3 + 2 = 0
S|− y + 4 x3 + 3 = 0
T
Attention, il ne s'agit ici que d'un exemple assez simple, il faudrait plusieurs pages pour afficher la
liste des étapes effectuées lors d'un calcul de Base de Gröbner associée à un système donné.
Voici à titre d'exemple la fin des calculs occasionnés par un autre système :
Étude de la famille composée de :
P1 = y2+x2-1
P2 = -z-y2+x2
P3 = -z2+y+x
…
…
P1 = -z+2*x2-1
P2 = y-4*x4+4*x2+x-1
P3 = 16*x8-32*x6-8*x5+24*x4+8*x3-6*x2-2*x
…
Calcul du s-polynôme de P2 et P3 : -64 x^12+64 x10+16 x9-16 x8+32 y x6+8 y x5-24 y x4-8 y x3+6 y
x2+2 y x
Réduction
- 32y x6 avec 32x6 P2 : 8y x5-24y x4-8y x3+6y x2+2y x-64x12+192x10+16x9-144x8-32x7+32x6
- 8y x5 avec 8 x5 P2 : -24y x4-8y x3+6y x2+2y x-64x12+192x10+48x9-144x8-64x7+24x6+8x5
- -24y x4 avec -24x4 P2 : -8y x3+6y x2+2y x-64x12+192x10+48x9-240x8-64x7+120x6+32x5-24x4
- -8 y x3 avec -8 x3 P2 : 6 y x2+2 y x-64 x12+192 x10+48 x9-240 x8-96 x7+120 x6+64 x5-16 x4-8 x3
- 6 y x2 avec 6 x2 P2 : 2 y x-64 x12+192 x10+48 x9-240 x8-96 x7+144 x6+64 x5-40 x4-14 x3+6 x2
- 2 y x avec 2 x P2 : -64 x12+192 x10+48 x9-240 x8-96 x7+144 x6+72 x5-40 x4-22 x3+4 x2+2 x
- -64 x12 avec -4 x4 P3 : 64 x10+16 x9-144 x8-64 x7+120 x6+64 x5-40 x4-22 x3+4 x2+2 x
- 64 x10 avec 4 x2 P3 : 16 x9-16 x8-32 x7+24 x6+32 x5-16 x4-14 x3+4 x2+2 x
- 16 x9 avec x P3 : -16 x8+32 x6+8 x5-24 x4-8 x3+6 x2+2 x
- -16 x8 avec -P3 : 0
Le s-polynôme de P2 et P3 se réduit à 0
C'est une base de Gröbner
On arrive ici à un polynôme de degré 8 en x (mais on peut le factoriser, voir page 40).
3
T © Texas Instruments
Introduction au calcul formel
46/46