* fichier : ipol_pid.dgibi
************************************************************************
* Test de l'operateur IPOL option 'PID' *
* interpolation multi-dimensionnelle *
* par Ponderation Inverse a la Distance *
* *
* Application a l'interpolation d'une fonction de 1 variable, puis *
* une fonction de 2 variables d'espace (sinus cardinal) *
* - test avec des CHPOINTs et des MCHAMLs *
* - test sur des points aleatoires *
* - test sur des points identiques au nuage *
************************************************************************
** Indicateur pour le trace des champs interpoles
itrac = FAUX ;
************************************************************************
* PETIT TEST EN 1D *
************************************************************************
** Maillage d'une ligne
p1 = 0. 0. 0. ;
p2 = 10. 0. 0. ;
** Fonction sinus cardinal
f1 = (SIN (xb*180./ pi)) / xb ;
f1 = f1 ET f1b ;
** Nuage contenant l'information de depart
** Points ou effectuer l'interpolation
p3 = -5. 0. 0. ;
p4 = 15. 0. 0. ;
** Interpolation
np = 2. ;
** Trace des graphes
SI itrac ;
'et par RATIO (jaune)' ;
tleg . TITRE . 1 = 'Sinus cardinal' ;
tleg . TITRE . 3 = 'GAUSS' ;
tleg . TITRE . 4 = 'RATIO' ;
FINSI ;
************************************************************************
* PETIT TEST EN 2D *
************************************************************************
** CREATION DU NUAGE
** -----------------
** Un petit maillage
ne = 30 ;
xmax = 10. ;
mxmax = -1. * xmax ;
l1 = D ne (mxmax mxmax 0.) (xmax mxmax 0.) ;
** Coordonnees x et y puis fonction (ici on prend un sinus cardinal
* un peu tordu)
r = ((x*x) + (y*y))**0.5 ;
f1 = (10.*(SIN (rb*180./ pi))/rb) + (0.001*(xb**4)) ;
f1 = f1 ET f1b ;
** Tolerance pour les tests des valeurs interpolees
*tol1 = 1.E-12 ;
** Nuage de valeurs : ensemble de n-uplets (x,y,f1)
** CREATION DES POINTS A CALCULER
** ------------------------------
** On tire nbp points dans les environs du nuage
nbp = 100 ;
** On y ajoute quelques points "singuliers" : presents dans le nuage
mp2 = mp2 ET mp3 ;
** INTERPOLATION
** -------------
** Interpolation (dans un CHPOINT et un MCHAML)
p = 3 ;
** COMPARAISON VALEURS CALCULEES / THEORIE
** ---------------------------------------
maxerr = 0. ;
MESS 'Numero | Valeur | Valeurs | Erreur ' ;
MESS 'du point | theorique | interpolees | relative' ;
* valeurs calculees (CHPOINT et MCHAML)
* valeur theorique
f0th = 0. ;
d1 = (((x1 - x0)**2) + ((y1 - y0)**2))**0.5 ;
SI (d1 <EG 1.E-15) ;
QUIT b1 ;
FINSI ;
w1 = 1. / (d1**p) ;
lw = lw ET w1 ;
FIN b1 ;
f0th = f0th / wtot ;
* comparaison
err1 = ABS (f0ca1 - f0th) ;
err2 = ABS (f0ca2 - f0th) ;
MESS ' | |' f0ca2 '|' err2 ;
FIN b0 ;
** TEST FINAL
** ----------
SI (maxerr <EG tol1) ;
SINON ;
FINSI ;
** VISUALISATION DES POINTS CALCULES SUR LE NUAGE INITIAL
** ------------------------------------------------------
SI itrac ;
'et par RATIO (jaune)' ;
FINSI ;
FIN ;
					© Cast3M 2003 - Tous droits réservés.
					Mentions légales