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).
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.
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 :
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.
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) :