/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E S   F O N C T I O N S   N E C E S S A I R E S                                                  */
/*        A   L ' E T U D E   D E   L ' A T O M E   D ' H Y D R O G E N E  :                                                         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrq/Laguerre.21$I' :                                                                                           */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1993??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P O L Y N O M E S   D E   L A G U E R R E  :                                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        definition du polynome de Laguerre d'ordre (p,k) :                                                                         */
/*                                                                                                                                   */
/*                                                      k  [     p+k             ]                                                   */
/*                                       k          k  d   [ x  d     [ -x   p+k]]                                                   */
/*                                      L (x) = (-1) .-----[e .-------[e   .x   ]]                                                   */
/*                                       p               k [      p+k            ]                                                   */
/*                                                     dx  [    dx               ]                                                   */
/*                                                                                                                                   */
/*                  avec :                                                                                                           */
/*                                                                                                                                   */
/*                                      k = 0,1,2,...,+infini                                                                        */
/*                                      p = 0,1,2,...,+infini                                                                        */
/*                                                                                                                                   */
/*                  Ceci est l'une des trois formules de Rodrigue.                                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        definition du polynome de Laguerre d'ordre (p,k) :                                                                         */
/*                                                                                                                                   */
/*                                               s=p                                                                                 */
/*                                              _____                                                                                */
/*                                              \                      2                                                             */
/*                                       k       \       s     [(p+k)!]        s                                                     */
/*                                      L (x) =  /   (-1) .------------------.x                                                      */
/*                                       p      /____       (p-s)!.(k+s)!.s!                                                         */
/*                                                                                                                                   */
/*                                               s=0                                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D ' U N   P O L Y N O M E   D E   L A G U E R R E   D E   T Y P E   P(p,k,x)  :                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionF

DEFV(Local,DEFV(FonctionF,polynome_de_Laguerre_p_k(ordre_p,ordre_k,variable)))
DEFV(Argument,DEFV(Int,ordre_p));
                                        /* Ordre 'p' du polynome de Laguerre.                                                        */
DEFV(Argument,DEFV(Int,ordre_k));
                                        /* Ordre 'k' du polynome de Laguerre.                                                        */
DEFV(Argument,DEFV(Float,variable));
                                        /* Variable pour laquelle evaluer le polynome de Laguerre.                                   */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(Float,INIT(valeur_du_polynome,FZERO));
                                        /* Valeur courante du polynome lors du processus iteratif...                                 */

     INIT_ERROR;
     /*..............................................................................................................................*/
     Test(IFOU(IZLT(ordre_p),IZLT(ordre_k)))
          Bblock
          PRINT_ERREUR("l'ordre 'p' et/ou l'ordre 'k' sont negatifs, une valeur nulle est renvoyee");
          Eblock
     ATes
          Bblock
          DEFV(Int,INIT(indice_du_polynome,UNDEF));
                                        /* Indice 's' de calcul du polynome...                                                       */
          DoIn(indice_du_polynome,ZERO,ordre_p,I)
               Bblock
               INCR(valeur_du_polynome
                   ,MUL3(MONX(NEGA(FU),indice_du_polynome)
                        ,DIVI(EXP2(FACT(ADD2(ordre_p,ordre_k)))
                             ,MUL3(FACT(SOUS(ordre_p,indice_du_polynome))
                                  ,FACT(ADD2(ordre_k,indice_du_polynome))
                                  ,FACT(indice_du_polynome)
                                   )
                              )
                        ,MONX(variable,indice_du_polynome)
                         )
                    );
                                        /* Calcul (non optimise...) et cumul des differents monomes du polynome de Laguerre :        */
                                        /*                                                                                           */
                                        /*                           s=p                                                             */
                                        /*                          _____                                                            */
                                        /*                          \                      2                                         */
                                        /*                   k       \       s     [(p+k)!]        s                                 */
                                        /*                  L (x) =  /   (-1) .------------------.x                                  */
                                        /*                   p      /____       (p-s)!.(k+s)!.s!                                     */
                                        /*                                                                                           */
                                        /*                           s=0                                                             */
                                        /*                                                                                           */
               Eblock
          EDoI
          Eblock
     ETes

     RETU(valeur_du_polynome);
     Eblock

EFonctionF



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.