File r35/xlog/desir.log artifact ad5decb02a part of check-in 955d0a90a7



Codemist Standard Lisp 3.54 for DEC Alpha: May 23 1994
Dump file created: Mon May 23 10:39:11 1994
REDUCE 3.5, 15-Oct-93 ...
Memory allocation: 6023424 bytes

+++ About to read file tstlib.red




 DESIR : solutions formelles d'equations differentielles
          lineaires homogenes au voisinage de zero, point 
          singulier regulier ou irregulier, ou point regulier

                Version  3.3  -  Novembre 1993 
                   Appel par desir();        

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
---*log(x)*x  - ---*log(x)*x  + log(x)*x  - log(x)*x - ----*x
 6               2                                      36

    1   3
 + ---*x  - x + 1
    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

                                  4       3
            - 36*log(xt)*xt - 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 

                             1   5
significatif du reste 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: 3483 ms  plus GC time: 600 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
  + xt *( - lambd  - 7*lambd - 12)

      2       3          2
  + xt *(lambd  + 9*lambd  + 26*lambd + 24)

                4           3           2
  + xt*( - lambd  - 10*lambd  - 35*lambd  - 50*lambd - 24)

                4           3           2                         3
  + lambd*(lambd  + 10*lambd  + 35*lambd  + 50*lambd + 24))/(lambd

             2
    + 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

                                       4       3
                 - 36*log(xt)*xt - 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: 3183 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
---*log(x)*x  - ---*log(x)*x  + log(x)*x  - log(x)*x - ----*x
 6               2                                      36

    1   3
 + ---*x  - x + 1
    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
                          6               2

               5    4    1   3
 - log(x)*x - ----*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 

                             5   4            17
significatif du reste 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
La solution numero 3 est e        *x

   361   4    1   3    1   2
*(-----*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 

                                             4
                                2137   1/(4*x )  10
significatif du reste 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
                       4                                4

                      1      2    1   2      2
          + log(x) - ---*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   -1   2      1   -1      1    4  2    5     2  2
sqrt(x)*e   *( - ---*i  *nu *x + ---*i  *x - ---*nu *x  + ----*nu *x
                  2               8           8            16

                   9    2
               - -----*x  + 1)
                  128

 

 ==============

  SOLUTION No 2

 ==============

          - i/x   1   -1   2      1   -1      1    4  2    5     2  2
sqrt(x)*e      *(---*i  *nu *x - ---*i  *x - ---*nu *x  + ----*nu *x
                  2               8           8            16

                      9    2
                  - -----*x  + 1)
                     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)$

                                   i/x
La solution numero 1 est (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)

                                                    9
La partie reguliere du reste est de l'ordre de x**(---)
                                                    2

Si on reporte cette solution dans l'equation, le terme 

                             1           i/x  4
significatif du reste est : ---*sqrt(x)*e   *x
                             8

    6    35    4    259    2    225
*(nu  - ----*nu  + -----*nu  - -----)
         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
       + log(xt)*lambd *nu  + 32*log(xt)*lambd *nu

                      4   2                   4
       - log(xt)*lambd *xt  + 24*log(xt)*lambd

                        3   3                   3   2
       - 8*log(xt)*lambd *nu  + 16*log(xt)*lambd *nu

                        3      2                   3
       - 4*log(xt)*lambd *nu*xt  + 96*log(xt)*lambd *nu

                        3   2                   3
       - 4*log(xt)*lambd *xt  + 32*log(xt)*lambd

                        2   4                   2   3
       - 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
       - 16*log(xt)*lambd *nu*xt  + 128*log(xt)*lambd *nu

                        2   2                   2
       - 4*log(xt)*lambd *xt  + 16*log(xt)*lambd

                           5                      4
       + 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
       - 16*log(xt)*lambd*nu*xt  + 64*log(xt)*lambd*nu

                     6               4   2                4
       + 3*log(xt)*nu  + 3*log(xt)*nu *xt  - 24*log(xt)*nu

                      2   2                2          5          4
       - 12*log(xt)*nu *xt  + 48*log(xt)*nu  + 2*lambd  + 4*lambd *nu

                 4          3   2           3              3
       + 16*lambd  - 4*lambd *nu  + 32*lambd *nu + 48*lambd

                2   3           2   2          2      2
       - 8*lambd *nu  - 16*lambd *nu  + 4*lambd *nu*xt

                 2             2   2           2             4
       + 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
       - 8*lambd*xt  + 32*lambd + 4*nu  + 4*nu *xt  - 32*nu

              2   2           2                4          3
       + 12*nu *xt  - 16*nu*xt  + 64*nu)/(lambd  + 8*lambd

                  2   2           2             2                4
         - 2*lambd *nu  + 24*lambd  - 8*lambd*nu  + 32*lambd + nu

               2
         - 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
       + log(xt)*lambd *nu  - 32*log(xt)*lambd *nu

                      4   2                   4
       - log(xt)*lambd *xt  + 24*log(xt)*lambd

                        3   3                   3   2
       + 8*log(xt)*lambd *nu  + 16*log(xt)*lambd *nu

                        3      2                   3
       + 4*log(xt)*lambd *nu*xt  - 96*log(xt)*lambd *nu

                        3   2                   3
       - 4*log(xt)*lambd *xt  + 32*log(xt)*lambd

                        2   4                   2   3
       - 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
       + 16*log(xt)*lambd *nu*xt  - 128*log(xt)*lambd *nu

                        2   2                   2
       - 4*log(xt)*lambd *xt  + 16*log(xt)*lambd

                           5                      4
       - 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
       + 16*log(xt)*lambd*nu*xt  - 64*log(xt)*lambd*nu

                     6               4   2                4
       + 3*log(xt)*nu  + 3*log(xt)*nu *xt  - 24*log(xt)*nu

                      2   2                2          5          4
       - 12*log(xt)*nu *xt  + 48*log(xt)*nu  + 2*lambd  - 4*lambd *nu

                 4          3   2           3              3
       + 16*lambd  - 4*lambd *nu  - 32*lambd *nu + 48*lambd

                2   3           2   2          2      2
       + 8*lambd *nu  - 16*lambd *nu  - 4*lambd *nu*xt

                 2             2   2           2             4
       - 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
       - 8*lambd*xt  + 32*lambd - 4*nu  - 4*nu *xt  + 32*nu

              2   2           2                4          3
       + 12*nu *xt  + 16*nu*xt  - 64*nu)/(lambd  + 8*lambd

                  2   2           2             2                4
         - 2*lambd *nu  + 24*lambd  - 8*lambd*nu  + 32*lambd + nu

               2
         - 8*nu  + 16),

     nu},

    {{2*nu,entneg}}},

   {{0,

     1,

                  2                  2
     (8*log(xt)*nu  + 2*log(xt)*nu*xt  - 16*log(xt)*nu

                     2                    2       2
       - 2*log(xt)*xt  + 8*log(xt) - nu*xt  + 2*xt )/(8

            2
        *(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),

  (sqrt(x)

               4  2          2  2        2                2
   *( - 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
(8*log(x)*nu  + 2*log(x)*nu*x  - 16*log(x)*nu - 2*log(x)*x

                   2      2      nu    2
  + 8*log(x) - nu*x  + 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 

                                5
significatif du reste 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: 20699 ms  plus GC time: 1500 ms
sol:=delire(x,4,1,lcoeff,param);

Time: 20900 ms  plus GC time: 1334 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   90412648939865456   4
x     *e                     *x  *(-------------------*x
                                       10460353203

       10833178373456   3    353835104   2    25336
    + ----------------*x  + -----------*x  + -------*x + 1)
          43046721             59049           243
0

4ieme solution :

                     2
 1/54  (2*x + 3)/(3*x )  10   863316799848061   4    48578095525   3
x    *e                *x  *(-----------------*x  - -------------*x
                               1338925209984          344373768

       7318955   2    1333
    + ---------*x  - ------*x + 1)
       236196         243
0

                          (sqrt(x)*sqrt(6) + 1)/x  -4
La solution numero 1 est e                       *x  *(

       1330595            - 1/2      173            - 1/2
    - ---------*sqrt(x)*6      *x - -----*sqrt(x)*6
         96                           2

       174069763   2    9173
    + -----------*x  + ------*x + 1)
         4608            16

                                                       3
La partie reguliere du reste est de l'ordre de x**( - ---)
                                                       2

Si on reporte cette solution dans l'equation, le terme 

                                6740979385   (sqrt(x)*sqrt(6) + 1)/x
significatif du reste 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
   -------------------*x  + ----------------*x  + -----------*x
       10460353203              43046721             59049

       25336
    + -------*x + 1)
        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 est : 

                                                       2
    409426546365146093644   13/27  ( - 32/3*x + 1)/(4*x )  19
 - -----------------------*x     *e                      *x
        847288609443
(desir 98113 5784)


End of Lisp run after 98.14+6.43 seconds


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