Artifact 36cf04a27ec1016a710da0bfd44b1bcec2aafefa29b463a1ac8765f014c86360:
- File
r36/xlog/DESIR.LOG
— part of check-in
[152fb3bdbb]
at
2011-10-17 17:58:33
on branch master
— svn:eol-style, svn:executable and line endings for files
in historical/r36 treegit-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1480 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: schoepf@users.sourceforge.net, size: 23135) [annotate] [blame] [check-ins using] [more...]
REDUCE 3.6, 15-Jul-95, patched to 6 Mar 96 ... 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: 790 ms plus GC time: 150 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: 720 ms plus GC time: 120 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 sqrt(x)*e 1 -1 2 1 -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 ============== SOLUTION No 2 ============== - i/x sqrt(x)*e 1 -1 2 1 -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 4 2 2 2 2 2 sqrt(x)*e *( - 16*i*nu *x + 40*i*nu *x - 9*i*x + 128*i - 64*nu *x + 16*x) -------------------------------------------------------------------------------- 128*i 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 {(sqrt(x)*e 4 2 2 2 2 2 *( - 16*i*nu *x + 40*i*nu *x - 9*i*x + 128*i - 64*nu *x + 16*x))/(128*i), 4 2 2 2 2 2 sqrt(x)*( - 16*i*nu *x + 40*i*nu *x - 9*i*x + 128*i + 64*nu *x - 16*x) ---------------------------------------------------------------------------}, i/x 128*e *i {}} 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: 4830 ms plus GC time: 310 ms sol:=delire(x,4,1,lcoeff,param); Time: 4580 ms plus GC time: 290 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: desir 20559 21919)