Logiciel libre de géométrie, d'analyse et de simulation multiplateforme par Yves Biton
 
Accueil - Nombres complexes

Attracteur de Gumowski-Mira : Utilisation d’une suite récurrente complexe.

publication vendredi 19 août 2016.


Il s’agit ici de représenter graphiquement la suite récurrente complexe définie par $\begin{array}{l}x_{n+1}=by_n+f\left( x_n \right)\\ y_{n+1}=-x_n+f\left(x_{n+1}\right)\end{array}$.

La fonction f est définie par $f(x)=ax+\frac{2(1-a)x^2}{1+x^2}$. Nous donnerons à l’utilisateur la possibilité de modifier les valeurs de a, b ainsi que la formule définissant f.

Pour réaliser cette figure vous devrez utiliser la version 5.1 de MathGraph32 ou une version ultérieure (car ce n’est que depuis cette version que les sites récurrentes peuvent comporter jusqu’à 100 000 termes).

Voici ci-dessous la figure à réaliser, animée par le moteur JavaScript vectoriel de MathGraph32 :

JavaScript étant plus lent que Java, il faut un moment avant que la figure réagisse aux changements (il y a 50000 termes d’une suite complexe à calculer à chaque fois).

Voici comment réaliser cette figure avec la version 5.1 de MathGraph32.

Commencez par utiliser l’icône pour créer une nouvelle figure munie d’un repère orthonormal, avec pointillés et graduations.

Commençons par créer une nouvelle variable qui nous permettra de zoomer et dézoomer sur la figure.
Utilisez l’icône (qui comme toutes les icônes de création de calcul se trouve dans l’avant-dernière rangée d’icônes) et remplissez la boîte de dialogue comme ci-dessous (n’oubliez pas de cocher la case Dialogue associé) :

Les variables sont toujours rajoutées en début de la liste des objets créés. Nous pouvons donc modifier notre repère en utilisant la variable zoom.

Utilisez le menu Modifier - Repère, choisissez le repère (O,I,J) et remplissez la boîte de dialogue comme ci-dessous (entrez 2^(-zoom) comme unité sur les deux axes) :

De nouveau utilisez l’icône pour créer une variable n qui contiendra le nombre de termes de la suite :

Remarque : Pour une machine peu puissante il vaudra peut-être mieux entrer une valeur actuelle de n égale à 20000.

Utilisez l’icône pour créer deux calculs réels :

- Le premier calcul nommé a contenant comme formule 0.7185

- Le second calcul nommé b contenant comme formule 0.9997

Créons maintenant la fonction réelle f définie par f(x)=a*x+2*(1-a)*x^2/(1+x^2) avec l’icône (n’oubliez pas de décocher la case Tracer courbe) :

Créez un calcul complexe nommé z0 avec l’icône . Ce calcul contiendra le premier terme de la suite. Entrez comme formule -6-6*i.

Nous devons maintenant créer la fonction complexe d’une variable complexe g qui servira à définir la suite récurrente complexe. Utilisez l’icône et remplissez la formule comme ci-dessous, la formule à entrer étant b*im(z)+f(re(z))+i*(-re(z)+f(b*im(z)+f(re(z)))).

Nous pouvons maintenant définir la suite récurrente complexe avec l’icône comme ci-dessous :

Et nous créons maintenant le graphe de cette suite avec l’icône . Auparavant activez la couleur bleue dans la palette de couleurs et le style de point "pixel" qui existe depuis la version 5.1 et est situé en bas de la palette de style de point. Remplissez la boîte de dialogue comme ci-dessous en pensant à décocher la case Points reliés par des segments :

Nous allons maintenant donner à l’utilisateur la possibilité de modifier sur la figure les valeurs de a, b et la formule de f.

Dans la palette de couleurs, activez la couleur marron.

Activez l’outil de création d’un éditeur de formule (il se trouve dans la troisième rangée d’icônes à partir du bas) et cliquez en haut et à gauche de la figure. Remplissez la boîte de dialogue comme ci-dessous :

Les caractères $ encadrant l’en-tête servent à utiliser le style d’affchage LaTeX.

De la même façon créez en éditeur de formule pour modifier les formules du calcul b, du calcul complexe z0 (premier terme de la suite) et de la fonction f. Pour l’éditeur associé à z0 vous pouvez cocher la case Signes de multiplication implicites ce qui permet par exemple d’entrer comme formule 6+6i au lieu de 6+6*i. Ne cochez pas la case Affichage temps réel de la formule.

La figure est finie. Vous pouvez zoomer ou dézoomer sur le figure avec les boutons + et - de la variable zoom, changer le nombre de termes de la suite, les valeurs de a, b, z0 et la formule de la fonction f.

Essayez par exemple les valeurs suivantes :

- a = -0.77, b=0.95, z0=3+i, n = 50000

- a=0.31, b=1, z0=12, n = 50000 (dézoomer)

- a =-0.05, b=0.999,z°=4-4*i, n = 50000

- a=6, b=0.9996, z0=5 et f(x)=a*x+2*(1-a)*x^2/(1+4*x^2), n = 50000

- a = -0.1793, b = 1, f(x) = abs(a*x-arctan(a-x)), n = 60000, zoom = -1

- a = 0.544, b = 1, f(x) = a*x+arctan(abs(x-a)), n = 100000, zoom = -1

- a = 0.223542555, b = 1, f(x) = a*x+arctan(x^3/(1+a*x^3)), n = 90000, zoom = -2

- a = -0.9640736808, b = 0.9644999159, f(x) = a*x-abs(arctan(a-x)+b*x^2/(1+x^2)), n = 60000, zoom = 2

- a = 0.733303464, b = 1, abs(a*x-(b*x^2-sin(a))/(a*x^2+cos(b)^2)), n = 40000, zoom = -6

- a = 0.09798342, b = 1, f(x) = a*x+(3-a)/(a+exp(x)), n = 80000, zoom = -5

Une remarque pour finir : Pour ces valeurs :
- a = 0.403, b = 1, f(x) = a*x-x/(a+x)+arctan(a*x), n = 100000, zoom = -4, la figure obtenue dans cette page html n’est pas la même que celle obtenue avec le logiciel en java. Elle diffère même suivant les navigateurs.

Après exploration, il semble que d’infimes différences sur le calcul de la fonction arctangente en java et javascript produisent des suites qui fournissent au bout d’un certain nombre de termes des divergences Importantes. A partir de l’indice 148 on voir apparaître des décimales différentes sur les trois dernières décimales sur 12 puis ensuite les différences s’accumulent.