/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E T U D E   T R I D I M E N S I O N N E L L E   D E   L A   D Y N A M I Q U E   D E   V E R H U L S T                      */
/*        O U   L E S   C O O R D O N N E E S   { X , Y }   C O R R E S P O N D E N T                                                */
/*        A   X(n)   E T   A   X(n-1)   R E S P E C T I V E M E N T  :                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrk/verhulst.21$K' :                                                                                           */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1998??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N T E R F A C E   ' listG '  :                                                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        :Debut_listG:                                                                                                              */
/*        :Fin_listG:                                                                                                                */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I R E C T I V E S   S P E C I F I Q U E S   D E   C O M P I L A T I O N  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PRAGMA_CPP_____AUTORISER_LE_GooF
                                        /* Ceci est essentiel puisque l'on souhaite etudier l'influence de la syntaxe sur les        */
                                        /* resultats obtenus. Ceci manquait et a ete introduit le 20040420233617.                    */
@define   PRAGMA_CL_____MODULE_NON_OPTIMISABLE

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F I C H I E R S   D ' I N C L U D E S  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  INCLUDES_BASE

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E   B A S E   E T   U N I V E R S E L L E S  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/attractor.11.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                                                    3                                              */
/*        D E F I N I T I O N   D E   L ' E S P A C E   P H Y S I Q U E   D A N S   R     ( D E B U T )  :                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Nota :                                                                                                                     */
/*                                                                                                                                   */
/*                    Les extrema des coordonnees {x,y,z}                                                                            */
/*                  ainsi que ceux de leurs differentielles                                                                          */
/*                  {dx,dy,dz} sont fixees un peu arbitrairement                                                                     */
/*                  et sans etre parametrees.                                                                                        */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   hXmin_ESPACE                                                                                                                  \
                    PARE(-1.4)
#define   hYmin_ESPACE                                                                                                                  \
                    PARE(-1.4)
#define   hZmin_ESPACE                                                                                                                  \
                    PARE(-1.4)
                                        /* Definition du "coin" inferieur-gauche-arriere de l'espace physique. ATTENTION, il est     */
                                        /* evident que logiquement il faudrait prendre {0,0,0} ; ce choix symetrique de celui de     */
                                        /* 'h?max_ESPACE' est lie a la visualisation de type "torique" via '?_DU_TORE(...)'.         */

#define   hXmax_ESPACE                                                                                                                  \
                    PARE(1.4)
#define   hYmax_ESPACE                                                                                                                  \
                    PARE(1.4)
#define   hZmax_ESPACE                                                                                                                  \
                    PARE(1.4)
                                        /* Definition du "coin" superieur-droite-avant de l'espace physique.                         */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                                                    3                                              */
/*        D E F I N I T I O N   D E   L ' E S P A C E   P H Y S I Q U E   D A N S   R     ( D E B U T )  :                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/attractor.12.I"

#define   dXmin_ESPACE                                                                                                                  \
                    PARE(-2.00)
#define   dYmin_ESPACE                                                                                                                  \
                    PARE(-2.00)
#define   dZmin_ESPACE                                                                                                                  \
                    PARE(-2.00)
                                        /* Definition des minima des differentielles {dx,dy,dz}.                                     */
#define   dXmax_ESPACE                                                                                                                  \
                    PARE(2.00)
#define   dYmax_ESPACE                                                                                                                  \
                    PARE(2.00)
#define   dZmax_ESPACE                                                                                                                  \
                    PARE(2.00)
                                        /* Definition des maxima des differentielles {dx,dy,dz}.                                     */

#include  xrk/attractor.1D.I"
                                        /* Formules de renormalisation des differentielles dans [0,1] ; elles sont utilisees lorsque */
                                        /* la production d'images en couleurs est demandee (voir 'visualiser_en_RVB').               */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   D I F F E R E N T S   E S P A C E S   E T   D E   L ' E F F E T   D E   B R U M E  :         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/attractor.13.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A I D E   A U   C A D R A G E   D E S   I M A G E S  :                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/attractor.1C.I"

DONNEES_DE_RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES
                                        /* Definition des extrema des coordonnees et des derivees. On notera bien l'absence de       */
                                        /* point-virgule apres 'DONNEES_DE_RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES'.   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T I O N   D E S   I M A G E S  :                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrv/champs_5.14.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   G E N E R A L E S   R E L A T I V E S   A   L A   V I S U A L I S A T I O N  :                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   DCT                                                                                                                           \
                    FRA1(FRA2(FU))
DEFV(Local,DEFV(Float,INIT(dct,DCT)));
                                        /* Definition de 'dt'.                                                                       */

#include  xrk/attractor.14.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F O N C T I O N   D E   M E M O R I S A T I O N   D U   P O I N T   C O U R A N T  :                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/attractor.16.I"

#define   RAYON_DE_VISUALISATION                                                                                                        \
                    FRA4(FRA10(FU))
DEFV(Local,DEFV(Float,INIT(rayon_de_visualisation,RAYON_DE_VISUALISATION)));
                                        /* Rayon du disque materialisant une iteration.                                              */

BFonctionI

DEFV(Local,DEFV(FonctionI,memorisation_1_point_07(AXf,AYf,AZf,AdXf,AdYf,AdZf,numero_de_l_iteration_courante)))
DEFV(Argument,DEFV(Float,AXf));
DEFV(Argument,DEFV(Float,AYf));
DEFV(Argument,DEFV(Float,AZf));
                                        /* Definition de la position {x,y,z} de l'iteration courante.                                */
DEFV(Argument,DEFV(Float,AdXf));
DEFV(Argument,DEFV(Float,AdYf));
DEFV(Argument,DEFV(Float,AdZf));
                                        /* Definition des differentielles {dx,dy,dz} de la position de l'iteration courante.         */
DEFV(Argument,DEFV(Int,numero_de_l_iteration_courante));
                                        /* Numero de l'iteration courante afin d'attenuer eventuellement la luminance des points     */
                                        /* materialisant chaque iteration en fonction de leur numero (les premieres iterations etant */
                                        /* plus sombres, et les dernieres etant plus lumineuses).                                    */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
#include  xrk/attractor.15.I"

     INIT_ERROR;
     /*..............................................................................................................................*/
     MEMORISATION_DU_POINT_COURANT(X_DERIVEE_DANS_01(AdXf)
                                  ,Y_DERIVEE_DANS_01(AdYf)
                                  ,Z_DERIVEE_DANS_01(AdZf)
                                   );
                                        /* Memorisation du point courant en Noir et Blanc ou en Couleurs, mais uniquement s'il est   */
                                        /* visible en fonction des conditions de visualisation...                                    */
     RETU_ERROR;
     Eblock

EFonctionI

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F O N C T I O N S   D E   V I S U A L I S A T I O N   E T   D ' I N T E R P O L A T I O N  :                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
=define   ZOOM_IMPLICITE                                                                                                                \
                    GRO8(FRA10(FU))

#include  xrk/attractor.17.I"

#include  xrv/particule.31.I"

#define   TAUX_DE_CROISSANCE                                                                                                            \
                    GRO3(FU)
dfTRANSFORMAT_31(liste_TAUX_DE_CROISSANCE,fichier_TAUX_DE_CROISSANCE,TAUX_DE_CROISSANCE_IMPLICITE,TAUX_DE_CROISSANCE)
                                        /* Definition du fichier de definition du taux de croissance.                                */
#define   sTAUX_DE_CROISSANCE(numero_de_la_periode)                                                                                     \
                    FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_TAUX_DE_CROISSANCE))
                                        /* Formule generale definissant la variation du taux de croissance.                          */

#define   CX0                                                                                                                           \
                    FRA2(FU)
dfTRANSFORMAT_31(liste_VALEUR_INITIALE,fichier_VALEUR_INITIALE,VALEUR_INITIALE_IMPLICITE,CX0)
                                        /* Definition du fichier de definition de la valeur initiale 'X(0)'.                         */
#define   sVALEUR_INITIALE(numero_de_la_periode)                                                                                        \
                    FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_VALEUR_INITIALE))
                                        /* Formule generale definissant la variation de la valeur initiale 'X(0)'.                   */

dfTRANSFORMAT_31(liste_PAS_DE_TEMPS_dct,fichier_PAS_DE_TEMPS_dct,PAS_DE_TEMPS_dct_IMPLICITE,DCT)
                                        /* Definition du fichier des pas de temps.                                                   */
#define   sPAS_DE_TEMPS_dct(numero_de_la_periode)                                                                                       \
                    FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_PAS_DE_TEMPS_dct))
                                        /* Formule generale definissant les variations du pas de temps.                              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   D Y N A M I Q U E   D E   V E R H U L S T  :                                             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Considerons la relation de recurrence                                                                          */
/*                  suivante :                                                                                                       */
/*                                                                                                                                   */
/*                                              2                                                                                    */
/*                  X[n+1] = (1+r).X[n] - r.X[n]                                                                                     */
/*                                                                                                                                   */
/*                    Cette relation correspond par exemple                                                                          */
/*                  a la population annuelle d'une colonie                                                                           */
/*                  animale, dont le taux de croissance est R.                                                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/verhulst.11.I"

dfTRANSFORMAT_31(liste_NOMBRE_D_ITERATIONS,fichier_NOMBRE_D_ITERATIONS,NOMBRE_D_ITERATIONS_IMPLICITE,NOMBRE_D_ITERATIONS)
                                        /* Definition du fichier des nombres d'iterations.                                           */
#define   sNOMBRE_D_ITERATIONS(numero_de_la_periode)                                                                                    \
                    INTE(sTRANSFORMAT_31(numero_de_la_periode,liste_NOMBRE_D_ITERATIONS))                                               \
                                        /* Formule generale definissant les variations du nombre d'iterations.                       */

DEFV(Local,DEFV(Float,INIT(taux_de_croissance,TAUX_DE_CROISSANCE)));
                                        /* Definition du taux de croissance.                                                         */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   T R O I S   F O N C T I O N S   ' F '  :                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
DEFV(Local,DEFV(Float,INIT(Xn_1,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(Xn,FLOT__UNDEF)));
                                        /* Definition de l'iteration courante.                                                       */

#define   gFx(cx,cy,cz,t)                                                                                                               \
                    Xn_1                                                                                                                \
                                        /* Definition de la fonction F (x,y,z,t).                                                    */ \
                                        /*                            x                                                              */
#define   gFy(cx,cy,cz,t)                                                                                                               \
                    Xn                                                                                                                  \
                                        /* Definition de la fonction F (x,y,z,t).                                                    */ \
                                        /*                            y                                                              */
#define   gFz(cx,cy,cz,t)                                                                                                               \
                    Zcentre_ESPACE                                                                                                      \
                                        /* Definition de la fonction F (x,y,z,t).                                                    */ \
                                        /*                            z                                                              */

BFonctionF

DEFV(Local,DEFV(FonctionF,Fonction_Fx(cx,cy,cz,t)))
DEFV(Argument,DEFV(Float,cx));
DEFV(Argument,DEFV(Float,cy));
DEFV(Argument,DEFV(Float,cz));
DEFV(Argument,DEFV(Float,t));
                                        /* Definition des coordonnees spatio-temporelles.                                            */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     RETU(gFx(cx,cy,cz,t));
     Eblock

EFonctionF

BFonctionF

DEFV(Local,DEFV(FonctionF,Fonction_Fy(cx,cy,cz,t)))
DEFV(Argument,DEFV(Float,cx));
DEFV(Argument,DEFV(Float,cy));
DEFV(Argument,DEFV(Float,cz));
DEFV(Argument,DEFV(Float,t));
                                        /* Definition des coordonnees spatio-temporelles.                                            */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     RETU(gFy(cx,cy,cz,t));
     Eblock

EFonctionF

BFonctionF

DEFV(Local,DEFV(FonctionF,Fonction_Fz(cx,cy,cz,t)))
DEFV(Argument,DEFV(Float,cx));
DEFV(Argument,DEFV(Float,cy));
DEFV(Argument,DEFV(Float,cz));
DEFV(Argument,DEFV(Float,t));
                                        /* Definition des coordonnees spatio-temporelles.                                            */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     RETU(gFz(cx,cy,cz,t));
     Eblock

EFonctionF

#define   Fx(cx,cy,cz,t)                                                                                                                \
                    Fonction_Fx(cx,cy,cz,t)                                                                                             \
                                        /* Definition de la fonction F (x,y,z,t).                                                    */ \
                                        /*                            x                                                              */
#define   Fy(cx,cy,cz,t)                                                                                                                \
                    Fonction_Fy(cx,cy,cz,t)                                                                                             \
                                        /* Definition de la fonction F (x,y,z,t).                                                    */ \
                                        /*                            y                                                              */
#define   Fz(cx,cy,cz,t)                                                                                                                \
                    Fonction_Fz(cx,cy,cz,t)                                                                                             \
                                        /* Definition de la fonction F (x,y,z,t).                                                    */ \
                                        /*                            z                                                              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L ' I N T E G R A T I O N   D U   S Y S T E M E                                                */
/*        D ' E Q U A T I O N S   D I F F E R E N T I E L L E S  :                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/integr.1B.vv.I"
                                        /* Utile uniquement pour definir {cx,cy,cz} et {dcx,dcy,dcz}.                                */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D O N N E E S   D E   V I S U A L I S A T I O N  " T O R I Q U E "  :                                                      */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   R3                                                                                                                            \
                    FRA1(FU)
#define   I3                                                                                                                            \
                    FZERO

#include  xrk/fluide_2D.11.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   I N I T I A L I S A T I O N S  :                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/attractor.18.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E T U D E   T R I D I M E N S I O N N E L L E   D E   L A   D Y N A M I Q U E   D E   V E R H U L S T  :                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     INITIALISATIONS_GENERALES;
                                        /* Initialisations generales faites au tout debut...                                         */

     iTRANSFORMAT_31(liste_TAUX_DE_CROISSANCE,TAUX_DE_CROISSANCE_IMPLICITE);
                                        /* Initialisation du taux de croissance.                                                     */

     iTRANSFORMAT_31(liste_VALEUR_INITIALE,VALEUR_INITIALE_IMPLICITE);
                                        /* Initialisation de la valeur initiale de 'X(0)'.                                           */
     iTRANSFORMAT_31(liste_PAS_DE_TEMPS_dct,PAS_DE_TEMPS_dct_IMPLICITE);
                                        /* Initialisation du pas de temps.                                                           */
     iTRANSFORMAT_31(liste_NOMBRE_D_ITERATIONS,NOMBRE_D_ITERATIONS_IMPLICITE);
                                        /* Initialisation du nombre d'iterations.                                                    */

#include  xrv/champs_5.1A.I"

     GET_ARGUMENTSv(nombre_d_arguments
                   ,BLOC(PROCESS_ARGUMENTS_GEOMETRIQUES;

                         PROCESS_ARGUMENT_FICHIER("TAUX_DE_CROISSANCE="
                                                 ,fichier_TAUX_DE_CROISSANCE
                                                 ,liste_TAUX_DE_CROISSANCE
                                                 ,TAUX_DE_CROISSANCE_IMPLICITE
                                                 ,gTRANSFORMAT_31
                                                  );

                         PROCESS_ARGUMENT_FICHIER("VALEUR_INITIALE="
                                                 ,fichier_VALEUR_INITIALE
                                                 ,liste_VALEUR_INITIALE
                                                 ,VALEUR_INITIALE_IMPLICITE
                                                 ,gTRANSFORMAT_31
                                                  );

                         PROCESS_ARGUMENT_FICHIER("PAS_DE_TEMPS_dct="
                                                 ,fichier_PAS_DE_TEMPS_dct
                                                 ,liste_PAS_DE_TEMPS_dct
                                                 ,PAS_DE_TEMPS_dct_IMPLICITE
                                                 ,gTRANSFORMAT_31
                                                  );

                         PROCESS_ARGUMENT_FICHIER("NOMBRE_D_ITERATIONS="
                                                 ,fichier_NOMBRE_D_ITERATIONS
                                                 ,liste_NOMBRE_D_ITERATIONS
                                                 ,NOMBRE_D_ITERATIONS_IMPLICITE
                                                 ,gTRANSFORMAT_31
                                                  );

                         PROCESS_ARGUMENTS_DE_VISUALISATION;

                         PROCESS_ARGUMENTS_DE_VISUALISATION_DES_AXES_DE_COORDONNEES;

                         GET_ARGUMENT_I("n=""iterations=",nombre_d_iterations);

                         GET_ARGUMENT_F("dt=""dct=",dct);

                         GET_ARGUMENT_L("tore=",visualiser_sur_un_tore);
                         GET_ARGUMENT_F("gR=",facteur_du_rayon_gR);
                         GET_ARGUMENT_F("pR=",facteur_du_rayon_pR);
                         )
                    );

#include  xrv/champs_5.19.I"
                                        /* Pour eviter le message :                                                                  */
                                        /*                                                                                           */
                                        /*                  Static function is not referenced.                                       */
                                        /*                                                                                           */
                                        /* sur 'SYSTEME_ES9000_AIX_CC'...                                                            */

#include  xrk/attractor.19.I"
                                        /* Validations et definition de l'espace physique.                                           */

     Komp(numero_de_la_periode_courante_de_la_simulation,nombre_de_periodes_de_la_simulation)
          Bblock
          RE_INITIALISATION_DE_L_HORLOGE;
          INITIALISATIONS_RELATIVES_A_CHAQUE_NOUVELLE_IMAGE(numero_de_la_periode_courante);
                                        /* Initialisations necessaires avant le calcul et la generation de chaque nouvelle image.    */

          EGAL(taux_de_croissance,sTAUX_DE_CROISSANCE(numero_de_la_periode_courante));
                                        /* Calcul de la valeur initiale du nombre complexe 'w'.                                      */

          EGAL(Xn,sVALEUR_INITIALE(numero_de_la_periode_courante));
                                        /* Initialisation du processus.                                                              */

          vTRANSFORMAT_31(nombre_d_iterations,sNOMBRE_D_ITERATIONS,numero_de_la_periode_courante,fichier_NOMBRE_D_ITERATIONS);
                                        /* Calcul du nombre d'iterations lorsqu'il est variable.                                     */

          vTRANSFORMAT_31(dct,sPAS_DE_TEMPS_dct,numero_de_la_periode_courante,fichier_PAS_DE_TEMPS_dct);
                                        /* Calcul du pas de temps lorsqu'il est variable.                                            */

          Komp(numero_de_l_iteration_courante,nombre_d_iterations)
               Bblock
               DEFV(Float,INIT(cx_avant,cx));
               DEFV(Float,INIT(cy_avant,cy));
               DEFV(Float,INIT(cz_avant,cz));
                                        /* Sauvegarde des coordonnees {cx,cy,cz} avant l'iteration.                                  */

               EGAL(Xn_1,Xn);

               USs_GooF(BLOC(
                             Bblock
                             ITERATION_DE_VERHULST(Xn,Xn_1,taux_de_croissance);
                                        /* Iteration.                                                                                */
                             Eblock
                             )
                        );
                                        /* Procedure introduite le 20080106095001...                                                 */

               EGAL(cx,Fx(cx,cy,cz,temps_courant));
               EGAL(cy,Fy(cx,cy,cz,temps_courant));
               EGAL(cz,Fz(cx,cy,cz,temps_courant));
                                        /* Calcul des coordonnees.                                                                   */

               Test(IFEQ(numero_de_l_iteration_courante,PREMIERE_ITERATION_D_UN_Komp))
                    Bblock
                    EGAL(dcx,FZERO);
                    EGAL(dcy,FZERO);
                    EGAL(dcz,FZERO);
                                        /* Initialisation des differentielles pour la premiere iteration (on notera que 'FZERO' est  */
                                        /* la valeur la plus "logique"...).                                                          */
                    Eblock
               ATes
                    Bblock
                    EGAL(dcx,SOUS(cx,cx_avant));
                    EGAL(dcy,SOUS(cy,cy_avant));
                    EGAL(dcz,SOUS(cz,cz_avant));
                                        /* Calcul des differentielles pour les iterations suivantes...                               */
                    Eblock
               ETes

               RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES;
                                        /* On notera que cette recherche n'est pas conditionnee par 'editer_les_extrema', car les    */
                                        /* extrema pourraient etre utilises pour la visualisation...                                 */

               Test(IFOU(IL_FAUT(visualiser_le_fantome)
                        ,IFGE(numero_de_l_iteration_courante,PREMIERE_ITERATION_VISUALISEE)
                         )
                    )
                    Bblock
                    Test(IL_FAUT(visualiser_sur_un_tore))
                         Bblock
                         CALS(memorisation_1_point_07(X_DU_TORE(cx,cy,cz,temps_courant)
                                                     ,Y_DU_TORE(cx,cy,cz,temps_courant)
                                                     ,Z_DU_TORE(cx,cy,cz,temps_courant)
                                                     ,dcx
                                                     ,dcy
                                                     ,dcz
                                                     ,numero_de_l_iteration_courante
                                                      )
                              );
                                        /* Memorisation de l'iteration courante sur un tore....                                      */
                         Eblock
                    ATes
                         Bblock
                         CALS(memorisation_1_point_07(ADD2(cx
                                                          ,NEGA(NEUT(DIVI(ADD2(taux_de_croissance,I)
                                                                         ,GRO2(taux_de_croissance)
                                                                          )
                                                                     )
                                                                )
                                                           )
                                                     ,ADD2(cy
                                                          ,NEGA(MOIT(DIVI(EXP2(ADD2(taux_de_croissance,I))
                                                                         ,GRO4(taux_de_croissance)
                                                                          )
                                                                     )
                                                                )
                                                           )
                                                     ,NEUT(cz)
                                                     ,dcx
                                                     ,dcy
                                                     ,dcz
                                                     ,numero_de_l_iteration_courante
                                                      )
                              );
                                        /* Memorisation de l'iteration courante dans l'espace "normal". Les translations qui sont    */
                                        /* appliquees aux coordonees {x,y} proviennent de l'etude de la parabole :                   */
                                        /*                                                                                           */
                                        /*                                   2                                                       */
                                        /*                  y = (R+1).x - R.x                                                        */
                                        /*                                                                                           */
                                        /* dont le sommet a pour coordonnees :                                                       */
                                        /*                                                                                           */
                                        /*                        R+1                                                                */
                                        /*                  x  = -----                                                               */
                                        /*                   S    2.R                                                                */
                                        /*                                                                                           */
                                        /* et :                                                                                      */
                                        /*                                                                                           */
                                        /*                             2                                                             */
                                        /*                        (R+1)                                                              */
                                        /*                  y  = --------                                                            */
                                        /*                   S     4.R                                                               */
                                        /*                                                                                           */
                                        /* Les translations sont egales respectivement a 'X(S)' et 'Y(S)/2'...                       */
                         Eblock
                    ETes
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes

               INCREMENTATION_DE_L_HORLOGE(dct);
                                        /* Simulation du temps de la simulation...                                                   */
               Eblock
          EKom

#include  xrk/attractor.1A.I"

          VISUALISATION_DES_AXES_DE_COORDONNEES;
                                        /* Visualisation si necessaire des trois axes de coordonnees.                                */

          GENERATION_D_UNE_IMAGE_ET_PASSAGE_A_LA_SUIVANTE(BLOC(VIDE;));
                                        /* Generation de l'image courante...                                                         */
          Eblock
     EKom

     EDITION_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES;
                                        /* Edition facultative des extrema des coordonnees et des derivees.                          */

     RETU_Commande;
     Eblock
ECommande



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.