Outils pour utilisateurs

Outils du site


tp:python:fractale_newton

Warning: Undefined array key "lang" in /home/signac/doku/lib/plugins/wrap/helper.php on line 94

Warning: Undefined array key "id" in /home/signac/doku/lib/plugins/wrap/helper.php on line 117

Warning: Undefined array key "width" in /home/signac/doku/lib/plugins/wrap/helper.php on line 119

Warning: Undefined array key "dir" in /home/signac/doku/lib/plugins/wrap/helper.php on line 128

Warning: Undefined array key "lang" in /home/signac/doku/lib/plugins/wrap/helper.php on line 94

Warning: Undefined array key "id" in /home/signac/doku/lib/plugins/wrap/helper.php on line 117

Warning: Undefined array key "width" in /home/signac/doku/lib/plugins/wrap/helper.php on line 119

Warning: Undefined array key "dir" in /home/signac/doku/lib/plugins/wrap/helper.php on line 128

⚠ Fractale de Newton

Cette famille de fractales porte le nom de Newton car leur calcul est basé sur l'utilisation de la méthode de Newton pour approcher les racines d'une fonction (un polynôme dans notre cas).

Références

Travail à rendre

Ce sujet n'est pas très détaillé, aussi, il vous faudra faire un effort d'autonomie pour le réaliser complètement. Il n'est pas demandé de rapport, mais le programme que vous rendrez devra se nommer : ''login_newton.py'', être importable silencieusement (cf. [[stu:python:python_notes&#structure_de_programme_propre|Notes sur Python - Programme propre]]), ou exécutable directement. Si des noms de fonction sont imposés dans la suite, merci de les respecter.

Votre programme devra être clair, bien découpé en fonction, et ces fonctions devront être documentées.

Vous rendrez aussi un fichier au format PNG, de taille 400x400, contenant la meilleure image que vous avez obtenue.

Présentation

Considérons le polynôme complexe à coefficients réels $P(z)$ de degré $n$. Ce polynôme a $n$ racines complexes.

La méthode de Newton consiste à itérer la suite : $$z_{n+1}=z_n-\frac{P(z_n)}{P'(z_n)}$$ en partant d'un $z_0$ quelconque. La suite converge alors la plupart du temps vers une des racines du polynôme. Une fractale de Newton permet de visualiser, pour chaque point $z_0$, vers quelle racine parmi les $n$ la méthode a convergé. En choisissant une couleur par racine, et en traçant le point de coordonnées $z_0$ dans la couleur de la racine vers laquelle la suite a convergé, on obtient une fractale de Newton.

Pour obtenir des images il faut donc :

  • Choisir un polynôme, et avoir ses racines (nous utiliserons l'extension Numpy)
  • À chaque point de l'écran :
    • associer le nombre $z_0$ (selon un certain cadrage)
    • réaliser plusieurs itérations de la méthode de Newton. Si à un moment donné, on est proche (choisir un epsilon) de l'une des solutions, on quitte la boucle des itérations 1).
    • associer au point une couleur qui dépendra soit du nombre d'itérations effectuées, soit du numéro d'ordre de la solution qui a été approchée (soit des deux…)

L'extension NumPy va nous permettre de beaucoup simplifier ce programme (calcul des racines, du polynôme dérivé, évaluation du polynôme etc..).

Voici tout ce dont vous aurez besoin :

import numpy as np
 
# Création du polynôme x^4+3c^3-4x^2+5x-2
p=np.poly1d([1,3,-4,5,-2])
# Affichage lisible 
print(p)
# Évaluation en un certain x :
p(1) # p est une variable, mais elle a l'attribut __callable__ !!
# Calcul des racines
p.roots # C'est un champ, pas une méthode, donc pas de ()
# Ordre du polynôme :
p.o
# Calcul du polynôme dérivé :
q=p.deriv()
# Coefficient de x^2 :
p[2]
# Tableau des coefficients (attention au sens de lecture) :
p.c

Les opérations usuelles : *, +, - etc… sont disponibles directement entre polynômes.

Exemples d'images

Polynôme $P(z)=z^3-1$ (la couleur dépend du nombre d'itérations)

Polynôme $P(z)=z^8+15z^4-16$ (la couleur dépend du nombre d'itérations)

En travaillant sur les couleurs et le cadrage, il est possible d'obtenir des images comme celle-ci (la teinte dépend de la racine obtenue et la valeur (clair/foncé) du nombre d'itérations) :

1)
il faut prévoir de sortir de la boucle lorsque le nombre d'itérations max a été atteint
tp/python/fractale_newton.txt · Dernière modification: 2021/05/04 15:12 (modification externe)