Télécharger ipol.notice

Retour à la liste

Afficher cette notice en

Numérotation des lignes :
$$$$ IPOL     NOTICE  PASCAL    19/12/04    21:15:27     10408          
                                             DATE     19/12/04

    Operateur IPOL                           Voir aussi : PROJGRIL VARI
    --------------  
    1)   OBJET2 = 'IPOL'  OBJET1 | LREEL1 LREEL2 | ...
                                 | EVOL1         |

                  ... | ('SPLI' ('DGAU' FLOT1) ('DDRO' FLOT2)) ;
                      | 'TOUS';
                          

    2)   OBJET2 = 'IPOL'  TABLE T  ;


    3)   OBJET2 = 'IPOL'  NUA1 OBJET3 | ('GAUSS')     | ;
                                      |  'RATIO'      |
                                      |  'PID'   (P1) |
                                      |  'GRILL'      |


    4)   POIN1  = 'IPOL' CHPO1 FLOT1 ;


    Objet :
    _______

    L'operateur IPOL comporte 4 syntaxes permettant :
    

    1)  De creer l'OBJET2 y, obtenu par interpolation d'une fonction f
        en l'OBJET1 de valeur t : y=f(t)
        
        OBJET2 a le meme type et les memes caracteristiques que OBJET1.
        Les types possibles pour OBJET1 sont : - FLOTTANT
                                               - LISTREEL
                                               - CHPOINT
                                               - MCHAML
                                              
        La fonction est definie par :
          LREEL1  : LISTREEL des abscisses {t_i} 
          LREEL2  : LISTREEL des ordonnees correspondantes {f_i}
        ou par
          EVOL1   : EVOLUTION scalaire elementaire
        
        Par defaut, l'interpolation lineaire est utilisee et les 
        abscisses doivent imperativement etre rangees par ordre 
        croissant ou decroissant.
        
      + Si on specifie le mot-cle 'SPLI', une interpolation par spline
        cubique est utilisee. Dans ce cas, on peut prescrire la valeur 
        de la derivee premiere de la spline sur les bords gauche et 
        droit de son intervalle de definition avec les mots-cles 'DGAU' 
        et 'DDRO'. Si la derivee première n'est pas specifiee, on 
        utilise la condition naturelle : derivee seconde nulle.  
        Remarque : l'interpolation par spline cubique n'est pas locale,
        elle depend de l'ensemble des valeurs de la fonction donnee.
        
      + En presence du mot cle 'TOUS', la fonction f peut etre multi-
        valuee (multivoque). La suite des abscisses n'est donc pas 
        monotone, OBJET1 est necessairement un FLOTTANT et OBJET2 est un
        LISTREEL contenant l'ensemble des y tel que y=f(t)
        
        
    2)  De calculer par interpolation un CHPOINT ou un MCHAML a
        partir d'une table de soustype 'RESULTAT' et d'un temps T.
        Le type de l'objet cree depend du contenu de la table.

        
    3)  D'interpoler une fonction de plusieurs variables definie par
        un NUAGE :
        
      + Pour les mots cles 'GAUSS', 'RATIO' et 'PID', il s'agit d'une
        fonction de n variables a p valeurs scalaires a partir d'un
        nuage de n+p uplets de scalaires (x,f(x)).
        x est de dimension n, f(x) est de dimension p.
        L'OBJET3 est soit un CHPOINT soit un MCHAML dont les noms
        des composantes correspondent aux noms de n composantes du
        nuage. Les composantes du champ et du nuage sont
        necessairement scalaires. OBJET2 est du type de OBJET3.
        ex: nuage de composantes            'X' 'Y' 'Z' 'T' 'F'
            champ argument de composantes   'X' 'Z'
            champ resultat de composantes   'Y' 'T' 'F'
            
        Deux methodes d'interpolations sont utilisees selon l'option :
        
        -- Avec les mots cles 'GAUSS' et 'RATIO',
           la methode utilisee pour l'interpolation est celle des
           elements finis diffus au premier ordre. Au point dont on
           veut connnaitre l'image par la fonction, on calcule un
           hyperplan qui minimise la somme ponderee des carres des
           differences des valeurs sur tous les points du nuage.
           La ponderation est obtenue par l'image de la distance entre
           le point et le noeud par la fonction de ponderation
           gaussienne (exp(-x**2)) ou rationelle (1/(1+x)).
           
        -- Avec le mot cle 'PID',
           il s'agit d'une interpolation par ponderation inverse aux
           distances. La ponderation de chaque point du nuage est
           proportionnelle a (1/x**P1) ou x est la distance euclidienne
           au point cible (sur les composantes connue du champ argument).
           P1  : FLOTTANT/ENTIER parametre de puissance pour la
                 fonction de ponderation, positif ou nul, egal a 1 par
                 defaut
           L'interpolation est exacte, c'est a dire qu'elle retourne
           la valeur du nuage si le point cible est un point du nuage.
           Pour plus d'informations consultez :
             Shepard, Donald (1968). "A two-dimensional interpolation
             function for irregularly-spaced data". Proceedings of the
             1968 ACM National Conference: 517-524.
             https://en.wikipedia.org/wiki/Inverse_distance_weighting

      + Pour le mot cle 'GRILL', le nuage represente une fonction de n
        variables definie sur une grille de points.
        L'interpolation est multi-lineaire par morceaux et passe par
        les points de la grille.
        Le nuage NUA1 doit alors contenir 1 seul (n+1) uplet ou
        chaque composante abrite un seul objet LISTREEL. 
        L'OBJET3 est soit un CHPOINT soit un MCHAML dont les noms des
        composantes correspondent aux nom des n premieres composantes
        du nuage.          
        Le nuage doit etre definit ainsi :
        - Pour une grille de dimension n, le nuage doit posseder un 
          seul n+1 uplet
        - Les n premieres composantes du nuage contiennent les listes,
          a valeurs croissantes, des coordonnes des noeuds de la grille
          dans chaque dimension. Ces listes peuvent etre de tailles
          differentes. Par exemple, une grille de dimension 3 peut 
          contenir 4 points en X, 3 points en Y et 2 points en Z.
        - La derniere composante du nuage contient la liste des valeurs 
          de la fonction sur tous les points de la grille, rangees 
          dans l'ordre suivant :
          -- on note F_ijk... la valeur de la fonction pour le point de
              la grille situe a la i-eme position sur la dimension X,
                                  j-eme position sur la dimension Y,
                                  k-eme position sur la dimension Z,
                                  etc...
          -- le premier terme est F_111
          -- la suite est rangee dans l'ordre des i croissants, puis j
              croissants, puis k croissants, etc ...
          -- dans le cas de l'exemple precedent, cette liste contient 
             les 4*3*2=24 valeurs rangees ainsi :
                PROG  F_111  F_211  F_311  F_411
                      F_121  F_221  F_321  F_421
                      F_131  F_231  F_331  F_431
                      F_112  F_212  F_312  F_412
                      F_122  F_222  F_322  F_422
                      F_132  F_232  F_332  F_432 ;
        Les variables associees a chaque dimension peuvent correspondre
        a n'importe quelle grandeur physique scalaire. Un exemple de 
        mise en donnees est presente ci-apres.


    4)  D'interpoler un point le long d'une ligne orientee en donnant
        son champ d'abscisse curviligne (voir COOR).

        CHPO1   : objet CHPOINT, champ d'abscisse curviligne ;

        FLOT1   : objet FLOTTANT, abscisse du point recherche ;

        POIN1   : objet POINT, point interpole.



    Exemples :
    _________

    Syntaxe 2 :
    
*   La table de sous-type RESULTAT doit etre initialisee par :
    matab = 'TABLE' RESULTAT ;
 
*   Puis on doit avoir une suite ordonnee d'indices de type FLOTTANT et
*   les valeurs pointees doivent etre de meme type (CHPOINT ou MCHAML)
*   Par exmple :
    matab. 1.5 = chpo1 ;
    matab. 3.  = chpo2 ;
 
*   Et ainsi vous pouvez faire :
    chpo3  = 'IPOL' matab 2. ;
 
*   chpo3 est donc ici egal a l'operation :
    chpo3  = (CHPO1 * (2./3.)) + (CHPO2 * (1./3.))


    
    Syntaxe 3, option 'GRILL' :
    
    On veut definir la fonction de 2 variables sur la grille suivante

       Y
       ^
       |      7.6   8.1        -4.1  28.3      0.            84.
   11  -     O-----O----------O-----O---------O-------------O
       |     |     |          |     |         |             |
       |     |     |          |     |         |             |
       |     |     |          |     |         |             |
       |     |1.2  |4.3       |7.   |25.      |-1.          |-78.1
    6  -     O-----O----------O-----O---------O-------------O
       |     |     |          |     |         |             |
       |     |4.   |8.        |15.  |16.      |23.          |42.
    3  -     O-----O----------O-----O---------O-------------O
       |
       |
    0  ------|-----|----------|-----|---------|-------------|-----> X
       0     1     2          4     5         7             10

    Le nuage peut etre ecrit ainsi :
    NUA1 = NUAG 'COMP' 'X'    (PROG 1. 2. 4. 5. 7. 10.)
                'COMP' 'Y'    (PROG 3. 6. 11.)
                'COMP' 'TOTO' (PROG 4.  8.  15.  16.  23.  42.
                                    1.2 4.3  7.  25.  -1. -78.1
                                    7.6 8.1 -4.1 28.3  0.  84.) ;



© Cast3M 2003 - Tous droits réservés.
Mentions légales