* 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