script_235cvmn_235.py

49,00 

Simulation, exploration visuelle et analyse mathématique de l’ensemble de Mandelbrot.

UGS : script_235cvmn_235.py Catégorie : Étiquette :

🔷 INFORMATIONS GÉNÉRALES

Champ Détail

Nom du script script_235cvmn_235.py

Version 1.0.0

Date de création 02/03/2026

Auteur / Demandeur Gemini (IA Généré)

Objectif principal Simulation, exploration visuelle et analyse mathématique de l’ensemble de Mandelbrot.

🎯 DESCRIPTION FONCTIONNELLE

📌 Que fait ce script ?

Ce script propose une implémentation orientée objet pour générer l’ensemble de Mandelbrot. Il utilise des calculs vectorisés avec NumPy pour la performance et propose des fonctionnalités avancées : zooms interactifs, exportations haute résolution, animations et même une estimation de la dimension fractale.

📌 Problème résolu

Il permet d’explorer la complexité infinie des fractales sans nécessiter de connaissances approfondies en mathématiques complexes, tout en fournissant des outils d’analyse (box-counting) pour les utilisateurs scientifiques.

⚙️ SPÉCIFICATIONS TECHNIQUES

🐍 Environnement

Élément Valeur

Version Python 3.10+ (recommandé pour le type hinting `

OS cible Tous (Windows / Linux / MacOS)

Mode d’exécution CLI / Module / Jupyter Notebook

📦 Dépendances / Librairies

Librairies standard (built-in)

pathlib, time

Librairies externes (pip install)

numpy

matplotlib

📥 ENTRÉES (INPUTS)

# Nom Type Obligatoire Description Exemple

1 x_min, x_max float ❌ Non Bornes de l’axe réel -2.0, 0.5

2 y_min, y_max float ❌ Non Bornes de l’axe imaginaire -1.2, 1.2

3 width, height int ❌ Non Résolution en pixels 800

4 max_iter int ❌ Non Précision du calcul (profondeur) 256

📤 SORTIES (OUTPUTS)

# Nom Type Description Exemple

1 self.N np.ndarray Matrice des itérations par pixel [[256, 12, …]]

2 Image HD PNG/SVG Fichier image haute résolution mandelbrot_hd.png

3 Animation GIF Zoom progressif animé mandelbrot_zoom.gif

🧱 STRUCTURE DU SCRIPT

Plaintext

script_235cvmn_235.py

├── 📌 IMPORTS (numpy, matplotlib, etc.)

├── 📌 CLASSE MandelbrotSimulator

│ ├── __init__() → Initialisation des paramètres de fenêtre

│ ├── _create_complex_plane()→ Génération de la grille meshgrid

│ ├── generate_mandelbrot_set() → Algorithme d’échappement vectorisé

│ ├── visualize() → Affichage simple via imshow

│ ├── zoom_into() → Focus sur une zone spécifique

│ ├── save_high_resolution()→ Rendu HD sans bordures

│ ├── compute_fractal_dimension() → Analyse par box-counting

│ ├── animate_zoom() → Création d’une séquence FuncAnimation

│ └── compare_color_palettes() → Grille comparative de colormaps

└── 📌 MAIN (Démonstration complète des fonctionnalités)

🔄 LOGIQUE / ALGORITHME

Initialisation : Définition de la fenêtre complexe (z=x+iy).

Vectorisation : Création d’un masque booléen pour ne calculer que les points n’ayant pas encore « échappé » (∣z∣≤2).

Itération : Application de la formule zn+1​=zn2​+c jusqu’à max_iter.

Post-traitement : Stockage du rang d’échappement pour chaque pixel afin de générer une carte de couleurs.

🚨 GESTION DES ERREURS

RuntimeError : Levée si l’utilisateur tente de visualiser ou d’analyser l’ensemble avant d’avoir lancé generate_mandelbrot_set().

ValueError : Gérée lors de la comparaison des palettes si un nom de colormap est invalide.

🧪 TESTS ATTENDUS

Cas nominal : Génération de l’ensemble standard avec max_iter=256 en moins d’une seconde.

Zoom profond : Vérifier que l’augmentation de max_iter lors d’un zoom maintient la netteté des détails.

Export HD : Test de création d’un fichier PNG de 2400px sans crash mémoire.

📝 EXEMPLE D’UTILISATION

▶️ Lancement via le bloc Main

Bash

python script_235cvmn_235.py

💻 Exemple d’appel programmatique

Python

from script_235cvmn_235 import MandelbrotSimulator

sim = MandelbrotSimulator(width=1000, height=1000)

sim.generate_mandelbrot_set()

# Estimation de la dimension de la frontière

d = sim.compute_fractal_dimension(plot=True)

print(f »Dimension fractale : {d} »)

Avis

Il n’y a pas encore d’avis.

Soyez le premier à laisser votre avis sur “script_235cvmn_235.py”

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *