/*************************************************************************************************************************************/
/* */
/* 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]);
}
}
}