Périmètre infini et surface finie – Flocon de Koch

Je suis tombé là-dessus par hasard dans le bouquin de maths de ma fille. On demandait de déterminer le surface limite du flocon de Koch. Je me suis pris au jeu et je mets noir sur blanc mon raisonnement.

flocon de Koch

On part d’un triangle équilatéral de côté ‘x’. Pour rappel, la surface du triangle est donnée part :

koch1

S = {bh}/2 où b est la base (ici a) et h la hauteur.

Ensuite pour retrouver la hauteur h on peut faire :

koch2

x^2 = h^2 +(x/2)^2

h^2 = x^2  - x^2/4

h^2 = 3/4 x^2

h = sqrt{3}/2 x

Ensuite on repart de :

S = {bh}/2

S = {x sqrt{3}/2 x}/2

S = sqrt{3}/4 x^2

Appelons cette première surface Ao et donnons à x la valeur 1. Ao devient :

A0 = sqrt{3}/4 1^2

Ensuite on passe à la seconde itération et du point de vue de la surface on a :

koch3

A1 = A0 + 3 a1

Avec a1 la surface de chacun des petits triangles (en bleu ci-dessus). a1 vaut maintenant :

a1 = sqrt{3}/4 (1/3^1)^2

Là, il faut bien faire attention au 1/31 car si à la première itération, on « coupe » en 3 chaque côté qui vaut 1, à la seconde itération on coupera en 3 chaque côté qui vaut 1/3 etc. Ainsi on aura :

a2 = sqrt{3}/4 (1/3^2)^2

Puis à l’itération n, la surface de chaque nouveaux petits triangles vaudra :

an = sqrt{3}/4 (1/3^n)^2

Bon maintenant, revenons à cette formule :

A1 = A0 + 3 a1

Là, il faut faire attention au 3 devant a1. En effet, ce 3 représente le nombre de côtés que l’on avait à l’itération précédente. On doit donc trouver une « formule » pour calculer ce nombre… Allez on commence doucement…

A la fin de l’itération 1 il y aura 3 (2+2) segments. Une façon de le comprendre c’est de voir qu’au début de l’itération 1, on a 3 côtés. Sur chaque côté, on « supprime » le 1/3 du segment (qui est au milieu) et il reste 2 segments. Ensuite, en lieu et place du segment qu’on vient d’enlever, on rajoute 2 segments pour faire un « petit » triangle.

koch4

D’où le (2+2) 3 et donc le 3×4 qu’on retrouve ci-dessous. A l’itération 2 on aura donc :

A2 = A1 + 3*4^1 a2

Ensuite, à l’itération 3 on aura :

A3 = A2 + 3*4^2 a3

Euh… Attends deux minutes… D’où tu sort ton 4? En fait, il faut juste réaliser qu’à chaque itération, chaque segment se retrouve découpé en 4. Ceci explique la croissance exponentielle. Enfin bref, à l’itération n on aura :

An = An-1 + 3*4^{n-1} an

Au final notre formule devient :

An = An-1 + 3*4^{n-1}sqrt{3}/4 (1/3^n)^2

Et par voie de conséquence, la formule de la surface devient :

S =sqrt{3}/4 +sum{1}{n}{ 3*4^{k-1}sqrt{3}/4 (1/3^k)^2}

Faisons un peu le ménage et il vient :

S =sqrt{3}/4 +sum{1}{n}{ 3 sqrt{3}/4  4^{k-1} (1/3^{2k})}

S =sqrt{3}/4 +sum{1}{n}{ 3 sqrt{3}/4  {4^{k-1}}/3^{2k}}

S =sqrt{3}/4 + 3 sqrt{3}/4 sum{1}{n}{   {4^{k-1}}/3^{2k}}

Si on divise par 4 ce qu’il y a dans la somme on obtient :

S = sqrt{3}/4 + 3 sqrt{3}/4 sum{1}{n}{ 1/4  {4^k}/3^{2k}}

S = sqrt{3}/4 + 3 sqrt{3}/4 1/4 sum{1}{n}{ (4/9)^k}

Là, il est peut être utile d’identifier la somme du suite géométrique de raison 4/9. Si on ne s’intéresse qu’à cette dernière pour l’instant on a :

sigma = sum{1}{n}{ (4/9)^k}

sigma = 4/9 {1-(4/9)^n}/{1-4/9}

J’attire juste l’attention sur le fait qu’au numérateur on a bien une puissance de n et pas une puissance en (n+1) car c’est bien le nombre de termes qui compte et qu’entre 1 et n il y a bien n termes. Enfin, au tout début, le 4/9 c’est le premier terme de la série. Ensuite on s’amuse un peu :

sigma = 4/9 {1-(4/9)^n}/{1-4/9} =4/9 {1-(4/9)^n}/{5/9} =4/9 9/5 (1-(4/9)^n)

Quand n tend vers l’infini on a :

sigma = 4/9 9/5 = 4/5

Si on injecte ce résultat dans la formule que nous avions pour S il vient :

S = sqrt{3}/4 + 3 sqrt{3}/4 1/4 4/5 =sqrt{3}/4 + 3 sqrt{3}/4 1/5 ={5 sqrt{3} + 3 sqrt{3}}/{4*5} = {8 sqrt{3}}/{4*5}

Au final, la surface tend vers une limite finie :

S =  {2 sqrt{3}}/5

Alors que son périmètre tend vers une valeur infinie. Marrant non?

Toujours pour le fun, un bout de code C++ pour voir comment évolue la surface calculée en fonction de n. Y a aucune malice dans le code ci-dessous. Faut juste remarquer qu’on commence par calculer la somme, puis qu’on « remonte » la formule de la droite vers la gauche.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// clang++ -std=c++11 -stdlib=libc++ koch.cpp -o koch
#include <iostream>
#include <math.h>
using namespace std;
int main() {
    auto n = 10;   
    auto S = 0.0;
    
    for(auto k = 1; k != n+1; ++k)
        S +=  pow(4.0/9.0, k);
    
    S *= 3 * sqrt(3)/(4*4);
    S += sqrt(3)/4;
    
    cout << "With n = " << n << " the surface = " << S << endl;
    cout << "The limit is : " << 2*sqrt(3)/5 << endl;
}
Share this...

Comments are closed.