Vous êtes sur la page 1sur 5

TP Informatique 1 : Les fractales !

1 Introduction
Les fractales sont des objets mathématiques complexes qui présentent une struc-
ture similaire à différentes échelles. En d’autres termes, une fractale est une
figure géométrique dont chaque partie est une réplique miniature de l’ensemble
global. Peu importe à quelle échelle vous zoomez sur une fractale, vous observez
des motifs similaires: on parle d’auto-similarité.

Les fractales ont des caractéristiques intéressantes, telles que l’auto-similarité,


la complexité infinie, et l’irrégularité. Elles peuvent être générées à partir de
règles mathématiques relativement simples, mais les motifs qui en résultent sont
souvent étonnamment complexes et beaux.

Figure 1: L’ensemble de Mandelbrot

2 Bases de la libraire Turtle


Nous allons avoir besoin d’une libraire intitulée turtle. Comme son nom l’indique,
il s’agit d’une tortue que l’on va pouvoir déplacer sur l’écran. Lorsqu’on la
déplace à l’aide d’instructions Python, elle laisse une trace sur l’écran qui va

1
nous permettre de dessiner !

Pour pouvoir l’utiliser, il faudra impérativement commencer votre programme


par la ligne:
from turtle import *
qui signifie que l’on importe toutes les commandes de la librairie turtle.

Question 1. Entrez les commandes suivantes dans Python et executez le pro-


gramme :

1 from turtle import *


2

3 forward(100)
4 right(120)
5 forward(100)
6 right(120)
7 forward(100)
8

Que voit-on ? Expliquez ce que fait chacune de ces lignes.

Question 2. On rappelle que si n est un entier, le programme suivante permet


d’afficher à l’écran le mot instruction n fois. :

1 for i in range(n):
2 print("instruction")
3

En s’aidant de cela, réecrivez de manière plus efficace le programme de la ques-


tion 1.

Il peut être intéressant d’ajouter la ligne mainloop() à la fin de votre programme


pour ne pas que votre fenêtre turtle ne se ferme toute seule.

Voici donc un récapitulatif des commandes à retenir:


• forward(longueur) fait avancer la tortue d’une longueur ”longueur”
• right(angle) et left(angle) font tourner la tortue à droite ou à gauche d’un
angle ”angle”
• penup() permet de lever le stylo et donc de déplacer la tortue sans écrire
• pendown() baisse le stylo; le prochain forward(longueur) écrira quelque
chose

2
• goto(x,y) déplace la tortue vers des coordonnées (x,y)
Pensez à bien enregistrer vos fichiers !

Question 3. Tracez un carré. On essayera de le faire avec un boucle for.

Question 4. Modifiez le code pour l’insérer dans une fonction tracerCarré


prenant en entrée un argument longueur qui correspondra à la longueur du
carré.

Question 5. Écrivez une fonction tracerPolygone prenant en entrée deux ar-


guments. Le premier est longueur, la longueur des côtés de notre polygone. Le
suivant est un entier n, le nombre de côtés de notre figure. La fonction tracera
alors un polygône à n côtés de longueur longueur.

Question 6. Tracez une étoile à 6 branches comme celle-ci :

Figure 2: Étoile à 6 branches

Question 7. Que fait le programme suivant ? Essayez de deviner avant de


l’exécuter !

1 for i in range(360):
2 forward(1)
3 right(1)
4

3 Le flocon de von Koch, Weierstrass et ses mon-


stres !
Le mathématicien suédois Niels Fabian Helge von Koch cherchait à montrer
qu’il existait des fonctions continues mais dérivables en aucun point ! Ce genre
de fonctions pathologiques présente des pics presque partout.

3
Voici un exemple d’une telle fonction appelée le monstre de Weierstrass :

Figure 3: Le monstre de Weierstrass

Le polytechnicien et très grand mathématicien Charles Hermite écrivait au


sujet de ces fonctions:

”Je me détourne avec effroi et horreur de cette plaie lamentable des fonctions
continues qui sont sans dérivée”.
Ce graphe est bien une fractale ! N’importe quel zoom sur celui-ci vous
donnera une image très similaire au graphe complet ! Intéressons-nous à cette
fonction.
1
Dans toute la suite, nous prendrons a = et b = 20. On vérifie aisément
2
3
que 0 < a < 1 et ab > 1 + π. Notre fonction est donc définie pour tout réel x
2
par :
∞ 100
X cos(10n πx) X cos(10n πx)

n=0
2n n=0
2n

Bien sûr, on ne peut sommer jusqu’à l’infini sur Python. On va donc approx-
imer la somme infinie par une somme finie. Plus l’on a de termes, plus notre
approximation sera précise ! En revanche, plus il y a de termes, plus l’ordinateur
mettra de temps dans les calculs: il s’agit de trouver un juste milieu.

Pour ce faire, on aura besoin d’importer le module math, matplotlib et de


numpy! Utilisez donc les lignes :

1 from math import *


2 import matplotlib.pyplot as plt

4
3 import numpy as np
4

Question 8. Ecrivez une fonction f qui prend en argument un flottant x et qui


renvoie f (x). On s’assurera bien sûr à ce que la somme soit finie (on pourra
aller jusqu’à 100 itérations pour s’approcher de la valeur réelle).

On va définir un intervalle de réels pour notre graphique à l’aide de la com-


mande : X = np.linspace(-5,5,1000). Il faut ici comprendre que notre intervalle
coupe l’intervalle [-5,5] en 1000 points. Vous pourrez changer cette valeur par
la suite.
Question 9. Déclarez une liste Y contenant les f (x) lorsque x décrit X.
Ajoutez les lignes suivantes à votre programme pour afficher le graphe :

1 plt.plot(X,Y)
2 plt.show()
3

Question 9. Jouez avec les valeurs précédemment définies.

Vous obtenez normalement :

Figure 4: Le monstre de Weierstrass

Vous aimerez peut-être aussi