Sun Aug 18 16:08:04 2002 run on Windows
off echo;
Premier exemple: utilisation interactive sur une equation simple
desir(); %appel de DESIR
ATTENTION : chaque donnee doit etre suivie de ; ou de $
***** INTRODUCTION DES DONNEES *****
L' equation est de la forme
a(0)(x)d^0 + a(1)(x)d^1 + .... + a(n)(x)d^n = 0
ordre de l'equation ?
Donner les coefficients a(j)(x), j = 0..n
a(0) = 1
a(1) = x
a(2) = x
6
a(3) = x
correction ? ( oui; / non; )
transformation ? (oui;/non;)
nombre de termes desires pour la solution ?
LES 3 SOLUTIONS CALCULEES SONT LES SUIVANTES
==============
SOLUTION No 1
==============
1 4 1 3 2
x*(----*x - ---*x + x - 2*x + 2)
12 3
==============
SOLUTION No 2
==============
1 4 1 3 2 5 4 1 3
---*log(x)*x - ---*log(x)*x + log(x)*x - log(x)*x - ----*x + ---*x - x + 1
6 2 36 4
==============
SOLUTION No 3
==============
4
1/(4*x ) 10 361 4 1 3 1 2
e *x *(-----*x + ---*x + ---*x + x + 1)
24 6 2
voulez-vous continuer ?
'non;' : la liste des solutions calculees est affichee (sous
forme generalisee).
'non$' : cette liste n'est pas affichee.
6
{{{1,x,x,x },
4 3 2
xt - 4*xt + 12*xt - 24*xt + 24
{{{{0,1,-----------------------------------,1},{}}},
12
4 3 2
{{{0,1,(6*log(xt)*xt - 18*log(xt)*xt + 36*log(xt)*xt - 36*log(xt)*xt
4 3
- 5*xt + 9*xt - 36*xt + 36)/36,0},{}}},
4 3 2
1 361*xt + 4*xt + 12*xt + 24*xt + 24
{{{-------,1,---------------------------------------,10},{}}}}}}
4 24
4*xt
solvalide(first ws,1,4);
4 3 2
x*(x - 4*x + 12*x - 24*x + 24)
La solution numero 1 est -----------------------------------
12
La partie reguliere du reste est de l'ordre de x**(5)
Si on reporte cette solution dans l'equation, le terme significatif du reste
1 5
est : ---*x
2
5 3 2
x *(10*x - 16*x + 12*x + 1)
-------------------------------
2
Le meme exemple en utilisation directe
lcoeff:={1,x,x,x**6};
6
lcoeff := {1,x,x,x }
param:={};
param := {}
on trdesir; %obtention facultative d'une trace
Time: 990 ms plus GC time: 290 ms
sol:=delire(x,4,1,lcoeff,param);
0 -1 0 2
2 -1 4 1
Equation reduite :
6
xt * DF(Y,XT,3) +
xt * DF(Y,XT,2) +
xt * DF(Y,XT,1) +
1 * Y
Equation indicielle : lambd*(lambd - 1)
Solution en l'indeterminee lambda :
4 6 4 2
(xt *( - lambd + 5*lambd - 4*lambd + lambd + 4)
3 2 2 3 2
+ xt *( - lambd - 7*lambd - 12) + xt *(lambd + 9*lambd + 26*lambd + 24)
4 3 2
+ xt*( - lambd - 10*lambd - 35*lambd - 50*lambd - 24)
4 3 2 3 2
+ lambd*(lambd + 10*lambd + 35*lambd + 50*lambd + 24))/(lambd + 9*lambd
+ 26*lambd + 24)
2 -1 4 1
Equation caracteristique : 16*( - 4*&u + 1)
1
Racine eq. carac. : ---
4
0 -5 0 1
Equation reduite :
11
xt * DF(Y,XT,3) +
6
- 2*xt * DF(Y,XT,2) +
5 4
xt*(xt + 15*xt + 1) * DF(Y,XT,1) +
5 4
xt - 30*xt - xt - 10 * Y
Equation indicielle : lambd - 10
4 3 2
xt - 4*xt + 12*xt - 24*xt + 24
sol := {{{{0,1,-----------------------------------,1},{}}},
12
4 3 2
{{{0,1,(6*log(xt)*xt - 18*log(xt)*xt + 36*log(xt)*xt - 36*log(xt)*xt
4 3
- 5*xt + 9*xt - 36*xt + 36)/36,0},{}}},
4 3 2
1 361*xt + 4*xt + 12*xt + 24*xt + 24
{{{-------,1,---------------------------------------,10},{}}}}
4 24
4*xt
showtime; %temps d'execution de 'delire'
Time: 981 ms
1ieme solution :
1 4 1 3 2
x*(----*x - ---*x + x - 2*x + 2)
12 3
0
2ieme solution :
1 4 1 3 2 5 4 1 3
---*log(x)*x - ---*log(x)*x + log(x)*x - log(x)*x - ----*x + ---*x - x + 1
6 2 36 4
0
3ieme solution :
4
1/(4*x ) 10 361 4 1 3 1 2
e *x *(-----*x + ---*x + ---*x + x + 1)
24 6 2
0
solvalide({lcoeff,sol},2,4)$
1 4 1 3 2
La solution numero 2 est ---*log(x)*x - ---*log(x)*x + log(x)*x - log(x)*x
6 2
5 4 1 3
- ----*x + ---*x - x + 1
36 4
La partie reguliere du reste est de l'ordre de x**(4)
Si on reporte cette solution dans l'equation, le terme significatif du reste
5 4 17
est : ---*x *(log(x) + ----)
6 30
solvalide({lcoeff,sol},3,4)$
4
1/(4*xt ) 5 4
a(1) = e *(xt - 30*xt - xt - 10)
4
1/(4*xt ) 5 4
a(2) = e *xt*(xt + 15*xt + 1)
4
1/(4*xt ) 6
a(3) = - 2*e *xt
4
1/(4*xt ) 11
a(4) = e *xt
4
1/(4*x ) 10 361 4 1 3 1 2
La solution numero 3 est e *x *(-----*x + ---*x + ---*x + x + 1)
24 6 2
La partie reguliere du reste est de l'ordre de x**(10)
Si on reporte cette solution dans l'equation, le terme significatif du reste
4
2137 1/(4*x ) 10
est : - ------*e *x
24
off trdesir;
Deuxieme exemple : utilisation interactive, parametres et
transformations
desir();
ATTENTION : chaque donnee doit etre suivie de ; ou de $
***** INTRODUCTION DES DONNEES *****
L' equation est de la forme
a(0)(x)d^0 + a(1)(x)d^1 + .... + a(n)(x)d^n = 0
ordre de l'equation ?
Donner les coefficients a(j)(x), j = 0..n
2 2
a(0) = - nu + x
a(1) = x
2
a(2) = x
correction ? ( oui; / non; )
nombre de parametres ?
donner ce parametre :
transformation ? (oui;/non;)
nombre de termes desires pour la solution ?
LES 2 SOLUTIONS CALCULEES SONT LES SUIVANTES
==============
SOLUTION No 1
==============
nu 1 2
x *(nu - ---*x + 1)
4
-----------------------
nu + 1
Si :
2*nu non entier
nu 2 2
2*x *nu *(4*nu - x + 4)
---------------------------
nu + 1
Si :
2*nu entier positif
- nu 2 2
2*x *nu *(4*nu + x - 4)
------------------------------
nu - 1
Si :
2*nu entier negatif
- nu 1 2
x *(nu + ---*x - 1)
4
--------------------------
nu - 1
Si :
2*nu nul
==============
SOLUTION No 2
==============
- nu 1 2
x *(nu + ---*x - 1)
4
--------------------------
nu - 1
Si :
2*nu non entier
- nu 2 1 2 1 2
(x *(log(x)*nu + ---*log(x)*nu*x - 2*log(x)*nu - ---*log(x)*x + log(x)
4 4
1 2 1 2 2
- ---*nu*x + ---*x ))/(nu - 2*nu + 1)
8 4
Si :
2*nu nul
voulez-vous continuer ?
'non;' : la liste des solutions calculees est affichee (sous
forme generalisee).
'non$' : cette liste n'est pas affichee.
derivation : 1;
changement de variable : 2;
changement de fonction inconnue : 3;
substitution : 4;
valeur de x en fonction de la nouvelle variable v ?
transformation ? (oui;/non;)
nombre de termes desires pour la solution ?
LES 2 SOLUTIONS CALCULEES SONT LES SUIVANTES
==============
SOLUTION No 1
==============
i/x 1 2 1 1 4 2 5 2 2 9 2
sqrt(x)*e *(---*i*nu *x - ---*i*x - ---*nu *x + ----*nu *x - -----*x + 1)
2 8 8 16 128
==============
SOLUTION No 2
==============
- i/x
sqrt(x)*e
1 2 1 1 4 2 5 2 2 9 2
*( - ---*i*nu *x + ---*i*x - ---*nu *x + ----*nu *x - -----*x + 1)
2 8 8 16 128
voulez-vous continuer ?
'non;' : la liste des solutions calculees est affichee (sous
forme generalisee).
'non$' : cette liste n'est pas affichee.
sol1:=first sol$ %solutions au voisinage de 0
sol2:=second sol$ %solutions au voisinage de l'infini
solvalide(sol1,1,2)$
presence de solutions conditionnelles :
cette procedure ne peut pas etre appelee.
solvalide(sol2,1,2)$
La solution numero 1 est
i/x 2 4 2 2 2 2
sqrt(x)*e *(64*i*nu *x - 16*i*x - 16*nu *x + 40*nu *x - 9*x + 128)
-------------------------------------------------------------------------
128
9
La partie reguliere du reste est de l'ordre de x**(---)
2
Si on reporte cette solution dans l'equation, le terme significatif du reste
1 i/x 4 6 35 4 259 2 225
est : ---*sqrt(x)*e *x *(nu - ----*nu + -----*nu - -----)
8 4 16 64
Remarque : la verification de la validite des solutions est possible
malgre la presence d'un parametre (pas de condition).
standsol(sol1); %=sol1...sans interet!
2 2 2
{{ - nu + x ,x,x },
{},
2
4*nu - xt + 4
{{{{0,1,----------------,nu},
4*(nu + 1)
{{2*nu,nonent,, sauf :,1}}},
2 2
2*nu *(4*nu - xt + 4)
{{0,1,------------------------,nu},
nu + 1
{{2*nu,entpos}}},
2 2
2*nu *(4*nu + xt - 4)
{{0,1,------------------------, - nu},
nu - 1
{{2*nu,entneg}}},
2
4*nu + xt - 4
{{0,1,----------------, - nu},
4*(nu - 1)
{{2*nu,entnul}}}},
2
4*nu + xt - 4
{{{0,1,----------------, - nu},
4*(nu - 1)
{{2*nu,nonent,, sauf :,1}}},
{{0,
1,
6 5 5
(log(xt)*lambd + 4*log(xt)*lambd *nu + 8*log(xt)*lambd
4 2 4 4 2
+ log(xt)*lambd *nu + 32*log(xt)*lambd *nu - log(xt)*lambd *xt
4 3 3 3 2
+ 24*log(xt)*lambd - 8*log(xt)*lambd *nu + 16*log(xt)*lambd *nu
3 2 3 3 2
- 4*log(xt)*lambd *nu*xt + 96*log(xt)*lambd *nu - 4*log(xt)*lambd *xt
3 2 4 2 3
+ 32*log(xt)*lambd - 5*log(xt)*lambd *nu - 32*log(xt)*lambd *nu
2 2 2 2 2
- 2*log(xt)*lambd *nu *xt + 64*log(xt)*lambd *nu
2 2 2 2 2
- 16*log(xt)*lambd *nu*xt + 128*log(xt)*lambd *nu - 4*log(xt)*lambd *xt
2 5 4
+ 16*log(xt)*lambd + 4*log(xt)*lambd*nu - 24*log(xt)*lambd*nu
3 2 3
+ 4*log(xt)*lambd*nu *xt - 32*log(xt)*lambd*nu
2 2 2
- 12*log(xt)*lambd*nu *xt + 96*log(xt)*lambd*nu
2 6
- 16*log(xt)*lambd*nu*xt + 64*log(xt)*lambd*nu + 3*log(xt)*nu
4 2 4 2 2
+ 3*log(xt)*nu *xt - 24*log(xt)*nu - 12*log(xt)*nu *xt
2 5 4 4 3 2
+ 48*log(xt)*nu + 2*lambd + 4*lambd *nu + 16*lambd - 4*lambd *nu
3 3 2 3 2 2
+ 32*lambd *nu + 48*lambd - 8*lambd *nu - 16*lambd *nu
2 2 2 2 2 2 4
+ 4*lambd *nu*xt + 96*lambd *nu - 4*lambd *xt + 64*lambd + 2*lambd*nu
3 2 2 2
- 32*lambd*nu + 8*lambd*nu *xt - 16*lambd*nu + 128*lambd*nu
2 5 3 2 3 2 2
- 8*lambd*xt + 32*lambd + 4*nu + 4*nu *xt - 32*nu + 12*nu *xt
2 4 3 2 2 2
- 16*nu*xt + 64*nu)/(lambd + 8*lambd - 2*lambd *nu + 24*lambd
2 4 2
- 8*lambd*nu + 32*lambd + nu - 8*nu + 16),
- nu},
{{2*nu,entpos}}},
{{0,
1,
6 5 5
(log(xt)*lambd - 4*log(xt)*lambd *nu + 8*log(xt)*lambd
4 2 4 4 2
+ log(xt)*lambd *nu - 32*log(xt)*lambd *nu - log(xt)*lambd *xt
4 3 3 3 2
+ 24*log(xt)*lambd + 8*log(xt)*lambd *nu + 16*log(xt)*lambd *nu
3 2 3 3 2
+ 4*log(xt)*lambd *nu*xt - 96*log(xt)*lambd *nu - 4*log(xt)*lambd *xt
3 2 4 2 3
+ 32*log(xt)*lambd - 5*log(xt)*lambd *nu + 32*log(xt)*lambd *nu
2 2 2 2 2
- 2*log(xt)*lambd *nu *xt + 64*log(xt)*lambd *nu
2 2 2 2 2
+ 16*log(xt)*lambd *nu*xt - 128*log(xt)*lambd *nu - 4*log(xt)*lambd *xt
2 5 4
+ 16*log(xt)*lambd - 4*log(xt)*lambd*nu - 24*log(xt)*lambd*nu
3 2 3
- 4*log(xt)*lambd*nu *xt + 32*log(xt)*lambd*nu
2 2 2
- 12*log(xt)*lambd*nu *xt + 96*log(xt)*lambd*nu
2 6
+ 16*log(xt)*lambd*nu*xt - 64*log(xt)*lambd*nu + 3*log(xt)*nu
4 2 4 2 2
+ 3*log(xt)*nu *xt - 24*log(xt)*nu - 12*log(xt)*nu *xt
2 5 4 4 3 2
+ 48*log(xt)*nu + 2*lambd - 4*lambd *nu + 16*lambd - 4*lambd *nu
3 3 2 3 2 2
- 32*lambd *nu + 48*lambd + 8*lambd *nu - 16*lambd *nu
2 2 2 2 2 2 4
- 4*lambd *nu*xt - 96*lambd *nu - 4*lambd *xt + 64*lambd + 2*lambd*nu
3 2 2 2
+ 32*lambd*nu + 8*lambd*nu *xt - 16*lambd*nu - 128*lambd*nu
2 5 3 2 3 2 2
- 8*lambd*xt + 32*lambd - 4*nu - 4*nu *xt + 32*nu + 12*nu *xt
2 4 3 2 2 2
+ 16*nu*xt - 64*nu)/(lambd + 8*lambd - 2*lambd *nu + 24*lambd
2 4 2
- 8*lambd*nu + 32*lambd + nu - 8*nu + 16),
nu},
{{2*nu,entneg}}},
{{0,
1,
2 2 2
(8*log(xt)*nu + 2*log(xt)*nu*xt - 16*log(xt)*nu - 2*log(xt)*xt
2 2 2
+ 8*log(xt) - nu*xt + 2*xt )/(8*(nu - 2*nu + 1)),
- nu},
{{2*nu,entnul}}}}}}
standsol(sol2); %solutions retournees sous forme standard.
2 2 3 4
{{ - nu *x + 1,x ,x },
i/x 2 4 2 2 2 2
sqrt(x)*e *(64*i*nu *x - 16*i*x - 16*nu *x + 40*nu *x - 9*x + 128)
{-------------------------------------------------------------------------,
128
2 4 2 2 2 2
sqrt(x)*( - 64*i*nu *x + 16*i*x - 16*nu *x + 40*nu *x - 9*x + 128)
-----------------------------------------------------------------------},
i/x
128*e
{}}
Pour revoir les solutions au voisinage de 0 :
for each elt in second sol1 do
<<j:=j+1;write j,'ieme solution';sorsol(elt);>>;
1ieme solution
nu 2
x *(4*nu - x + 4)
---------------------
4*(nu + 1)
Si :
2*nu non entier
nu 2 2
2*x *nu *(4*nu - x + 4)
---------------------------
nu + 1
Si :
2*nu entier positif
2 2
2*nu *(4*nu + x - 4)
-----------------------
nu
x *(nu - 1)
Si :
2*nu entier negatif
2
4*nu + x - 4
----------------
nu
4*x *(nu - 1)
Si :
2*nu nul
2ieme solution
2
4*nu + x - 4
----------------
nu
4*x *(nu - 1)
Si :
2*nu non entier
2 2 2 2
(8*log(x)*nu + 2*log(x)*nu*x - 16*log(x)*nu - 2*log(x)*x + 8*log(x) - nu*x
2 nu 2
+ 2*x )/(8*x *(nu - 2*nu + 1))
Si :
2*nu nul
Evaluation des solns au voisinage de 0 pour une valeur particuliere
du parametre :
sorparam(sol1,{nu});%evaluation des solutions au voisinage de 0
%pour une valeur particuliere du parametre
%nu = 1
%ecriture et retour des solutions sous forme
%standard
donner la valeur du parametre nu
==============
SOLUTION No 1
==============
2
x*( - x + 8)
==============
SOLUTION No 2
==============
2
- log(x)*x + 2
------------------
x
2 2
{{x - 1,x,x },
2
2 - log(x)*x + 2
{x*( - x + 8),------------------}}
x
solparam(sol1,{nu},{1});
2 2
{{x - 1,x,x },
2
{{{{0,1, - xt + 8,1},{}}},
2
{{{0,1, - log(xt)*xt + 2,-1},{}}}}}
Meme fonction avec retour des solutions sous forme generalisee,
ce qui permet d'enchainer :
solvalide(ws,1,2)$
2
La solution numero 1 est x*( - x + 8)
La partie reguliere du reste est de l'ordre de x**(4)
Si on reporte cette solution dans l'equation, le terme significatif du reste
5
est : - x
L'exemple suivant a ete cree specialement pour tester l'algorithme
et utiliser un grand nombre de procedures :
lcoeff := {x + 1,
2
2*x *(x + 1),
4
x ,
7
5*x
------,
2
10
x }
param := {}
Time: 6240 ms
sol:=delire(x,4,1,lcoeff,param);
Time: 5918 ms
1ieme solution :
(sqrt(x)*sqrt(6) + 1)/x -4 1330595 - 1/2
e *x *( - ---------*sqrt(x)*6 *x
96
173 - 1/2 174069763 2 9173
- -----*sqrt(x)*6 + -----------*x + ------*x + 1)
2 4608 16
0
2ieme solution :
( - sqrt(x)*sqrt(6) + 1)/x -4 1330595 - 1/2
e *x *(---------*sqrt(x)*6 *x
96
173 - 1/2 174069763 2 9173
+ -----*sqrt(x)*6 + -----------*x + ------*x + 1)
2 4608 16
0
3ieme solution :
2
13/27 ( - 32*x + 3)/(12*x ) 14
x *e *x
90412648939865456 4 10833178373456 3 353835104 2 25336
*(-------------------*x + ----------------*x + -----------*x + -------*x + 1)
10460353203 43046721 59049 243
0
4ieme solution :
2
1/54 (2*x + 3)/(3*x ) 10
x *e *x
863316799848061 4 48578095525 3 7318955 2 1333
*(-----------------*x - -------------*x + ---------*x - ------*x + 1)
1338925209984 344373768 236196 243
0
(sqrt(x)*sqrt(6) + 1)/x -4
La solution numero 1 est e *x *(
1330595 - 1/2 173 - 1/2 174069763 2
- ---------*sqrt(x)*6 *x - -----*sqrt(x)*6 + -----------*x
96 2 4608
9173
+ ------*x + 1)
16
3
La partie reguliere du reste est de l'ordre de x**( - ---)
2
Si on reporte cette solution dans l'equation, le terme significatif du reste
6740979385 (sqrt(x)*sqrt(6) + 1)/x
est : - ------------*e
6144
2
13/27 ( - 32*x + 3)/(12*x ) 14
La solution numero 3 est x *e *x
90412648939865456 4 10833178373456 3 353835104 2 25336
*(-------------------*x + ----------------*x + -----------*x + -------*x + 1)
10460353203 43046721 59049 243
526
La partie reguliere du reste est de l'ordre de x**(-----)
27
Si on reporte cette solution dans l'equation, le terme significatif du reste
2
409426546365146093644 13/27 ( - 32/3*x + 1)/(4*x ) 19
est : - -----------------------*x *e *x
847288609443
Time for test: 27171 ms, plus GC time: 290 ms