Numérotation des lignes :

* RESEAU    PROCEDUR  JC220346  12/09/12    21:15:08     7501           'DEBPROC' RESEAU TAB*'TABLE' NIND*'ENTIER' PARAM*'FLOTTANT';*************************************************************************                                                                      **          PROCEDURE RESEAU   (APPELEE PAR LA PROCEDURE TRACTUFI)      **                                                                      **       INTERPOLATION D'UN RESEAU PARAMETRE DE COURBES                 **                                                                      **************************************************************************************************************************************************                                                                      **      LA PROCEDURE RESEAU S'APPLIQUE A DES COURBES MONOTONES          **                                                                      **   IL N'EST PAS NECESSAIRE QU'ELLES AIENT DES BORNES COMMUNES         **                                                                      **   QUAND CELA EST POSSIBLE ON PROLONGE LINEAIREMENT LES LISTES        **         D'ABSCISSES ET D'ORDONNEES POUR ATTEINDRE DES BORNES         **         COMMUNES SANS POUR AUTANT MODIFIER LES COURBES FOURNIES      **                                                                      **************************************************************************-----------------------------------------------------------------------* RECEPTION DES ARGUMENTS TIN='INDEX' TAB; * ON CREE LA LISTE CONTENANT LES PARAMETRES LPAR=PROG NIND * 0.;I=0;'REPE' BOUCLE NIND;       I=I + 1;       IND=TIN.I;      'REMP' LPAR I IND;'FIN' BOUCLE; * ON ORDONNE LA LISTE CONTENANT LES PARAMETRES* ON RECHERCHE LES DEUX PARAMETRES QUI ENTOURENT PARAM ET ON DETERMINE* LA POSITION DE PARAM ENTRE CES DEUX PARAMETRES LPAR = ORDONNER LPAR;N='DIME' LPAR;T1='EXTR' LPAR 1;T2='EXTR' LPAR N;'SI' (PARAM < T1);     PAR1=T1;     PAR2='EXTR' LPAR 2;'FINSI';'SI' (PARAM > T2);     PAR1='EXTR' LPAR (N - 1);     PAR2=T2;'FINSI';'SI' ('ET' (PARAM >EG T1) (PARAM &lt;EG T2));     I=1;     'REPE' BOUCLE0 (N - 1);            I=I + 1;            T2='EXTR' LPAR I;            'SI' (T2 > PARAM);                 PAR1=T1;                 PAR2=T2;                'QUITTER' BOUCLE0;            'SINON';                 T1=T2;            'FINSI';     'FIN' BOUCLE0;'FINSI'; LAMBDA=(PAR2 - PARAM) / (PAR2 - PAR1); EV1=TAB.PAR1;EV2=TAB.PAR2;LABS1='EXTR' EV1 ABSC;LORD1='EXTR' EV1 ORDO;LABS2='EXTR' EV2 ABSC;LORD2='EXTR' EV2 ORDO;L1='DIME' LABS1;M1=L1;L2='DIME' LABS2;M2=L2;*=======================================================================*=                                                                     =*=        ON VERIFIE QUE LES DEUX COURBES SONT MONOTONES               =*=          ET ON CREE LES LISTES DE TRAVAIL A MODIFIER                =*=                                                                     =*=======================================================================X1='EXTR' LABS1 1;Y1='EXTR' LORD1 1;X2='EXTR' LABS1 2;Y2='EXTR' LORD1 2;PI1=(Y2 - Y1) / (X2 - X1);P1=PI1;I=1;'REPETER' BOUCLE1 (L1 - 2);    I=I + 1;    X1='EXTR' LABS1 I;    Y1='EXTR' LORD1 I;    X2='EXTR' LABS1 (I + 1);    Y2='EXTR' LORD1 (I + 1);    P2=(Y2 - Y1) / (X2 - X1);    'SI' ((P1 * P2) < 0.);         MESS 'UNE COURBE AU MOINS NON MONOTONE';        'QUITTER' RESEAU;    'FINSI';    P1=P2;'FIN' BOUCLE1;PF1=P2;X1='EXTR' LABS2 1;Y1='EXTR' LORD2 1;X2='EXTR' LABS2 2;Y2='EXTR' LORD2 2;PI2=(Y2 - Y1) / (X2 - X1);P1=PI2;I=1;'REPETER' BOUCLE2 (L2 - 2);    I=I + 1;    X1='EXTR' LABS2 I;    Y1='EXTR' LORD2 I;    X2='EXTR' LABS2 (I + 1);    Y2='EXTR' LORD2 (I + 1);    P2=(Y2 - Y1) / (X2 - X1);    'SI' ((P1 * P2) < 0.);         MESS 'UNE COURBE AU MOINS NON MONOTONE';        'QUITTER' RESEAU;    'FINSI';    P1=P2;'FIN' BOUCLE2;PF2=P2;TABS1=COPI LABS1;TORD1=COPI LORD1;TABS2=COPI LABS2;TORD2=COPI LORD2;*=======================================================================*=                                                                     =*= ON COMPARE LES PENTES INITIALES ET FINALES A 1 (EN VALEUR ABSOLUE)  =*=                                                                     =*=======================================================================*--------------------------------------------------------DEBUT DE COURBE'SI' ('ET' ((ABS(PI1)) >EG 1.) ((ABS(PI2)) >EG 1.));IPEND=A;'FINSI';'SI' ('ET' ((ABS(PI1)) < 1.) ((ABS(PI2)) < 1.));IPEND=B;'FINSI';'SI' ('ET' ((ABS(PI1)) >EG 1.) ((ABS(PI2)) < 1.));IPEND=F;'FINSI';'SI' ('ET' ((ABS(PI1)) < 1.) ((ABS(PI2)) >EG 1.));IPEND=F;'FINSI';*----------------------------------------------------------FIN DE COURBE'SI' ('ET' ((ABS(PF1)) >EG 1.) ((ABS(PF2)) >EG 1.));IPENF=A;'FINSI';'SI' ('ET' ((ABS(PF1)) < 1.) ((ABS(PF2)) < 1.));IPENF=B;'FINSI';'SI' ('ET' ((ABS(PF1)) >EG 1.) ((ABS(PF2)) < 1.));IPENF=F;'FINSI';'SI' ('ET' ((ABS(PF1)) < 1.) ((ABS(PF2)) >EG 1.));IPENF=F;'FINSI';*=======================================================================*=                                                                     =*=      CAS OU UNE COURBE EST CROISSANTE ET L'AUTRE DECROISSANTE       =*=                                                                     =*======================================================================='SI' ((PI1 * PI2) < 0.);XOUY=XX;*--------------------------------------------------------DEBUT DE COURBE     X1='EXTR' TABS1 1;     X2='EXTR' TABS2 1;     'SI' ('EGA' IPEND 'B');         'SI' (X1 < X2);*------------------------------------------PROLONGATION DE LA COURBE N2              M2=M2 + 1;              Y='EXTR' TORD2 1;              Y=Y + ((X1 - X2) * PI2);              LISTE=(PROG X1) ET TABS2;              TABS2=COPI LISTE;DETRUIRE LISTE;              LISTE=(PROG Y) ET TORD2;              TORD2=COPI LISTE;DETRUIRE LISTE;         'FINSI';         'SI' (X1 > X2);*------------------------------------------PROLONGATION DE LA COURBE N1              M1=M1 + 1;              Y='EXTR' TORD1 1;              Y=Y + ((X2 - X1) * PI1);              LISTE=(PROG X2) ET TABS1;              TABS1=COPI LISTE;DETRUIRE LISTE;              LISTE=(PROG Y) ET TORD1;              TORD1=COPI LISTE;DETRUIRE LISTE;         'FINSI';     'FINSI';     'SI' ('OU' ('EGA' IPEND 'A') ('EGA' IPEND 'F'));         'SI' (X1 < X2);*-------------------------------------------RESTRICTION DE LA COURBE N1              Y='IPOL' X2 LABS1 LORD1;              LISTE1=PROG X1;              Y1='EXTR' TORD1 1;              LISTE2=PROG Y1;              I=1;              'REPE' BOUCLE3 (M1 - 1);                    I=I + 1;                    X='EXTR' TABS1 I;                    'SI' (X &lt;EG X2);                         LISTE1=LISTE1 ET (PROG X);                         Y1='EXTR' TORD1 I;                         LISTE2=LISTE2 ET (PROG Y1);                         M1=M1 - 1;                    'SINON';                         'QUITTER' BOUCLE3;                    'FINSI';              'FIN' BOUCLE3;              TABS1=TABS1 SAUF LISTE1;DETRUIRE LISTE1;              TORD1=TORD1 SAUF LISTE2;DETRUIRE LISTE2;              LISTE=(PROG X2) ET TABS1;              TABS1=COPI LISTE;DETRUIRE LISTE;              LISTE=(PROG Y) ET TORD1;              TORD1=COPI LISTE;DETRUIRE LISTE;         'FINSI';         'SI' (X1 > X2);*-------------------------------------------RESTRICTION DE LA COURBE N2              Y='IPOL' X1 LABS2 LORD2;              LISTE1=PROG X2;              Y1='EXTR' TORD2 1;              LISTE2=PROG Y1;              I=1;              'REPE' BOUCLE4 (M2 - 1);                    I=I + 1;                    X='EXTR' TABS2 I;                    'SI' (X &lt;EG X1);                         LISTE1=LISTE1 ET (PROG X);                         Y1='EXTR' TORD2 I;                         LISTE2=LISTE2 ET (PROG Y1);                         M2=M2 - 1;                    'SINON';                         'QUITTER' BOUCLE4;                    'FINSI';              'FIN' BOUCLE4;              TABS2=TABS2 SAUF LISTE1;DETRUIRE LISTE1;              TORD2=TORD2 SAUF LISTE2;DETRUIRE LISTE2;              LISTE=(PROG X1) ET TABS2;              TABS2=COPI LISTE;DETRUIRE LISTE;              LISTE=(PROG Y) ET TORD2;              TORD2=COPI LISTE;DETRUIRE LISTE;         'FINSI';     'FINSI';*----------------------------------------------------------FIN DE COURBE     X1='EXTR' TABS1 M1;     X2='EXTR' TABS2 M2;     'SI' ('EGA' IPENF 'B');          'SI' (X1 < X2);*------------------------------------------PROLONGATION DE LA COURBE N1               Y='EXTR' TORD1 M1;               Y=Y + ((X2 - X1) * PF1);               M1=M1 + 1;               TABS1=TABS1 ET (PROG X2);               TORD1=TORD1 ET (PROG Y);          'FINSI';          'SI' (X1 > X2);*------------------------------------------PROLONGATION DE LA COURBE N2               Y='EXTR' TORD2 M2;               Y=Y + ((X1 - X2) * PF2);               M2=M2 + 1;               TABS2=TABS2 ET (PROG X1);               TORD2=TORD2 ET (PROG Y);          'FINSI';     'FINSI';     'SI' ('OU' ('EGA' IPENF 'A') ('EGA' IPENF 'B'));          'SI' (X1 < X2);*-------------------------------------------RESTRICTION DE LA COURBE N2               Y1='IPOL' X1 LABS2 LORD2;               I=1;               X='EXTR' TABS2 1;LISTE1=PROG X;               Y='EXTR' TORD2 1;LISTE2=PROG Y;               'REPE' BOUCLE5 (M2 - 1);                     I=I + 1;                     X='EXTR' TABS2 I;                     'SI' (X < X1);                          Y='EXTR' TORD2 I;                          LISTE1=LISTE1 ET (PROG X);                          LISTE2=LISTE2 ET (PROG Y);                     'SINON';                          LISTE1=LISTE1 ET (PROG X1);                          LISTE2=LISTE2 ET (PROG Y1);                          M2=I;                          'QUITTER' BOUCLE5;                     'FINSI';               'FIN' BOUCLE5;               TABS2=COPI LISTE1;DETRUIRE LISTE1;               TORD2=COPI LISTE2;DETRUIRE LISTE2;          'FINSI';          'SI' (X1 > X2);*-------------------------------------------RESTRICTION DE LA COURBE N1               Y1='IPOL' X2 LABS1 LORD1;               I=1;               X='EXTR' TABS1 1;LISTE1=PROG X;               Y='EXTR' TORD1 1;LISTE2=PROG Y;               'REPE' BOUCLE6 (M1 - 1);                     I=I + 1;                     X='EXTR' TABS1 I;                     'SI' (X < X2);                          Y='EXTR' TORD1 I;                          LISTE1=LISTE1 ET (PROG X);                          LISTE2=LISTE2 ET (PROG Y);                     'SINON';                          LISTE1=LISTE1 ET (PROG X2);                          LISTE2=LISTE2 ET (PROG Y1);                          M1=I;                          'QUITTER' BOUCLE6;                     'FINSI';               'FIN' BOUCLE6;               TABS1=COPI LISTE1;DETRUIRE LISTE1;               TORD1=COPI LISTE2;DETRUIRE LISTE2;          'FINSI';     'FINSI';'FINSI';*=======================================================================*=                                                                     =*=      COURBES SIMULTANEMENT SOIT CROISSANTES SOIT DECROISSANTES      =*=                                                                     =*=======================================================================*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*&                                                                     &*&  PENTES INITIALES SUPERIEURES A 1                                   &*&  PENTES FINALES SUPERIEURES A 1                                     &*&                                                                     &*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'SI' ('ET' ('EGA' IPEND 'A') ('EGA' IPENF 'A'));XOUY=YY;*--------------------------------------------------------DEBUT DE COURBE     Y1='EXTR' TORD1 1;     Y2='EXTR' TORD2 1;     'SI' (Y1 < Y2);*------------------------------------------PROLONGATION DE LA COURBE N2          M2=M2 + 1;          X='EXTR' TABS2 1;          X=X + ((Y1 - Y2) / PI2);          LISTE=(PROG X) ET TABS2;          TABS2=COPI LISTE;DETRUIRE LISTE;          LISTE=(PROG Y1) ET TORD2;          TORD2=COPI LISTE;DETRUIRE LISTE;     'FINSI';     'SI' (Y1 > Y2);*------------------------------------------PROLONGATION DE LA COURBE N1          M1=M1 + 1;          X='EXTR' TABS1 1;          X=X + ((Y2 - Y1) / PI1);          LISTE=(PROG X) ET TABS1;          TABS1=COPI LISTE;DETRUIRE LISTE;          LISTE=(PROG Y2) ET TORD1;          TORD1=COPI LISTE;DETRUIRE LISTE;     'FINSI';*----------------------------------------------------------FIN DE COURBE     Y1='EXTR' TORD1 M1;     Y2='EXTR' TORD2 M2;     'SI' (Y1 < Y2);*------------------------------------------PROLONGATION DE LA COURBE N1          X='EXTR' TABS1 M1;          X=X + ((Y2 - Y1) / PF1);          M1=M1 + 1;          TABS1=TABS1 ET (PROG X);          TORD1=TORD1 ET (PROG Y2);     'FINSI';     'SI' (Y1 > Y2);*------------------------------------------PROLONGATION DE LA COURBE N2          X='EXTR' TABS2 M2;          X=X + ((Y1 - Y2) / PF2);          M2=M2 + 1;          TABS2=TABS2 ET (PROG X);          TORD2=TORD2 ET (PROG Y1);     'FINSI';'FINSI';*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*&                                                                     &*&  PENTES INITIALES INFERIEURES A 1                                   &*&  PENTES FINALES INFERIEURES A 1                                     &*&                                                                     &*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'SI' ('ET' ('EGA' IPEND 'B') ('EGA' IPENF 'B'));XOUY=XX;*--------------------------------------------------------DEBUT DE COURBE     X1='EXTR' TABS1 1;     X2='EXTR' TABS2 1;     'SI' (X1 < X2);*------------------------------------------PROLONGATION DE LA COURBE N2          M2=M2 + 1;          Y='EXTR' TORD2 1;          Y=Y + ((X1 - X2) * PI2);          LISTE=(PROG X1) ET TABS2;          TABS2=COPI LISTE;DETRUIRE LISTE;          LISTE=(PROG Y) ET TORD2;          TORD2=COPI LISTE;DETRUIRE LISTE;     'FINSI';     'SI' (X1 > X2);*------------------------------------------PROLONGATION DE LA COURBE N1          M1=M1 + 1;          Y='EXTR' TORD1 1;          Y=Y + ((X2 - X1) * PI1);          LISTE=(PROG X2) ET TABS1;          TABS1=COPI LISTE;DETRUIRE LISTE;          LISTE=(PROG Y) ET TORD1;          TORD1=COPI LISTE;DETRUIRE LISTE;     'FINSI';*----------------------------------------------------------FIN DE COURBE     X1='EXTR' TABS1 M1;     X2='EXTR' TABS2 M2;     'SI' (X1 < X2);*------------------------------------------PROLONGATION DE LA COURBE N1          Y='EXTR' TORD1 M1;          Y=Y + ((X2 - X1) * PF1);          M1=M1 + 1;          TABS1=TABS1 ET (PROG X2);          TORD1=TORD1 ET (PROG Y);     'FINSI';     'SI' (X1 > X2);*------------------------------------------PROLONGATION DE LA COURBE N2          Y='EXTR' TORD2 M2;          Y=Y + ((X1 - X2) * PF2);          M2=M2 + 1;          TABS2=TABS2 ET (PROG X1);          TORD2=TORD2 ET (PROG Y);     'FINSI';'FINSI';*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*&                                                                     &*&  PENTES INITIALES DE CHAQUES COTES DE 1                             &*&  PENTES FINALES DE CHAQUES COTES DE 1                               &*&                                                                     &*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'SI' ('ET' ('EGA' IPEND 'F') ('EGA' IPENF 'F'));     XOUY=XX;*--------------------------------------------------------DEBUT DE COURBE     X1='EXTR' TABS1 1;     X2='EXTR' TABS2 1;     'SI' (X1 < X2);*-------------------------------------------RESTRICTION DE LA COURBE N1          Y='IPOL' X2 LABS1 LORD1;          LISTE1=PROG X1;          Y1='EXTR' TORD1 1;          LISTE2=PROG Y1;          I=1;          'REPE' BOUCLE7 (M1 - 1);                 I=I + 1;                 X='EXTR' TABS1 I;                 'SI' (X &lt;EG X2);                      LISTE1=LISTE1 ET (PROG X);                      Y1='EXTR' TORD1 I;                      LISTE2=LISTE2 ET (PROG Y1);                      M1=M1 - 1;                 'SINON';                      'QUITTER' BOUCLE7;                 'FINSI';          'FIN' BOUCLE7;          TABS1=TABS1 SAUF LISTE1;DETRUIRE LISTE1;          TORD1=TORD1 SAUF LISTE2;DETRUIRE LISTE2;          LISTE=(PROG X2) ET TABS1;          TABS1=COPI LISTE;DETRUIRE LISTE;          LISTE=(PROG Y) ET TORD1;          TORD1=COPI LISTE;DETRUIRE LISTE;     'FINSI';     'SI' (X1 > X2);*-------------------------------------------RESTRICTION DE LA COURBE N2          Y='IPOL' X1 LABS1 LORD1;          LISTE1=PROG X2;          Y1='EXTR' TORD2 1;          LISTE2=PROG Y1;          I=1;          'REPE' BOUCLE8 (M2 - 1);                 I=I + 1;                 X='EXTR' TABS2 I;                 'SI' (X &lt;EG X1);                      LISTE1=LISTE1 ET (PROG X);                      Y1='EXTR' TORD2 I;                      LISTE2=LISTE2 ET (PROG Y1);                      M2=M2 - 1;                 'SINON';                      'QUITTER' BOUCLE8;                 'FINSI';          'FIN' BOUCLE8;          TABS2=TABS2 SAUF LISTE1;DETRUIRE LISTE1;          TORD2=TORD2 SAUF LISTE2;DETRUIRE LISTE2;          LISTE=(PROG X1) ET TABS2;          TABS2=COPI LISTE;DETRUIRE LISTE;          LISTE=(PROG Y) ET TORD2;          TORD2=COPI LISTE;DETRUIRE LISTE;     'FINSI';*----------------------------------------------------------FIN DE COURBE     X1='EXTR' TABS1 M1;     X2='EXTR' TABS2 M2;     'SI' (X1 < X2);*-------------------------------------------RESTRICTION DE LA COURBE N2          Y1='IPOL' X1 LABS2 LORD2;          I=1;          X='EXTR' TABS2 1;LISTE1=PROG X;          Y='EXTR' TORD2 1;LISTE2=PROG Y;          'REPE' BOUCLE9 (M2 - 1);                 I=I + 1;                 X='EXTR' TABS2 I;                 'SI' (X < X1);                      Y='EXTR' TORD2 I;                      LISTE1=LISTE1 ET (PROG X);                      LISTE2=LISTE2 ET (PROG Y);                 'SINON';                      LISTE1=LISTE1 ET (PROG X1);                      LISTE2=LISTE2 ET (PROG Y1);                      M2=I;                      'QUITTER' BOUCLE9;                 'FINSI';          'FIN' BOUCLE9;          TABS2=COPI LISTE1;DETRUIRE LISTE1;          TORD2=COPI LISTE2;DETRUIRE LISTE2;     'FINSI';     'SI' (X1 > X2);*-------------------------------------------RESTRICTION DE LA COURBE N1          Y1='IPOL' X2 LABS1 LORD1;          I=1;          X='EXTR' TABS1 1;LISTE1=PROG X;          Y='EXTR' TORD1 1;LISTE2=PROG Y;          'REPE' BOUCLE10 (M1 - 1);                I=I + 1;                X='EXTR' TABS1 I;                'SI' (X < X2);                     Y='EXTR' TORD1 I;                     LISTE1=LISTE1 ET (PROG X);                     LISTE2=LISTE2 ET (PROG Y);                'SINON';                     LISTE1=LISTE1 ET (PROG X2);                     LISTE2=LISTE2 ET (PROG Y1);                     M1=I;                     'QUITTER' BOUCLE10;                'FINSI';          'FIN' BOUCLE10;          TABS1=COPI LISTE1;DETRUIRE LISTE1;          TORD1=COPI LISTE2;DETRUIRE LISTE2;    'FINSI';'FINSI';*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*&                                                                     &*&  PENTES INITIALES SUPERIEURES A 1                                   &*&  PENTES FINALES DE CHAQUES COTES DE 1                               &*&                                                                     &*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'SI' ('ET' ('EGA' IPEND 'A') ('EGA' IPENF 'F'));     XOUY=YY;*--------------------------------------------------------DEBUT DE COURBE     Y1='EXTR' TORD1 1;     Y2='EXTR' TORD2 1;     'SI' (Y1 < Y2);*------------------------------------------PROLONGATION DE LA COURBE N2          M2= M2 + 1;          X='EXTR' TABS2 1;          X=X + ((Y1 - Y2) / PI2);          LISTE=(PROG X) ET TABS2;          TABS2= COPI LISTE;DETRUIRE LISTE;          LISTE=(PROG Y1) ET TORD2;          TORD2= COPI LISTE;DETRUIRE LISTE;     'FINSI';     'SI' (Y1 > Y2);*------------------------------------------PROLONGATION DE LA COURBE N1          M1= M1 + 1;          X='EXTR' TABS1 1;          X=X + ((Y2 - Y1) / PI1);          LISTE=(PROG X) ET TABS1;          TABS1= COPI LISTE;DETRUIRE LISTE;          LISTE=(PROG Y2) ET TORD1;          TORD1= COPI LISTE;DETRUIRE LISTE;     'FINSI';*----------------------------------------------------------FIN DE COURBE     Y1='EXTR' TORD1 M1;     Y2='EXTR' TORD2 M2;     'SI' (Y1 < Y2);*-------------------------------------------RESTRICTION DE LA COURBE N2          X1='IPOL' Y1 LORD2 LABS2;          I=1;          X='EXTR' TABS2 1;LISTE1=PROG X;          Y='EXTR' TORD2 1;LISTE2=PROG Y;          'REPE' BOUCLE11 (M2 - 1);                 I=I + 1;                 Y='EXTR' TORD2 I;                 'SI' (Y < Y1);                      X='EXTR' TABS2 I;                      LISTE1=LISTE1 ET (PROG X);                      LISTE2=LISTE2 ET (PROG Y);                 'SINON';                      LISTE1=LISTE1 ET (PROG X1);                      LISTE2=LISTE2 ET (PROG Y1);                      M2=I;                      'QUITTER' BOUCLE11;                 'FINSI';          'FIN' BOUCLE11;          TABS2=COPI LISTE1;DETRUIRE LISTE1;          TORD2=COPI LISTE2;DETRUIRE LISTE2;     'FINSI';     'SI' (Y1 > Y2);*-------------------------------------------RESTRICTION DE LA COURBE N1          X1='IPOL' Y2 LORD1 LABS1;          I=1;          X='EXTR' TABS1 1;LISTE1=PROG X;          Y='EXTR' TORD1 1;LISTE2=PROG Y;          'REPE' BOUCLE12 (M1 - 1);                I=I + 1;                Y='EXTR' TORD1 I;                'SI' (Y < Y2);                     X='EXTR' TABS1 I;                     LISTE1=LISTE1 ET (PROG X);                     LISTE2=LISTE2 ET (PROG Y);                'SINON';                     LISTE1=LISTE1 ET (PROG X1);                     LISTE2=LISTE2 ET (PROG Y2);                     M1=I;                     'QUITTER' BOUCLE12;                'FINSI';          'FIN' BOUCLE12;          TABS1=COPI LISTE1;DETRUIRE LISTE1;          TORD1=COPI LISTE2;DETRUIRE LISTE2;    'FINSI';'FINSI';*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*&                                                                     &*&  PENTES INITIALES INFERIEURES A 1                                   &*&  PENTES FINALES DE CHAQUES COTES DE 1                               &*&                                                                     &*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'SI' ('ET' ('EGA' IPEND 'B') ('EGA' IPENF 'F'));     XOUY=XX;*--------------------------------------------------------DEBUT DE COURBE     X1='EXTR' TABS1 1;     X2='EXTR' TABS2 1;     'SI' (X1 < X2);*------------------------------------------PROLONGATION DE LA COURBE N2          M2= M2 + 1;          Y='EXTR' TORD2 1;          Y=Y + ((X1 - X2) * PI2);          LISTE=(PROG X1) ET TABS2;          TABS2= COPI LISTE;DETRUIRE LISTE;          LISTE=(PROG Y) ET TORD2;          TORD2= COPI LISTE;DETRUIRE LISTE;     'FINSI';     'SI' (X1 > X2);*------------------------------------------PROLONGATION DE LA COURBE N1          M1= M1 + 1;          Y='EXTR' TORD1 1;          Y=Y + ((X2 - X1) * PI1);          LISTE=(PROG X2) ET TABS1;          TABS1= COPI LISTE;DETRUIRE LISTE;          LISTE=(PROG Y) ET TORD1;          TORD1= COPI LISTE;DETRUIRE LISTE;     'FINSI';*----------------------------------------------------------FIN DE COURBE     X1='EXTR' TABS1 M1;     X2='EXTR' TABS2 M2;     'SI' (X1 < X2);*-------------------------------------------RESTRICTION DE LA COURBE N1          Y1='IPOL' X1 LABS2 LORD2;          I=1;          X='EXTR' TABS2 1;LISTE1=PROG X;          Y='EXTR' TORD2 1;LISTE2=PROG Y;          'REPE' BOUCLE13 (M2 - 1);                 I=I + 1;                 X='EXTR' TABS2 I;                 'SI' (X < X1);                      Y='EXTR' TORD2 I;                      LISTE1=LISTE1 ET (PROG X);                      LISTE2=LISTE2 ET (PROG Y);                 'SINON';                      LISTE1=LISTE1 ET (PROG X1);                      LISTE2=LISTE2 ET (PROG Y1);                      M2=I;                      'QUITTER' BOUCLE13;                 'FINSI';          'FIN' BOUCLE13;          TABS2=COPI LISTE1;DETRUIRE LISTE1;          TORD2=COPI LISTE2;DETRUIRE LISTE2;     'FINSI';     'SI' (X1 > X2);*-------------------------------------------RESTRICTION DE LA COURBE N1          Y1='IPOL' X2 LABS1 LORD1;          I=1;          X='EXTR' TABS1 1;LISTE1=PROG X;          Y='EXTR' TORD1 1;LISTE2=PROG Y;          'REPE' BOUCLE14 (M1 - 1);                I=I + 1;                X='EXTR' TABS1 I;                'SI' (X < X2);                     Y='EXTR' TORD1 I;                     LISTE1=LISTE1 ET (PROG X);                     LISTE2=LISTE2 ET (PROG Y);                'SINON';                     LISTE1=LISTE1 ET (PROG X2);                     LISTE2=LISTE2 ET (PROG Y1);                     M1=I;                     'QUITTER' BOUCLE14;                'FINSI';          'FIN' BOUCLE14;          TABS1=COPI LISTE1;DETRUIRE LISTE1;          TORD1=COPI LISTE2;DETRUIRE LISTE2;    'FINSI';'FINSI';*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*&                                                                     &*&  PENTES INITIALES DE CHAQUES COTES DE 1                             &*&  PENTES FINALES SUPERIEURES A 1                                     &*&                                                                     &*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'SI' ('ET' ('EGA' IPEND 'F') ('EGA' IPENF 'A'));     XOUY=YY;*--------------------------------------------------------DEBUT DE COURBE     Y1='EXTR' TORD1 1;     Y2='EXTR' TORD2 1;     'SI' (Y1 < Y2);*-------------------------------------------RESTRICTION DE LA COURBE N1          X='IPOL' Y2 LORD1 LABS1;          X1='EXTR' TABS1 1;          LISTE1=PROG X1;          LISTE2=PROG Y1;          I=1;          'REPE' BOUCLE15 (M1 - 1);                 I=I + 1;                 Y='EXTR' TORD1 I;                 'SI' (Y &lt;EG Y2);                      X1='EXTR' TABS1 I;                      LISTE1=LISTE1 ET (PROG X1);                      LISTE2=LISTE2 ET (PROG Y);                      M1=M1 - 1;                 'SINON';                      'QUITTER' BOUCLE15;                 'FINSI';          'FIN' BOUCLE15;          TABS1=TABS1 SAUF LISTE1;DETRUIRE LISTE1;          TORD1=TORD1 SAUF LISTE2;DETRUIRE LISTE2;          LISTE=(PROG X) ET TABS1;          TABS1=COPI LISTE;DETRUIRE LISTE;          LISTE=(PROG Y2) ET TORD1;          TORD1=COPI LISTE;DETRUIRE LISTE;     'FINSI';     'SI' (Y1 > Y2);*-------------------------------------------RESTRICTION DE LA COURBE N2          X='IPOL' Y1 LORD2 LABS2;          X1='EXTR' TABS2 1;          LISTE1=PROG X1;          LISTE2=PROG Y2;          I=1;          'REPE' BOUCLE16 (M2 - 1);                 I=I + 1;                 Y='EXTR' TORD2 I;                 'SI' (Y &lt;EG Y1);                      X1='EXTR' TABS2 I;                      LISTE1=LISTE1 ET (PROG X1);                      LISTE2=LISTE2 ET (PROG Y);                      M2=M2 - 1;                 'SINON';                      'QUITTER' BOUCLE16;                 'FINSI';          'FIN' BOUCLE16;          TABS2=TABS2 SAUF LISTE1;DETRUIRE LISTE1;          TORD2=TORD2 SAUF LISTE2;DETRUIRE LISTE2;          LISTE=(PROG X) ET TABS2;          TABS2=COPI LISTE;DETRUIRE LISTE;          LISTE=(PROG Y1) ET TORD2;          TORD2=COPI LISTE;DETRUIRE LISTE;     'FINSI';*----------------------------------------------------------FIN DE COURBE     Y1='EXTR' TORD1 M1;     Y2='EXTR' TORD2 M2;     'SI' (Y1 < Y2);*------------------------------------------PROLONGATION DE LA COURBE N1          X='EXTR' TABS1 M1;          X=X + ((Y2 - Y1) / PF1);          M1=M1 + 1;          TABS1=TABS1 ET (PROG X);          TORD1=TORD1 ET (PROG Y2);     'FINSI';     'SI' (Y1 > Y2);*------------------------------------------PROLONGATION DE LA COURBE N2          X='EXTR' TABS2 M2;          X=X + ((Y1 - Y2) / PF2);          M2=M2 + 1;          TABS2=TABS2 ET (PROG X);          TORD2=TORD2 ET (PROG Y1);     'FINSI';'FINSI';*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*&                                                                     &*&  PENTES INITIALES DE CHAQUES COTES DE 1                             &*&  PENTES FINALES INFERIEURES A 1                                     &*&                                                                     &*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'SI' ('ET' ('EGA' IPEND 'F') ('EGA' IPENF 'B'));     XOUY=XX;*--------------------------------------------------------DEBUT DE COURBE     X1='EXTR' TABS1 1;     X2='EXTR' TABS2 1;     'SI' (X1 < X2);*-------------------------------------------RESTRICTION DE LA COURBE N1          Y='IPOL' X2 LABS1 LORD1;          LISTE1=PROG X1;          Y1='EXTR' TORD1 1;          LISTE2=PROG Y1;          I=1;          'REPE' BOUCLE17 (M1 - 1);                 I=I + 1;                 X='EXTR' TABS1 I;                 'SI' (X &lt;EG X2);                      LISTE1=LISTE1 ET (PROG X);                      Y1='EXTR' TORD1 I;                      LISTE2=LISTE2 ET (PROG Y1);                      M1=M1 - 1;                 'SINON';                      'QUITTER' BOUCLE17;                 'FINSI';          'FIN' BOUCLE17;          TABS1=TABS1 SAUF LISTE1;DETRUIRE LISTE1;          TORD1=TORD1 SAUF LISTE2;DETRUIRE LISTE2;          LISTE=(PROG X2) ET TABS1;          TABS1=COPI LISTE;DETRUIRE LISTE;          LISTE=(PROG Y) ET TORD1;          TORD1=COPI LISTE;DETRUIRE LISTE;     'FINSI';     'SI' (X1 > X2);*-------------------------------------------RESTRICTION DE LA COURBE N2          Y='IPOL' X1 LABS1 LORD1;          LISTE1=PROG X2;          Y1='EXTR' TORD2 1;          LISTE2=PROG Y1;          I=1;          'REPE' BOUCLE18 (M2 - 1);                 I=I + 1;                 X='EXTR' TABS2 I;                 'SI' (X &lt;EG X1);                      LISTE1=LISTE1 ET (PROG X);                      Y1='EXTR' TORD2 I;                      LISTE2=LISTE2 ET (PROG Y1);                      M2=M2 - 1;                 'SINON';                      'QUITTER' BOUCLE18;                 'FINSI';          'FIN' BOUCLE18;          TABS2=TABS2 SAUF LISTE1;DETRUIRE LISTE1;          TORD2=TORD2 SAUF LISTE2;DETRUIRE LISTE2;          LISTE=(PROG X1) ET TABS2;          TABS2=COPI LISTE;DETRUIRE LISTE;          LISTE=(PROG Y) ET TORD2;          TORD2=COPI LISTE;DETRUIRE LISTE;     'FINSI';*----------------------------------------------------------FIN DE COURBE     X1='EXTR' TABS1 M1;     X2='EXTR' TABS2 M2;     'SI' (X1 < X2);*------------------------------------------PROLONGATION DE LA COURBE N1          Y='EXTR' TORD1 M1;          Y=Y + ((X2 - X1) * PF1);          M1=M1 + 1;          TABS1=TABS1 ET (PROG X2);          TORD1=TORD1 ET (PROG Y);     'FINSI';     'SI' (X1 > X2);*------------------------------------------PROLONGATION DE LA COURBE N2          Y='EXTR' TORD2 M2;          Y=Y + ((X1 - X2) * PF2);          M2=M2 + 1;          TABS2=TABS2 ET (PROG X1);          TORD2=TORD2 ET (PROG Y);     'FINSI';'FINSI';*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*&                                                                     &*&  PENTES INITIALES SUPERIEURES A 1                                   &*&  PENTES FINALES INFERIEURES A 1                                     &*&                                                                     &*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'SI' ('ET' ('EGA' IPEND 'A') ('EGA' IPENF 'B'));     XOUY=YX;*--------------------------------------------------------DEBUT DE COURBE     X1='EXTR' TABS1 1;     X2='EXTR' TABS2 1;     'SI' (X1 < X2);*------------------------------------------PROLONGATION DE LA COURBE N2          M2= M2 + 1;          X='EXTR' TABS2 1;          Y=Y + ((X1 - X2) * PI2);          LISTE=(PROG X1) ET TABS2;          TABS2= COPI LISTE;DETRUIRE LISTE;          LISTE=(PROG Y) ET TORD2;          TORD2= COPI LISTE;DETRUIRE LISTE;     'FINSI';     'SI' (X1 > X2);*------------------------------------------PROLONGATION DE LA COURBE N1          M1= M1 + 1;          Y='EXTR' TABS1 1;          Y=Y + ((X2 - X1) * PI1);          LISTE=(PROG X2) ET TABS1;          TABS1= COPI LISTE;DETRUIRE LISTE;          LISTE=(PROG Y) ET TORD1;          TORD1= COPI LISTE;DETRUIRE LISTE;     'FINSI';*----------------------------------------------------------FIN DE COURBE     X1='EXTR' TABS1 M1;     X2='EXTR' TABS2 M2;     'SI' (X1 < X2);*------------------------------------------PROLONGATION DE LA COURBE N1          Y='EXTR' TORD1 M1;          Y=Y + ((X2 - X1) * PF1);          M1=M1 + 1;          TABS1=TABS1 ET (PROG X2);          TORD1=TORD1 ET (PROG Y);     'FINSI';     'SI' (X1 > X2);*------------------------------------------PROLONGATION DE LA COURBE N2          Y='EXTR' TORD2 M2;          Y=Y + ((X1 - X2) * PF2);          M2=M2 + 1;          TABS2=TABS2 ET (PROG X1);          TORD2=TORD2 ET (PROG Y);     'FINSI';'FINSI';*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*&                                                                     &*&  PENTES INITIALES INFERIEURES A 1                                   &*&  PENTES FINALES SUPERIEURES A 1                                     &*&                                                                     &*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'SI' ('ET' ('EGA' IPEND 'B') ('EGA' IPENF 'A'));     XOUY=XY;*--------------------------------------------------------DEBUT DE COURBE     X1='EXTR' TABS1 1;     X2='EXTR' TABS2 1;     'SI' (X1 < X2);*------------------------------------------PROLONGATION DE LA COURBE N2          M2= M2 + 1;          X='EXTR' TABS2 1;          Y=Y + ((X1 - X2) * PI2);          LISTE=(PROG X1) ET TABS2;          TABS2= COPI LISTE;DETRUIRE LISTE;          LISTE=(PROG Y) ET TORD2;          TORD2= COPI LISTE;DETRUIRE LISTE;     'FINSI';     'SI' (X1 > X2);*------------------------------------------PROLONGATION DE LA COURBE N1          M1= M1 + 1;          Y='EXTR' TABS1 1;          Y=Y + ((X2 - X1) * PI1);          LISTE=(PROG X2) ET TABS1;          TABS1= COPI LISTE;DETRUIRE LISTE;          LISTE=(PROG Y) ET TORD1;          TORD1= COPI LISTE;DETRUIRE LISTE;     'FINSI';*----------------------------------------------------------FIN DE COURBE     Y1='EXTR' TORD1 M1;     Y2='EXTR' TORD2 M2;     'SI' (Y1 < Y2);*------------------------------------------PROLONGATION DE LA COURBE N1          X='EXTR' TABS1 M1;          X=X + ((Y2 - Y1) / PF1);          M1=M1 + 1;          TABS1=TABS1 ET (PROG X);          TORD1=TORD1 ET (PROG Y2);     'FINSI';     'SI' (Y1 > Y2);*------------------------------------------PROLONGATION DE LA COURBE N2          X='EXTR' TABS2 M2;          X=X + ((Y1 - Y2) / PF2);          M2=M2 + 1;          TABS2=TABS2 ET (PROG X);          TORD2=TORD2 ET (PROG Y1);     'FINSI';'FINSI';*=======================================================================*=                                                                     =*=        ELABORATION DE LA COURBE RELATIVE A PARAM                    =*=                                                                     =*=======================================================================*-----------------------------------------------------------------------*- COUPURE DANS LA COURBE : INTERPOLATION D'ABORD EN Y, PUIS EN X      -*-----------------------------------------------------------------------'SI' ('EGA' XOUY 'YX');     M=M1 / 2;     LABS=PROG M1 * 0.;     LORD=PROG M1 * 0.;     I=0;     'REPE' BOUCLE19 M;            I=I + 1;            Y='EXTR' TORD1 I;            X1='EXTR' TABS1 I;            MAX='EXTR' TORD2 M2;            'SI' (('VALE' Y) 'EGA' MAX);                 X2='EXTR' TABS2 M2;            'SINON';                 X2='IPOL' Y TORD2 TABS2;            'FINSI';            X=(LAMBDA * X1) + ((1. - LAMBDA) * X2);            'REMP' LABS I X;            'REMP' LORD I Y;     'FIN' BOUCLE19;     'REPE' BOUCLE20 (M1 - M);            I=I + 1;            X='EXTR' TABS1 I;            Y1='EXTR' TORD1 I;            MAX='EXTR' TABS2 M2;            'SI' (('VALE' X) 'EGA' MAX);                 Y2='EXTR' TORD2 M2;            'SINON';                 Y2='IPOL' X TABS2 TORD2;            'FINSI';            Y=(LAMBDA * Y1) + ((1. - LAMBDA) * Y2);            'REMP' LABS I X;            'REMP' LORD I Y;     'FIN' BOUCLE20;'FINSI';*-----------------------------------------------------------------------*- COUPURE DANS LA COURBE : INTERPOLATION D'ABORD EN X, PUIS EN Y      -*-----------------------------------------------------------------------'SI' ('EGA' XOUY 'XY');     M=M1 / 2;     LABS=PROG M1 * 0.;     LORD=PROG M1 * 0.;     I=0;     'REPE' BOUCLE21 M;            I=I + 1;            X='EXTR' TABS1 I;            Y1='EXTR' TORD1 I;            MAX='EXTR' TABS2 M2;            'SI' (('VALE' X) 'EGA' MAX);                 Y2='EXTR' TORD2 M2;            'SINON';                 Y2='IPOL' X TABS2 TORD2;            'FINSI';            Y=(LAMBDA * Y1) + ((1. - LAMBDA) * Y2);            'REMP' LABS I X;            'REMP' LORD I Y;     'FIN' BOUCLE21;     'REPE' BOUCLE22 (M1 - M);            I=I + 1;            Y='EXTR' TORD1 I;            X1='EXTR' TABS1 I;            MAX='EXTR' TORD2 M2;            'SI' (('VALE' Y) 'EGA' MAX);                 X2='EXTR' TABS2 M2;            'SINON';                 X2='IPOL' Y TORD2 TABS2;            'FINSI';            X=(LAMBDA * X1) + ((1. - LAMBDA) * X2);            'REMP' LABS I X;            'REMP' LORD I Y;     'FIN' BOUCLE22;'FINSI';*-----------------------------------------------------------------------*-         CAS D'UNE INTERPOLATION SANS COUPURE EN X                   -*-----------------------------------------------------------------------'SI' ('EGA' XOUY 'XX');     LABS=COPI TABS1;     LORD=PROG M1 * 0.;     I=0;     'REPE' BOUCLE23 M1;            I=I + 1;            X='EXTR' LABS I;            Y1='EXTR' TORD1 I;            MAX='EXTR' TABS2 M2;            'SI' (('VALE' X) 'EGA' MAX);                 Y2='EXTR' TORD2 M2;            'SINON';                 Y2='IPOL' X TABS2 TORD2;            'FINSI';            Y=(LAMBDA * Y1) + ((1. - LAMBDA) * Y2);            'REMP' LORD I Y;     'FIN' BOUCLE23;'FINSI';*-----------------------------------------------------------------------*-         CAS D'UNE INTERPOLATION SANS COUPURE EN Y                   -*-----------------------------------------------------------------------'SI' ('EGA' XOUY 'YY');     LABS=PROG M1 * 0.;     LORD=COPI TORD1;     I=0;     'REPE' BOUCLE24 M1;            I=I + 1;            Y='EXTR' LORD I;            X1='EXTR' TABS1 I;            MAX='EXTR' TORD2 M2;            'SI' (('VALE' Y) 'EGA' MAX);                 X2='EXTR' TABS2 M2;            'SINON';                 X2='IPOL' Y TORD2 TABS2;            'FINSI';            X=(LAMBDA * X1) + ((1. - LAMBDA) * X2);            'REMP' LABS I X;     'FIN' BOUCLE24;'FINSI';*-----------------------------------------------------------------------*-                 FIN DE LA PROCEDURE                                 -*-----------------------------------------------------------------------DETRUIRE TABS1;DETRUIRE TORD1;DETRUIRE TABS2;DETRUIRE TORD2;*EVN=EVOL MANU LABS LORD;*'FINPROC' EVN;

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