File r38/packages/solve/desir.rlg artifact fd350d048d part of check-in f2fda60abd


Tue Feb 10 12:26:26 2004 run on Linux
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: 20 ms  plus GC time: 10 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: 30 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: 180 ms

sol:=delire(x,4,1,lcoeff,param);

Time: 160 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: 940 ms, plus GC time: 30 ms


REDUCE Historical
REDUCE Sourceforge Project | Historical SVN Repository | GitHub Mirror | SourceHut Mirror | NotABug Mirror | Chisel Mirror | Chisel RSS ]