/*************************************************************************************************************************************/ /* */ /* C A L C U L D E S E N S E M B L E S " I T E R A T I F S " D A N S L E P L A N C O M P L E X E , */ /* D A N S L E C O R P S D E S Q U A T E R N I O N S ( O U " H Y P E R - C O M P L E X E " ) , */ /* E T D A N S L E C O R P S D E S O C T O N I O N S ( O U " H Y P E R - H Y P E R - C O M P L E X E " ) : */ /* */ /* */ /* Nota : */ /* */ /* Lorsqu'un parametre peut prendre deux */ /* valeurs 'M' et 'J' suivant que l'on */ /* calcule l'ensemble de Mandelbrot ou un */ /* ensemble de Julia, on le note : */ /* */ /* (M,J), avec */ /* */ /* donc dans l'ordre Mandelbrot, puis Julia... */ /* */ /* */ /* Author of '$ximcf/iterations$DEF' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 19890000000000). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F O N C T I O N S D E C H A N G E M E N T D E F O R M A T D E S */ /* F E N E T R E S D E C A L C U L E N F O N C T I O N D E S */ /* P R O P O R T I O N S D E L ' I M A G E A G E N E R E R : */ /* */ /*************************************************************************************************************************************/ #define gVARIABLES_RELATIVES_A_LA_NECESSITE_D_HOMOTHETIE(choix_de_l_ajustement) \ DEFV(Logical \ ,INIT(ajuster_la_definition_de_la_fenetre_de_calcul_au_rapport_dimX_sur_dimY \ ,choix_de_l_ajustement \ ) \ ); \ /* L'ajustement de la proportion des dimensions des fenetres au rapport dimX/dimY est-il */ \ /* necessaire (introduit le 20091124124351 et transfere en partie ici le 20091126090816 */ \ /* depuis 'v $ximcf/iterations$FON 20091126090842' afin de pouvoir etre utilisee dans */ \ /* certains '$K's ('v $xrc/julia.02$K VARIABLES_RELATIVES_A_LA_NECESSITE_D_HOMOTHETIE' */ \ /* exemple...) ? */ #define CHANGEMENT_HOMOTHETIQUE_D_ABSCISSE(gauche,droite,fonction) \ fonction(MOYE(gauche,droite) \ ,MOIT(CARRE_OX_PAR_RAPPORT_A_OY(SOUS(droite,gauche))) \ ) #define CHANGEMENT_HOMOTHETIQUE_D_ABSCISSE_GAUCHE(gauche,droite) \ COND(IL_FAUT(ajuster_la_definition_de_la_fenetre_de_calcul_au_rapport_dimX_sur_dimY) \ ,CHANGEMENT_HOMOTHETIQUE_D_ABSCISSE(gauche,droite,SOUS) \ ,gauche \ ) #define CHANGEMENT_HOMOTHETIQUE_D_ABSCISSE_DROITE(gauche,droite) \ COND(IL_FAUT(ajuster_la_definition_de_la_fenetre_de_calcul_au_rapport_dimX_sur_dimY) \ ,CHANGEMENT_HOMOTHETIQUE_D_ABSCISSE(gauche,droite,ADD2) \ ,droite \ ) /* Fonctions de modification homothetique des abscisses d'une fenetre de calcul. On trouve */ /* d'abord la fonction generale, puis celles qui concernent respectivement les coins de */ /* de gauche et de droite d'une fenetre. */ /* */ /* La conditionnalite de l'ajustement de la fenetre a ete introduit le 20091124125720... */ #define CHANGEMENT_HOMOTHETIQUE_D_ORDONNEE(bas,haut,fonction) \ fonction(bas,haut) #define CHANGEMENT_HOMOTHETIQUE_D_ORDONNEE_BAS(bas,haut) \ COND(IL_FAUT(ajuster_la_definition_de_la_fenetre_de_calcul_au_rapport_dimX_sur_dimY) \ ,CHANGEMENT_HOMOTHETIQUE_D_ORDONNEE(bas,haut,SE12) \ ,bas \ ) #define CHANGEMENT_HOMOTHETIQUE_D_ORDONNEE_HAUT(bas,haut) \ COND(IL_FAUT(ajuster_la_definition_de_la_fenetre_de_calcul_au_rapport_dimX_sur_dimY) \ ,CHANGEMENT_HOMOTHETIQUE_D_ORDONNEE(bas,haut,SE22) \ ,haut \ ) /* Fonctions de modification homothetique des ordonnees d'une fenetre de calcul. On trouve */ /* d'abord la fonction generale, puis celles qui concernent respectivement les coins de */ /* du bas et du haut d'une fenetre. */ /* */ /* La conditionnalite de l'ajustement de la fenetre a ete introduit le 20091124125720... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F O N C T I O N S P O S S I B L E S D E V I S U A L I S A T I O N : */ /* */ /*************************************************************************************************************************************/ Denumer05(INIS(_VISUALISATION_DU_NOMBRE_D_ITERATIONS,UN) /* Visualisation du nombre d'iterations en fin d'iterations, */ ,_VISUALISATION_DE_L_ARGUMENT_DE_SORTIE /* Visualisation de la valeur de l'argument de SUITE(N) en fin d'iterations, */ ,_VISUALISATION_DES_ORBITES /* Tentative de visualisation de l'orbite des points par deformation d'une image Argument, */ ,_VISUALISATION_DES_DISTANCES /* Visualisation de la fonction d(z). */ ,DERNIER_MODE_DE_VISUALISATION ,liste_des_modes_de_visualisation_des_fractales ); /* Liste des modes de visualisation des ensembles de Mandelbrot et Julia. */ #define VISUALISATION_DU_NOMBRE_D_ITERATIONS \ ENUM(_VISUALISATION_DU_NOMBRE_D_ITERATIONS) \ /* Ce qui donne pour l'ensemble de Mandelbrot : */ \ /* */ \ /* *: */ \ /* ***** */ \ /* ***** */ \ /* .:. *+********* * */ \ /* ******************* ** */ \ /* ********************** */ \ /* *************************: */ \ /* **************************** */ \ /* *.****:. ****************************. */ \ /* ***********. ****************************: */ \ /* . ************.***************************- */ \ /* ********************************************************** */ \ /* . ************.***************************- */ \ /* ***********. ****************************: */ \ /* *.****:. ****************************. */ \ /* **************************** */ \ /* *************************: */ \ /* ********************** */ \ /* ******************* ** */ \ /* .:. *+********* * */ \ /* ***** */ \ /* ***** */ \ /* *: */ \ /* */ #define VISUALISATION_DE_L_ARGUMENT_DE_SORTIE \ ENUM(_VISUALISATION_DE_L_ARGUMENT_DE_SORTIE) \ /* Ce qui donne pour l'ensemble de Mandelbrot : */ \ /* */ \ /* ++++-------:::::...... @@:::.. @@**oo+-.@+: @o+-::.. @ooo */ \ /* ++++++------::::::..... +++---::.. @@. @*@. :*:@+:.@. @@**oo */ \ /* o+++++++-----::::::...**ooo++---::...o+-::.o+-.- @:@-*o+-@@**oo+ */ \ /* ooo++++++------::: @@***ooo++---: @@*o++:. :+. -. +@+--:. oo++- */ \ /* ooooo++++++----:... @@@**ooo++--:. @ @*o+ :.**:+++ * *o @*o+-- */ \ /* *oooooo+++++---::... @@@**@@*o++-:@o-:o-.+.-*--:..o*+*+-. *-:. */ \ /* ***ooooo+oo+++--::... -::. @*o*o+-@o+o@.:-*@+o*@ . .*-:o:@o+.o */ \ /* *****oo@**ooo++--::@**o+-::. +-:.+-o- . o@@.*********+@@o****@+ */ \ /* @**** @@***oo+++:. @*o++:.@*o+-. :o*@o @@**************o-**oo*. */ \ /* @@@... @@** @*oo:*-.@*+-.o-.@** - *@@@@@*************ooo:++@+ */ \ /* @--::... @-:. - :+- -*:::*- *+.-- @@@@@@@@***********ooooo-@-o */ \ /* +++--::.*oo+-: @*@-o.* -@ o @o o.@*@@@@@@@@@@*********ooooooo@@+ */ \ /* oo++-:. @**oo+:@o- * :@ @@@@- @:- @@@@@@@@@@@@@******oooooooo... */ \ /* @*@*o-:.o-. @ @@-:@@@@@@@@@@@@+-@@@@@@@@@@@@@@@****ooooooooo- - */ \ /* o-.+.*:+ o.@*:++:-@.@@@@@@@@@@@@:@@@@@@@@@@@@@@@@@**oo++++++- :@ */ \ /* -@@-@@---@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@------------ */ \ /* :+*-*.o-@:* .o--o+ * o ..::------+@o */ \ /* . .:-o*:+o@ @@ +o -+ ...:::::::::+@+ */ \ /* ::--+o*@ ..::-o :+@.@o @ +@ o-@ .....::::::::*o* */ \ /* ---++oo*.::-+o@ . +:* *+ @:* .@:* .........:::::: - */ \ /* ++ooo**@@ +o*@@+@+-+@+.ooo.+@.-o++@ ..........::::+ +: */ \ /* o**@@@ ..@ .::o.+* .-+*:+* ..@-@@. .............:o-- - */ \ /* ...@@ ..::-:-+*@ .:--o* .:-+*@o:. :@ .............+..:: * */ \ /* .....:: ..:::--++oo .:-+oo*@-+o*-+:+@*@: o.........- :.... -@ */ \ /* ...::::::::---++ooo**@@+oo*@@ ...:-+ :-. *o+. ::. @*@*.++:o ::*: */ \ /* .::::::------++ooo**@@ .. .::-+o :-o:+*-*+.-+o**:.-.:+*@.+o*@ */ \ /* :::::------++++o***@@ ..:::---+o*@@ @ .:-@o*. o--:*.@.:@ .:-++ */ \ /* ::::------+++++ooo@@ ..:::--+++o@ .:--o*@o:**+*@: -++o*@::--- */ \ /* ::------++++++ooooo***..:::--+++oo***:-+oo*:-+o+@ o +.:-- ..::- */ \ /* ------++++++oooooo*****@@:--+++oo***@@ *@ . *@o.o -o* *@@ ...: */ \ /* -----++++++oooooo*****@@@@@ +oo***@@ ..::-+* -o@ :-+oo**@@ ::: */ \ /* @--+++++++oooooo*****@@@@@ ..*@@ ..::-++o*@ ..:--+oo*...::: */ \ /* */ #define VISUALISATION_DES_ORBITES \ ENUM(_VISUALISATION_DES_ORBITES) #define VISUALISATION_DES_DISTANCES \ ENUM(_VISUALISATION_DES_DISTANCES) /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* E S P A C E D E L Y A P U N O V : */ /* */ /*************************************************************************************************************************************/ DenumeT07(TAUX_DE_CROISSANCE_R1_DANS_L_ESPACE_DE_LYAPUNOV ,TAUX_DE_CROISSANCE_R2_DANS_L_ESPACE_DE_LYAPUNOV ,TAUX_DE_CROISSANCE_R3_DANS_L_ESPACE_DE_LYAPUNOV ,TAUX_DE_CROISSANCE_R4_DANS_L_ESPACE_DE_LYAPUNOV ,TAUX_DE_CROISSANCE_R5_DANS_L_ESPACE_DE_LYAPUNOV ,TAUX_DE_CROISSANCE_R6_DANS_L_ESPACE_DE_LYAPUNOV ,TAUX_DE_CROISSANCE_R7_DANS_L_ESPACE_DE_LYAPUNOV ,choix_du_taux_de_croissance_dans_l_espace_de_Lyapunov ) /* Types possibles des taux de croissance afin de definir le contenu d'une periode, et donc */ /* de definir le contenu du tableau 'suite_des_taux_de_croissance'. ATTENTION, on notera */ /* qu'il n'y a pas de ";" a la suite de cette directive, car sinon, il se trouverait colle */ /* a la derniere definition... */ /* */ /* Le 20151006091226 furent introduits 'R4' et 'R5'... */ /* */ /* Le 20151007092702 furent introduits 'R6' et 'R7'... */ #define PREMIERE_ITERATION_DANS_L_ESPACE_DE_LYAPUNOV \ INDEX0 \ /* Numero de la premiere iteration... */ Denumer03(INIS(_CALCUL_DE_L_EXPOSANT_DE_LYAPUNOV_A_PARTIR_DE_LA_PARTIE_REELLE_DE_LA_DERIVEE,UN) ,_CALCUL_DE_L_EXPOSANT_DE_LYAPUNOV_A_PARTIR_DE_LA_PARTIE_IMAGINAIRE_DE_LA_DERIVEE ,_CALCUL_DE_L_EXPOSANT_DE_LYAPUNOV_A_PARTIR_DU_MODULE_DE_LA_DERIVEE ,choix_du_mode_de_calcul_de_l_exposant_de_Lyapunov ); #define CALCUL_DE_L_EXPOSANT_DE_LYAPUNOV_A_PARTIR_DE_LA_PARTIE_REELLE_DE_LA_DERIVEE \ ENUM(_CALCUL_DE_L_EXPOSANT_DE_LYAPUNOV_A_PARTIR_DE_LA_PARTIE_REELLE_DE_LA_DERIVEE) #define CALCUL_DE_L_EXPOSANT_DE_LYAPUNOV_A_PARTIR_DE_LA_PARTIE_IMAGINAIRE_DE_LA_DERIVEE \ ENUM(_CALCUL_DE_L_EXPOSANT_DE_LYAPUNOV_A_PARTIR_DE_LA_PARTIE_IMAGINAIRE_DE_LA_DERIVEE) #define CALCUL_DE_L_EXPOSANT_DE_LYAPUNOV_A_PARTIR_DU_MODULE_DE_LA_DERIVEE \ ENUM(_CALCUL_DE_L_EXPOSANT_DE_LYAPUNOV_A_PARTIR_DU_MODULE_DE_LA_DERIVEE) /* Definition des trois facons de calculer l'exposant de Lyapunov a partir de la derivee de */ /* la fonction iteree... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* C A L C U L D E L A F O N C T I O N ' zeta ' D E R I E M A N N : */ /* */ /*************************************************************************************************************************************/ #define PREMIER_ELEMENT_DE_LA_FONCTION_ZETA_DE_RIEMANN \ POSI(UN) \ /* Numero de la premiere iteration... */