Mise sous forme implicite de courbes et de surfaces paramétrages rationnels

Publié par

Mise sous forme implicite de courbes et de surfaces à paramétrages rationnels Enfin un texte ne demandant pas de programmation. L'exemple de la courbe On commence par traiter l'exemple simple de la courbe dont les deux équations paramétrées sont > EqParamx:=t^4-t+1-x; EqParamy:=t^3+t+1-y; := EqParamx ? + ?t4 t 1 x := EqParamy + + ?t3 t 1 y Par un calcul de résultant on élimine t . > EqImp:=resultant(EqParamx,EqParamy,t); := EqImp ? ? + + ? + ? + ?23 18 x 34 y 22 y2 13 x y 7 y3 5 x2 4 x y2 y4 x3 On obtient un polynôme en ,x y qui, lorsqu'il est nul, indique que les deux équations paramétrées ont une ou plusieurs solutions communes en t . Expliquer comment il peut y en avoir plusieurs. Cette équation implicite étant irréductible > factor(EqImp); ? ? + + ? + ? + ?23 18 x 34 y 22 y2 13 x y 7 y3 5 x2 4 x y2 y4 x3 il n'y a pas de terme parasite . Un remarque : pour le graphique le système paramétré est meilleur > plot([t^4-t+1,t^3+t+1,t=-2.

  • z2 y2

  • y2 x2

  • courbe

  • développement initial

  • équation implicite

  • eqparamx ?

  • carré venant de rxzt

  • équation sans le carré


Publié le : mardi 19 juin 2012
Lecture(s) : 21
Tags :
Source : math.unice.fr
Nombre de pages : 8
Voir plus Voir moins
Mise sous forme implicite de courbes et de surfaces à
paramétrages rationnels
Enfin un texte ne demandant pas de programmation.
L’exemple de la courbe
On commence par traiter l’exemple simple de la courbe dont les deux équations paramétrées
sont
>
EqParamx:=t^4-t+1-x; EqParamy:=t^3+t+1-y;
:=
EqParamx
- +
-
t
4
t
1
x
:=
EqParamy
+ +
-
t
3
t
1
y
Par un calcul de résultant on élimine
t
.
>
EqImp:=resultant(EqParamx,EqParamy,t);
:=
EqImp
-
-
+
+
-
+
-
+
-
23
18
x
34
y
22
y
2
13
x y
7
y
3
5
x
2
4
x y
2
y
4
x
3
On obtient un polynôme en
,
x y
qui, lorsqu’il est nul, indique que les deux équations
paramétrées ont une ou plusieurs solutions communes en
t
.
Expliquer comment il peut y en avoir plusieurs.
Cette équation implicite étant irréductible
>
factor(EqImp);
-
-
+
+
-
+
-
+
-
23
18
x
34
y
22
y
2
13
x y
7
y
3
5
x
2
4
x y
2
y
4
x
3
il n’y a pas de
terme parasite
.
Un remarque : pour le graphique le système paramétré est meilleur
>
plot([t^4-t+1,t^3+t+1,t=-2..2]);
–5
0
5
10
2
4
6
8
10
12
14
16
18
La fonction pour tracer la courbe donnée par l’équation implicite est dans la bibliothèque plots.
>
with(plots):
Warning, the name changecoords has been redefined
>
implicitplot(EqImp,x=0..18,y=-9..11);
–5
0
5
10
y
2
4
6
8
10
12
14
16
18
x
Maple a la tremblote. Par défaut une grille de 25x25 carreaux est utilisé. On peut améliorer le
graphique en raffinant ce découpage.
>
implicitplot(EqImp,x=0..18,y=-9..11,grid=[100,100]);
–5
0
5
10
y
2
4
6
8
10
12
14
16
18
x
C’est mieux, mais le problème est beaucoup plus compliqué que le tracé d’une courbe
paramétrée (commenter).
A quoi l’équation implicite peut-elle donc servir ? A calculer un certain nombre d’objets
algébriques comme les fonctions polynomiales sur cette courbe : k[x,y]/(EqImp(x,y)) ou plus
simplement à tester si le point (x,y) appartient à la courbe d’équation EqImp(x,y)=0.
L’exemple de la surface par les résultants : le problème
Les équations paramétrées de la surface sont des fractions rationnelles en
,
t s
. Pour pouvoir
calculer des résultants en
,
t s
il faut se ramener à des polynômes (ce que le texte ne dit pas).
>
EqParamx:=t^2-2*s*t-1-(t^2+1)*x;EqParamy:=2*t+s*t^2+s-(t^2+1)
*y;EqParamz:=s-z;
:=
EqParamx
-
-
-
t
2
2
s t
1
(
)
+
t
2
1
x
:=
EqParamy
+
+
-
2
t
s t
2
s
(
)
+
t
2
1
y
:=
EqParamz
-
s
z
Il y a une
erreur dans le texte
. Prions pour que cela ne vous arrive pas. Ce texte est ancien, je
pense qu’ils sont actuellement mieux formatés et mieux contrôlés.
Si l’on suit les éliminations indiqués on ne trouve pas le résultat donné dans le texte.
On commence par éliminer
t
entre l’équation de
x
et de
y
>
Rxyt:=resultant(EqParamx,EqParamy,t);
:=
Rxyt
-
+
-
+
-
+
+
+
-
4
s
2
8
s y
4
y
2
8
s
2
x
4
s
4
8
s
3
y
8
s y x
4
s
2
y
2
4
x
2
4
puis entre l’équation de
x
et de
z
.
>
Rxzt:=resultant(EqParamx,EqParamz,t);
:=
Rxzt
(
)
-
s
z
2
Remarquons que l’équation de
z
ne contient pas
t
, donc est une constante pour ce résultant.
On élimine maintenant
s
entre les deux résultants.
>
EqImp:=resultant(Rxyt,Rxzt,s);
:=
EqImp
(
)
- +
+
-
+
+
-
+
-
+
4
4
y
2
4
x
2
8
z y
8
z y x
4
z
2
8
z
2
x
4
z
2
y
2
8
z
3
y
4
z
4
2
Le carré venant de Rxzt.
On récupère la partie primitive de cette équation sans le carré.
>
EqImp:=primpart(-4+4*y^2+4*x^2-8*z*y+8*z*x*y+4*z^2-8*z^2*x+4*
z^2*y^2-8*z^3*y+4*z^4);
:=
EqImp
- +
+
-
+
+
-
+
-
+
1
y
2
x
2
2
z y
2
z y x
z
2
2
z
2
x
z
2
y
2
2
z
3
y
z
4
>
factor(EqImp);
- +
+
-
+
+
-
+
-
+
1
y
2
x
2
2
z y
2
z y x
z
2
2
z
2
x
z
2
y
2
2
z
3
y
z
4
Elle est irréductible.
Prenons le problème dans l’autre sens.
On commence par éliminer
s
entre l’équation de
x
et de
y
>
Rxys:=resultant(EqParamx,EqParamy,s);
:=
Rxys
-
+
+
-
+
+
+
+
4
t
2
2
y t
3
2
t y
t
4
1
x t
4
2
x t
2
x
puis entre l’équation de
x
et de
z
.
>
Rxzs:=resultant(EqParamx,EqParamz,s);
:=
Rxzs
-
+
+
+
+
t
2
1
x t
2
x
2
z t
On élimine maintenant
t
entre les deux résultants.
>
EqImp:=resultant(Rxys,Rxzs,t);
EqImp
16
32
z y
32
z x
3
y
32
z y x
2
16
y
2
x
2
z
2
32
z
3
x
2
y
32
z y x
16
y
2
+
+
-
+
-
-
-
:=
32
x
2
16
z
2
32
z
2
x
16
z
2
y
2
32
z
3
y
16
z
4
16
z
2
x
2
16
x
4
16
y
2
x
2
32
z
2
x
3
-
-
+
-
+
-
+
+
+
-
16
z
4
x
2
+
On décompose cette équation
>
factor(EqImp);
16 (
)
+
x
1 (
)
- +
1
x
(
)
- +
+
-
+
+
-
+
-
+
1
y
2
x
2
2
z y
2
z y x
z
2
2
z
2
x
z
2
y
2
2
z
3
y
z
4
et voilà, on a des termes parasites.
Première remarque : le résultat dépend de l’ordre des éliminations, ce qui est génant.
On va essayer de comprendre l’origine des termes parasites.
On présente les deux premiers résultants comme des polynômes en
t
.
>
sort(Rxys,t);
-
+
-
+
+
+
+
x t
4
t
4
2
y t
3
4
t
2
2
x t
2
2
y t
1
x
Remarquons que sort modifie son premier argument :
>
Rxys;
-
+
-
+
+
+
+
x t
4
t
4
2
y t
3
4
t
2
2
x t
2
2
y t
1
x
On voudrait rassembler les termes de même degré en
t
.
>
Rxys:=collect(Rxys,t);
:=
Rxys
+
+
+
+
+
(
)
- +
1
x t
4
2
y t
3
(
)
-
2
x
4
t
2
2
y t
x
1
collect ne modifie pas son argument.
Même travail sur l’autre résultant.
>
sort(Rxzs,t);
-
+
+
+
+
t
2
x t
2
2
z t
1
x
>
Rxzs:=collect(Rxzs,t);
:=
Rxzs
+
+
+
(
)
- +
1
x t
2
2
z t
x
1
Les deux résultants ont
-
x
1
comme coefficient principal d’où son apparition en facteur de leur
résultant.
Le résultant calculé n’est pas correct si
=
-
x
1
0
.
On a le même problème avec
+
x
1
terme constant des deux résultants.
La nouvelle méthode appliquée à la courbe
On applique la méthode du texte :
On définit
-
( )
g
t
y
et
( )
f
t
>
gmy:=t^3+t+1-y;
:=
gmy
+ +
-
t
3
t
1
y
>
f:=t^4-t+1;
:=
f
- +
t
4
t
1
L’équation a 3 racines. On va donc calculer
,
,
( )
S
1
y
( )
S
2
y
( )
S
3
y
et en déduire
,
,
( )
r
1
y
( )
r
2
y
( )
r
3
y
.
>
Adevelopper1:=f*diff(gmy,t)/gmy;
:=
Adevelopper1
(
)
- +
t
4
t
1 (
)
+
3
t
2
1
+ +
-
t
3
t
1
y
La fonction taylor ne calcule que les développements limités usuels. On utilise la fonction plus
générale series :
>
series(Adevelopper1,t=infinity,2);
-
-
+
+
+
3
t
3
2
t
6
3
y
5
t
O
1
t
2
Et donc
>
S1:=5;
:=
S1
5
Je ne sais pas récupérer autrement qu’à la main les coefficients d’un tel développement.
On continue :
>
Adevelopper2:=f*Adevelopper1;
:=
Adevelopper2
(
)
- +
t
4
t
1
2
(
)
+
3
t
2
1
+ +
-
t
3
t
1
y
>
series(Adevelopper2,t=infinity,2);
3
t
7
2
t
5
(
)
- +
9
3
y t
4
8
t
3
(
)
-
+
5
y
9
t
2
(
)
- +
3
(
)
-
9
3
y
(
)
-
1
y
t
23
13
y
-
+
+
+
+
-
+
- +
+
-
2
(
)
-
5
y
9 (
)
-
1
y
12
y
3
y
2
t
O
1
t
2
+
+
>
S2:=expand(-2+(5*y-9)*(1-y)+12*y-3*y^2);
:=
S2
-
+
-
11
26
y
8
y
2
Les coefficients ne sont pas automatiquement simplifiés?
>
Adevelopper3:=f*Adevelopper2;
:=
Adevelopper3
(
)
- +
t
4
t
1
3
(
)
+
3
t
2
1
+ +
-
t
3
t
1
y
>
series(Adevelopper3,t=infinity,2);
3
t
11
2
t
9
(
)
-
+
12
3
y t
8
11
t
7
(
)
-
11
5
y t
6
(
)
+
1
(
)
-
12
3
y
(
)
-
1
y
t
5
-
+
+
+
+
(
)
-
+
40
16
y t
4
(
)
- +
+
-
1
(
)
-
+
11
5
y
(
)
-
1
y
15
y
3
y
2
t
3
+
+
(
)
+
-
31
(
)
-
+
-
13
15
y
3
y
2
(
)
-
1
y
16
y t
2
(
)
+
-
+
24
(
)
-
40
16
y
(
)
-
1
y
31
y
8
y
2
t
+
+
(
)
-
+
12
31
y
8
y
2
(
)
-
1
y
28
12
y
18
y
2
3
y
3
+
-
-
+
-
-
+
+
-
58
(
)
-
-
+
-
18
12
y
18
y
2
3
y
3
(
)
-
1
y
87
y
24
y
2
t
O
1
t
2
+
+
>
S3:=expand(-58+(-18-12*y+18*y^2-3*y^3)*(1-y)+87*y-24*y^2);
:=
S3
-
+
+
-
+
76
93
y
6
y
2
21
y
3
3
y
4
On pourrait peut-être calculer un développement de Adevelopper1 à un ordre suffisant pour
pouvoir en déduire les coefficients corrects de
1
t
après multiplication par
,
( )
f
t
( )
f
t
2
.
Quel ordre ? Il faudrait un développement initial correct jusqu’à
1
t
9
puisqu’on va le multiplier
par un polynôme degré au plus 8.
>
series(Adevelopper1,t=infinity,10);
3
t
3
2
t
6
3
y
5
t
-
7
5
y
t
2
- +
4
(
)
-
6
3
y
(
)
-
1
y
t
3
-
+
12
10
y
t
4
-
-
+
+
+
+
+
-
+
-
(
)
- +
7
5
y
(
)
-
1
y
2
9
y
3
y
2
t
5
+
-
(
)
- +
-
2
9
y
3
y
2
(
)
-
1
y
12
10
y
t
6
+
+
+
-
+
(
)
-
12
10
y
(
)
-
1
y
9
21
y
8
y
2
t
7
-
-
+
-
(
)
-
+
9
21
y
8
y
2
(
)
-
1
y
10
y
12
y
2
3
y
3
t
8
+
+
-
+
-
(
)
-
-
+
-
10
y
12
y
2
3
y
3
(
)
-
1
y
21
43
y
18
y
2
t
9
O
1
t
10
+
+
En exercice ?
On calcule maintenant
,
,
( )
r
1
y
( )
r
2
y
( )
r
3
y
en utilisant les formules de Newton.
>
r1:=-S1;
:=
r1
-5
>
r2:=1/2*(-S2-S1*r1);
:=
r2
-
+
18
13
y
4
y
2
>
r3:=1/3*(-S3-S2*r1-S1*r2);
:=
r3
-
+
-
+
-
23
34
y
22
y
2
7
y
3
y
4
Et donc l’équation implicite dont il faut vérifier qu’elle est sans carré
>
EqImp:=x^3+r1*x^2+r2*x+r3;
:=
EqImp
-
+
-
+
-
+
-
x
3
5
x
2
(
)
-
+
18
13
y
4
y
2
x
23
34
y
22
y
2
7
y
3
y
4
>
sqrfree(EqImp);
[
]
,
1 [
]
[
]
,
-
+
-
+
-
+
-
+
-
x
3
5
x
2
18
x
13
x y
4
x y
2
23
34
y
22
y
2
7
y
3
y
4
1
La nouvelle méthode appliquée à la surface
On considère maintenant l’exemple de la surface qui est une
fausse
surface au sens qu’on peut
rapidement éliminer le paramètre
s
en utilisant
=
z
s
et se ramener à l’élimination du seul
paramètre
t
.
>
Eqy:=2*t+z*t^2+z-(t^2+1)*y;
:=
Eqy
+
+
-
2
t
z t
2
z
(
)
+
t
2
1
y
L’équation a deux racines en
t
. Donc le calcul de
,
( )
S
1
y
( )
S
2
y
et
,
( )
r
1
y
( )
r
2
y
suffira.
>
f1:=t^2-2*z*t-1;f2:=t^2+1;
:=
f1
-
-
t
2
2
t z
1
:=
f2
+
t
2
1
>
gcdex(f2,Eqy,t,’u’,’v’);
1
On obtient
(
)
u
,
y t
.
>
u;
+
1
-
+
y
2
z
2
t
>
Adevelopper1:=u*f1*diff(Eqy,t)/Eqy;
:=
Adevelopper1
+
1
-
+
y
2
z
2
t
(
)
-
-
t
2
2
t z
1 (
)
+
-
2
2
t z
2
t y
+
+
-
2
t
z t
2
z
(
)
+
t
2
1
y
>
series(Adevelopper1,t=infinity,2);
-
+
y
2
z
2
(
)
-
2
z
2
y t
2
-
z
y
-
+
y
z
-
+
2
-
+
y
2
z
2
z
1 (
)
-
2
z
2
y
t
-
z
y
+
-
+
+
-
+
4
-
+
y
2
z
2
z
-
y
2
5
z
2
(
)
-
2
z
2
y
(
)
- +
z
y
(
)
-
z
y
4
z y
4
z
2
-
z
y
+
- +
+
y
z
(
)
-
+
-
2
z y
2
z
2
1 (
)
-
z
y
(
)
-
z
y t
O
1
t
2
+
+
>
S1:=simplify((-y+z+(-2*z*y+2*z^2-1)*(z-y))/(z-y));
:=
S1
-
2 (
)
- +
z
y z
>
Adevelopper2:=u*f1*Adevelopper1;
:=
Adevelopper2
+
1
-
+
y
2
z
2
t
2
(
)
-
-
t
2
2
t z
1
2
(
)
+
-
2
2
t z
2
t y
+
+
-
2
t
z t
2
z
(
)
+
t
2
1
y
>
series(Adevelopper2,t=infinity,2);
-
+
y
2
z
2
2
(
)
-
2
z
2
y t
5
-
z
y
+
-
2
-
+
y
2
z
2
2
-
+
-
4
-
+
y
2
z
2
2
z
z
y
(
)
-
2
z
2
y
(
)
- +
z
y
2
t
4
-
z
y
8
-
+
y
2
z
2
2
z
-
+
+
z
y
-
+
-
+
y
2
z
2
2
(
)
- +
2
4
z
2
4 (
)
-
z
y z
1 (
)
-
2
z
2
y
(
)
- +
z
y
2
(
)
-
z
y
2
4
z y
2
-
+
+
-
+
8
z
2
y
4
z
3
-
+
t
3
-
z
y
/
(
)
2
-
+
y
2
z
2
2
(
)
- +
2
4
z
2
8 (
)
-
z
y z
-
+
+
-
4
-
+
y
2
z
2
2
z
(
)
-
z
y
(
)
- +
2
4
z
2
4
z
(
)
-
2
z
2
y
+
+
-
-
+
2
z y
2
3
2
y
4
z
2
y
3
2
z
2
z
3
(
)
-
z
y
4
z
2
y
2
3
y
2
8
z
3
y
18
z y
4
z
4
15
z
2
+
-
+
+
-
-
+
t
2
-
z
y
/
(
)
-
+
+
-
-
-
+
2
z
2
y
2
3
2
y
2
4
z
3
y
9
z y
1
2
z
4
15
2
z
2
(
)
-
z
y
8
-
+
y
2
z
2
2
z
+
+
2 (
)
-
z
y
(
)
- +
2
4
z
2
7
z
+
-
+
-
+
y
2
z
2
2
4 (
)
-
z
y z
2
4
z
2
(
)
-
2
z
2
y
8
z y
2
+
+
+
-
28
z
2
y
7
y
20
z
3
+
-
-
t
-
z
y
/
(
)
2
-
+
y
2
z
2
2
8 (
)
-
z
y z
20
z
2
(
)
-
5
z
y
(
)
-
2
z
2
y
+
-
+
+
Soyez le premier à déposer un commentaire !

17/1000 caractères maximum.