/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        L I S S A G E   D ' U N   E N S E M B L E   D E   P O I N T S  :                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xtc/lissage.01$c' :                                                                                            */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#define   PREMIER                                                                                                                       \
                    0                                                                                                                   \
                                        /* Premier element.                                                                          */
#define   PORTEE                                                                                                                        \
                    2                                                                                                                   \
                                        /* Nombre d'elements a ignorer en tete et en queue.                                          */
#define   ELEMENTS                                                                                                                      \
                    20                                                                                                                  \
                                        /* Nombre d'elements a lisser.                                                               */
#define   ITERATIONS                                                                                                                    \
                    8                                                                                                                   \
                                        /* Nombre d'iterations de lissage.                                                           */

main()
          {
          double    Tinitial[ELEMENTS];
          double    Tlisse[ELEMENTS];

          int       compteur,index;

          Tinitial[0]=0;
          Tinitial[1]=1;
          Tinitial[2]=2;
          Tinitial[3]=3;
          Tinitial[4]=4;
          Tinitial[5]=5;
          Tinitial[6]=6;
          Tinitial[7]=7;
          Tinitial[8]=7;
          Tinitial[9]=7;
          Tinitial[10]=7;
          Tinitial[11]=7;
          Tinitial[12]=7;
          Tinitial[13]=7;
          Tinitial[14]=7;
          Tinitial[15]=7;
          Tinitial[16]=7;
          Tinitial[17]=6;
          Tinitial[18]=5;
          Tinitial[19]=4;
                                        /* Initialisation arbitraire avec une large zone "plate" ('7').                              */

          for       (index=PREMIER ; index<ELEMENTS ; index++)
                    {
                    Tlisse[index]=Tinitial[index];
                    }

          for       (compteur=1 ; compteur<ITERATIONS ; compteur++)
                    {
                    double    Tintermediaire[ELEMENTS];

                    for       (index=(PREMIER+PORTEE) ; index<(ELEMENTS-PORTEE) ; index++)
                              {
                              Tintermediaire[index]=(1/35.0)*((-3*Tlisse[index-2])
                                                             +(12*Tlisse[index-1])
                                                             +(17*Tlisse[index])
                                                             +(12*Tlisse[index+1])
                                                             +(-3*Tlisse[index+2])
                                                              );
                                        /* Lissage par approximation (voir 'METHODE DE CALCUL NUMERIQUE' de JP. Nougier, page 120).  */
                              }

                    for       (index=PREMIER ; index<ELEMENTS ; index++)
                              {
                              Tlisse[index]=Tintermediaire[index];
                              }

                    printf("\n");
                    for       (index=PREMIER ; index<ELEMENTS ; index++)
                              {
                              printf("%.0f=%.2f ",Tinitial[index],Tlisse[index]);
                              }
                    }
          }



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