--> Devoir maison : Fractale de Mandelbrot On considère $c$ un nombre complexe. On définit la suite de nombres complexes $(z_n)$ par : $$\left\{\begin{array}{rcl} z_0 & = & 0 \\ z_{n+1} & = & z_n^2+c\\ \end{array}\right.$$ Prérequis On rappelle la définition suivante :
«On dit qu'une suite de nombres complexes $(Z_n)$ est bornée si il existe $M\in\mathbb{R}$ tel que pour tout entier $n$, $| Z_n | < M $.»

Nous admettrons les deux propriétés suivantes : Partie A Nous étudions ici le cas particulier $c=i$.
  1. Déterminer la valeur de $z_1$ et de $z_2$.
  2. Valeur de $z_1$ :
    $z_1=z_0^2+c$ $=$ $0^2+i$ $=$ $i$.

    Valeur de $z_2$ :
    $z_2 = z_1^2+c$ $=$ $i^2+i$ $=$ $-1+i$.
  3. La suite $(z_n)$ est-elle bornée ? Convergente ?
  4. Si nous poursuivons les calculs des premiers termes de la suite nous obtenons :

    $z_3 = z_2^2+i$ $=$ $(-1+i)^2+i$ $=$ $1-2i+i^2+i$ $=$ $1-2i-1+i$ $=$ $-i$.

    $z_4 = z_3^2+i$ $=$ $(-i)^2+i$ $=$ $-1+i$ $=$ $z_2$.

    On a alors que $z_5=z_3$, $z_6=z_4$ $=$ $z_2$, $z_7=z_3$, etc.

    Ainsi, dans le cas où $c=I$, la suite $(z_n)$ est cyclique à partir du rang $2$. Ces termes ne possèdent donc qu'un nombre fini de valeurs. Donc la suite des modules $(|z_n|)$ possède un nombre fini de valeurs également et elle est bornée.

    Par contre, elle n'est pas convergente car aucune de ces valeurs ne se rapproche d'une autre, vu que les termes oscille à partir du rang $2$ entre deux valeurs distinctes $-i$ et $-1+i$.
Partie B Nous considèrons maintenant que le complexe $c$ est quelconque, et nous cherchons une condition pour que la suite $(z_n)$ soit bornée.

  1. On suppose que $|c|>2$.
    1. Montrer que : $-\dfrac{1}{|c|}>-\dfrac{1}{2}$.
    2. La fonction inverse étant strictement décroissante sur $]0;+\infty[$, nous avons :

      $\begin{array}{crccl} & |c| & > & 2 \ \Longleftrightarrow & \dfrac{1}{|c|} & < & \dfrac{1}{2} \ \end{array}$

      En multipliant les deux membres de cette dernière inégalité par $-1$, nous obtenons :

      $-\dfrac{1}{|c|}>-\dfrac{1}{2}$.

      Or, $-\dfrac{1}{2}>-1$, donc : $-\dfrac{1}{|c|}>-1$.
    3. Montrer que pour tout entier $n\geq2$, $|c|^{n-1}>2$.
    4. Montrons cette inégalité par récurrence.

      Initialisation

      Pour $n=2$ : $|c|^{n-1} = |c|^{2-1}$ $=$ $|c|$ et par hypothèse $|c|>2$. La propriété est bien vérifiée pour $n=2$.

      Hérédité

      Supposons que pour un certain entier $n\geq2$, $|c|^{n-1}>2$.
      Montrons alors que : $|c|^n>2$.

      D'après l'hypothèse de récurrence on a :
      $$\begin{array}{crclr} & |c|^{n-1} & > & 2 &\ \Longleftrightarrow & |c|\times|c|^{n-1} & > & 2\times|c| & (\text{ car } |c|>0)\ \Longleftrightarrow & |c|^n & > & 2|c| & \ \Longleftrightarrow & |c|^n & > & 2\times 2 & (\text{ car } |c|>2) \ \Longleftrightarrow & |c|^n & > & 2. \quad_\square \ \end{array}$$
      Conclusion

      D'après le principe de récurrence, pour tout entier $n\geq2$, on a $|c|^{n-1}>2$.
    5. Montrer que pour tout entier $n\geq1$ : $|c|^{2n}-|c|\geq|c|^{n+1}\left( |c|^{n-1}-1 \right)$.
    6. Pour tout entier $n\geq1$, on a :

      $$\begin{array}{rcl} |c|^{2n}-|c| & = & |c|^{n+1}\left( \dfrac{|c|^{2n}}{|c|^{n+1}} - \dfrac{|c|}{|c|^{n+1}} \right) \ & = & |c|^{n+1}\left( |c|^{2n-(n+1)} - \dfrac{1}{|c|^n} \right) \ & = & |c|^{n+1}\left( |c|^{n-1} - \dfrac{1}{|c|^n} \right) \ \end{array}$$

      L'inégalité : "pour $n\geq2$, $|c|^{n-1}>2$", peut s'écrire également : "pour $n\geq1$, $|c|^{n}>2$".

      En effet, dans la première, si $n=2$, l'exposant de $|c|$ vaut $1$, et dans la deuxième si $n=1$, l'exposant de $|c|$ vaut $1$ aussi. On peut vérifier pour tout $n$ que les deux égalités sont en fait les mêmes. Remplacer par exemple $n$ par d'autres valeurs pour s'en convaincre.

      Ainsi, si $|c|^n>2$, on a alors que $\dfrac{1}{|c|^n}<\dfrac{1}{2}$ (comme dans la question 1.a), et aussi que $-\dfrac{1}{|c|^n}>-\dfrac{1}{2}>-1$.

      L'égalité : $|c|^{2n}-|c| = |c|^{n+1}\left( |c|^{n-1} - \dfrac{1}{|c|^n} \right)$, nous donne alors :

      $|c|^{2n}-|c|\geq|c|^{n+1}\left( |c|^{n-1}-1 \right)$.
    7. Montrer par récurrence que pour tout entier $n\geq1$, $|z_n|\geq|c|^n$.

      On pourra utiliser les questions précédentes ainsi que les propriétés $\mathscr{P}_1$ et $\mathscr{P}_2$.
    8. Initialisation

      Pour $n=1$ : $|z_n| = |z_1|$ $=$ $|z_0+c|$ $=$ $|c|$ $\geq$ $|c|^1$.

      La propriété est bien initialisée.

      Hérédité

      Supposons que pour un certain entier $n\geq1$ : $|z_n|\geq|c|^n$.
      Montrons alors que : $|z_{n+1}| \geq |c|^{n+1}$.

      Par définition on a :
      $$\begin{array}{rcll} |z_{n+1}| & = & |z_n^2+c| & \ & \geq & |z_n^2| - |c| & \quad\text{ d'après }\mathscr{P_2} \ & \geq & |z_n|^2 - |c| & \quad\text{ d'après }\mathscr{P_1} \ & \geq & \left(|c|^n\right)^2 - |c| & \quad\text{ d'après l'hypothèse de récurrence}\ & \geq & |c|^{2n} - |c| & \ & \geq & |c|^{n+1}\left( |c|^n-1\right) & \quad\text{ d'après 1c}\ & \geq & |c|^{n+1}(2 - 1) & \quad\text{ d'après 1d}\ & \geq & |c|^{n+1}. \quad_\square & \ \end{array}$$
      Conclusion

      D'après le principe de récurrence, pour tout entier $n\geq1$, $|z_n|\geq|c|^n$.

    9. En déduire que si |c|>2 alors la suite $(z_n)$ n'est pas bornée.
    10. Puisque pour tout entier $n\geq1$, $|z_n|\geq|c|^n$, si $|c|>2$, alors : $|z_n|\geq2^n$.

      Or, $\displaystyle{\lim_{n\rightarrow+\infty}2^n = +\infty}$, donc par comparaison de limites : $\displaystyle{\lim_{n\rightarrow+\infty}|z_n| = +\infty}$.

      Ainsi la suite $(|z_n|)$ diverge vers $+\infty$ et elle n'est pas bornée.

  2. Nous savons maintenant que pour que la suite $(z_n)$ soit bornée il faut que $|c|\leq2$.

    On suppose donc dans cette question que $|c|\leq2$.

    Démontrer, sous cette condition, que si il existe $n_0\in\mathbb{N}$ tel que $|z_{n_0}|>2$ alors la suite $(|z_n|)$ diverge.

    On pourra montrer par récurrence que pour tout $n\geq n_0$, $|z_n|>2^{n-n_0+1}$.
  3. Montrons par récurrence que pour tout $n\geq n_0$, $|z_n|>2^{n-n_0+1}$.

    Initialisation

    Pour $n=n_0$ : $|z_n| = |z_{n_0}| > 2$ par hypothèse. Par ailleurs : $2^{n-n_0+1} = 2^{n_0-n_0+1} = 2$.

    On a donc bien : $|z_n|>2^{n-n_0+1}$ pour $n=n_0$. La propriété est initialisée.

    Hérédité

    Supposons que pour un certain entier $n\geq n_0$ on a : $|z_n|>2^{n-n_0+1}$.
    Montrons alors que : $|z_{n+1}|>2^{n-n_0+2}$.

    Remarquons tout d'abord que puisque $|c|\leq 2$, on a alors $-|c|\geq-2$.

    Par ailleurs, par définition on a :
    $$\begin{array}{rcll} |z_{n+1}| & = & |z_n^2+c| & \ & \geq & |z_n^2| - |c| & \quad\text{ d'après }\mathscr{P_2} \ & \geq & |z_n|^2 - |c| & \quad\text{ d'après }\mathscr{P_1} \ & > & \left(2^{n-n_0+1}\right)^2-|c| & \quad\text{ d'après l'hypothèse de récurrence}\ & > & 2^{2(n-n_0+1)} - |c| & \ & > &2^{2n-2n_0+2} - |c| & \ & > & 2^{2n-2n_0+2} - 2 & \quad\text{ d'après la dernière remarque}\ \end{array}$$
    Nous souhaitons alors que $2^{2n-2n_0+2} - 2 > 2^{n-n_0+2}$ pour pouvoir conclure.

    Étudions alors $2^{2n-2n_0+2} - 2 - 2^{n-n_0+2}$ dans le but de montrer que $2^{2n-2n_0+2} - 2 - 2^{n-n_0+2}>0$.

    On a :
    $$\begin{array}{rcll} 2^{2n-2n_0+2} - 2 - 2^{n-n_0+2} & = & 2^{2n-2n_0+2} - 2^{n-n_0+2} - 2 \ & = & 2^{n-n_0+2}\left( 2^{n-n_0}-1\right)-2 \ \end{array}$$
    Or puisque $n>n_0$, on a $n-n_0>0$, c'est-à-dire $n-n_0\geq1$, et donc $2^{n-n_0}\geq2$. Ainsi :
    $$\begin{array}{rcll} 2^{2n-2n_0+2} - 2 - 2^{n-n_0+2} & \geq & 2^{n-n_0+2}\times(2-1) - 2 \ & \geq & 2^{n-n_0+2} - 2. \ \end{array}$$
    La suite $\left( 2^{n-n_0+2}\right)$ est strictement croissante, donc pour tout $n\geq n_0$, on a :

    $2^{n-n_0+2} - 2$ $\geq$ $2^{n_0-n_0+2} - 2$ $\geq$ $2^2-2$ $>$ $0$.

    Ainsi nous avons que $2^{2n-2n_0+2} - 2 - 2^{n-n_0+2}>0$ et donc $2^{2n-2n_0+2} - 2 > 2^{n-n_0+2}$.

    Et puisque $|z_{n+1}|$ $\geq$ $2^{2n-2n_0+2} - 2$, on a alors : $|z_{n+1}| >2^{n-n_0+2} $.

    La propriété est bien héréditaire.

    Conclusion

    D'après le principe de récurrence, pour tout $n\geq n_0$, $|z_n|>2^{n-n_0+1}$.

    Or, $\displaystyle{\lim_{n\rightarrow+\infty}2^{n-n_0+1} = +\infty}$.

    Ainsi, puisque $|z_n|>2^{n-n_0+1}$, par comparaison de limites on a : $\displaystyle{\lim_{n\rightarrow+\infty}|z_n| = +\infty}$.

    La suite $(|z_n|)$ diverge vers $+\infty$ et elle n'est pas bornée.
Partie C Pour tout entier $n$ on note : $x_n=Re(z_n)$ et $y_n=Im(z_n)$. On note de plus : $x=Re(c)$ et $y=Im(c)$.

On définit l'ensemble suivant : $\mathscr{M} = \{ c\in\mathbb{C}$ tel que la suite $(z_n)$ est bornée $\}$.
  1. Montrer alors que pour tout entier $n$ : $x_{n+1}=x_n^2-y_n^2+x$ et $y_{n+1}=2x_ny_n+y$.
  2. On a $z_n=x_n+iy_n$, $z_{n+1}=x_{n+1}+iy_{n+1}$ et $c=x+iy$.

    On a :
    $$\begin{array}{rcll} z_{n+1} & = & z_n^2+c \ x_{n+1}+iy_{n+1} & = & (x_n+iy_n)^2+x+iy \ x_{n+1}+iy_{n+1} & = & x_n^2+2ix_ny_n+(iy_n)^2+x+iy \ x_{n+1}+iy_{n+1} & = & x_n^2-y_n^2+x+i(2x_ny_n+y). \ \end{array}$$
    Or, deux nombres complexes sont égaux si et seulement si ils ont même partie réelle et même partie imaginaire, on a donc, par identification :

    $x_{n+1} = x_n^2-y_n^2+x$ et $y_{n+1} = 2x_ny_n+y$.
  3. Traduire la condition $x_n^2+y_n^2>4$ par rapport à $z_n$.
  4. On a :

    $x_n^2+y_n^2>4$ $\Longleftrightarrow$ $\sqrt{x_n^2+y_n^2}>\sqrt{4}$ $\Longleftrightarrow$ $|z_n|>2$.
  5. Le nombre $0$ est-il dans $\mathscr{M}$ ? Qu'en est-il de $i$ ? de $10$ ? On pourra s'appuyer sur les résultats des parties précédentes.
  6. Pour vérifier si $0$ est dans $\mathscr{M}$ ou non il faut vérifier si la suite $(z_n)$ est bornée lorsque $c=0$.

    Or, si $c=0$, $z_1=z_0^2+c$ $=$ $0+0$ $=$ $0$, et la suite $(z_n)$ est constante (et même nulle) et est donc bornée. Ainsi $0\in \mathscr{M}$.

    Pour $c=i$, nous avions vu dans la partie A que la suite était bornée, donc $i\in \mathscr{M}$.

    Pour $c=10$, nous avons $|c|=10>2$ et d'après la partie B question 1.e, la suite $(z_n)$ n'est pas bornée, donc $10\notin\mathscr{M}$.
  7. Existe-t-il un cercle du plan complexe contenant $\mathscr{M}$ ?
  8. Pour que la suite $(z_n)$ soit bornée il est nécessaire que $|c|\leq2$, donc si $c\in\mathscr{M}$ alors $|c|\leq2$, ce qui veut dire que $c$ est dans le disque de centre $O$ est de rayon $2$.
Partie D On souhaite construire l'ensemble $\mathscr{M}$ dans le plan complexe. Le principe étant de créer une image de 400px par 400px et de la ramener à l'ensemble des points du plan d'affixe $x+iy$ avec $x$ et $y$ $\in[-2;2]$.
On regarde pour chaque $c=x+iy$ de cette partie du plan complexe si la suite $(z_n)$ correspondante a un de ses 50 premiers termes de module supérieur à $2$. Si c'est le cas on sait que la suite $(z_n)$ n'est pas bornée pour ce $c$ et dans le cas contraire on considère que la suite est bornée : on colorie alors ce point en noir. Après avoir parcouru tous les pixels de l'image chacun d'eux sera soit blanc si la suite $(z_n)$ n'est pas bornée, soit noir dans le cas contraire. L'ensemble colorié en noir est l'ensemble $\mathscr{M}$. On l'appelle fractale de Mandelbrot.

Voici un algorithme de construction de $\mathscr{M}$ écrit pour le langage https://www.sarmate.xyz/sarmateGraph/sarmate_graph.html :

Xmin = -2
Xmax = 2
Ymin = -2
Ymax = 2
trait = 0.2
couleur = noir

itMax = 50

for(x=-2;x<=2;x=x+4/400){
for(y=-2;y<=2;y=y+4/400){
it = 0
tmp = 0
z_r = 0
z_i = 0
test = z_r*z_r+z_i*z_i
while( test<4 ET it < itMax ){
tmp = z_r
z_r = z_r*z_r-z_i*z_i+x
z_i = 2*z_i*tmp + y
it++
test = z_r*z_r+z_i*z_i
}
if( it == itMax ){point([x,y])}
}
}
Expliquer chacune des étapes de cet algorithme en faisant référence aux résultats des parties précédentes. L'idée de l'algorithme est de calculer les termes de la suite $(z_n)$ pour un grand nombres de valeurs pour $c$ dont les parties réelles et imaginaires sont comprises entre $-2$ et $2$ avec un pas de 1/100.

C'est-à-dire que l'on va calculer les premiers termes de la suite $(z_n)$ pour $c=-2-2i$, puis pour $c=-1,99-2i$, puis pour $c=-1,98-2i$ etc. jusqu'à $c=2-2i$, ensuite pour $c=-2-1,99i$ etc.

Pour chacune de ces milliers de valeurs de $c$, on regarde si la suite $(z_n)$ est bornée ou non. C'est-à-dire dès que $|z_n|^2>4$ on sait d'après la partie C que la suite ne sera pas bornée. L'algorithme estime que si après 50 termes on a toujours $|z_n|^2\leq4$ alors la suite sera vraissemblablement bornée. On colorie alors le pixel à l'abscisse partie réelle de c et à l'ordonnée partie imaginaire de c en noir.

Explications des parties de l'algorithme

Les deux boucles for permettent de parcourir tous les nombres $c$.

z_r et z_i sont les parties réelles et imaginaire des termes de la suite $(z_n)$, donc la variable test vaut $|z_n|^2$.

La boucle while permet de tester si $|z_n|^2$ est inférieur à 4 et qu'on n'a pas encore atteint $z_{50}$.

Les affectations pour z_r et z_i correspondent aux formules obtenues dans la partie C question 1.

Le test if permet de dire que si $|z_{50}|^2$ est toujours inférieur à 4 alors on colorie le point c en noir.
Éxécution de l'algorithme Xmin = -2 Xmax = 2 Ymin = -2 Ymax = 2 trait = 0.2 couleur = noir itMax = 50 for(x= Xmin;x <= Xmax;x=x+4/400){   for(y=Ymin;y <= Ymax;y=y+4/400){     it = 0     tmp = 0     z_r = 0     z_i = 0     test = z_r*z_r+z_i*z_i     while( test < 4 && it < itMax ){       tmp = z_r       z_r = z_r*z_r-z_i*z_i+x       z_i = 2*z_i*tmp + y       it++       test = z_r*z_r+z_i*z_i     }          if( it == itMax ){point([x,y])} } }

Amélioration avec des couleurs Xmin = -2.1 Xmax = 0.5 Ymin = -1.3 Ymax = 1.3 trait = 0.3 couleur = noir itMax = 50 for(x=-2.1;x<=0.5;x=x+2.6/400){   for(y=-1.3;y<=1.3;y=y+2.6/400){    it = 0    tmp = 0    z_r = 0    z_i = 0    test = z_r*z_r+z_i*z_i    while( test < 4 && it < itMax ){     tmp = z_r     z_r = z_r*z_r-z_i*z_i+x     z_i = 2*z_i*tmp + y     it++     test = z_r*z_r+z_i*z_i     }    if( it == itMax ){couleur = blanc}    if( it < 45 ){couleur = "#38388c"}    if( it < 40 ){couleur = "#0000ff"}    if( it < 35 ){couleur = "#6969e4"}    if( it < 30 ){couleur = "#7575ce"}    if( it < 25 ){couleur = "#9797e4"}    if( it < 22 ){couleur = "#aaaaee"}    if( it < 20 ){couleur = "#f0f0f0"}    if( it < 19 ){couleur = "#e0e0e0"}    if( it < 18 ){couleur = "#d0d0d0"}    if( it < 17 ){couleur = "#c0c0c0"}    if( it < 16 ){couleur = "#b0b0b0"}    if( it < 15 ){couleur = "#a0a0a0"}    if( it < 14 ){couleur = "#909090"}    if( it < 13 ){couleur = "#808080"}    if( it < 12 ){couleur = "#707070"}    if( it < 11 ){couleur = "#606060"}    if( it < 10 ){couleur = "#505050"}    if( it < 9 ){couleur = "#404040"}    if( it < 8 ){couleur = "#303030"}    if( it < 7 ){couleur = "#202020"}    if( it < 6 ){couleur = "#101010"}    if( it < 5 ){couleur = noir}     point([x,y])    } }