No description
| .gitignore | ||
| double_pendule.py | ||
| double_pendule_a_ressort.py | ||
| legrandchien.py | ||
| pendule_a_ressort.py | ||
| pendule_simple.py | ||
| README.md | ||
LeGrandChien - Système de Simulation Physique Symbolique
⚠️ Warning: ne pas considérer ce projet sérieusement
Description
LeGrandChien est une bibliothèque Python pour la simulation de systèmes physiques complexes utilisant le calcul symbolique et les équations de Lagrange. Elle permet de définir des systèmes mécaniques (pendules, ressorts, chutes libres) de manière intuitive et de les résoudre numériquement.
Caractéristiques
- Calcul symbolique : Manipulation d'expressions mathématiques symboliques (dérivées, différentielles partielles)
- Équations de Lagrange : Génération automatique des équations du mouvement
- Résolution numérique : Solveur utilisant la méthode de Newton-Raphson pour les systèmes différentiels
- Compilation JIT : Optimisation des calculs via compilation dynamique en Python
Structure du Projet
LeGrandChien/
├── legrandchien.py # Bibliothèque principale
├── double_pendule.py # Exemple : pendule double
├── pendule_a_ressort.py # Exemple : pendule avec ressort
├── double_pendule_a_ressort.py # Exemple : double pendule avec ressorts
└── README.md # Ce fichier
Installation
# Dépendances requises
pip install numpy matplotlib tqdm inspect dis
API Principale
Classes
Const(value)
Représente une constante numérique.
Var(name, degree=0)
Représente une variable. Le degree indique l'ordre de dérivation.
Var("x"): variable xVar("d_x")oux.diff(): dérivée premièreVar("d_d_x")oux.diff(2): dérivée seconde
Equation
Représente une expression mathématique complexe. Supporte les opérations :
- Arithmétiques :
+,-,*,/ - Trigonométriques :
sin(),cos() - Calcul :
.diff(),.partial(var_name)
Méthodes principales
equation.diff(): Dérivée totale (par rapport au temps)equation.partial(var_name): Dérivée partielleequation.evaluate(dico): Évalue l'expression avec un dictionnaire de valeursequation.solve(init, tmax, dt, progress_bar): Résout le système différentiel
Exemples d'Exécution
Des exemples sont disponibles du moins complexes au plus complexes:
- pendule simple
- pendule à ressort
- double pendule
- double pendule à ressort
Chacun sont découpés en deux parties:
- La formalisation et la résolution du problème
- L'animation du résultat avec matplotlib, indépendant du projet
Algorithme de Résolution
- Générer les équations du mouvement via les équations d'Euler-Lagrange
- Résoudre à chaque pas de temps :
- Itération de Newton-Raphson pour trouver les accélérations
- Intégration d'Euler pour mettre à jour positions et vitesses
- Compiler les expressions en fonctions Python pour optimiser les calculs
Limitations et Améliorations Futures
- Améliorer la précision numérique (Runge-Kutta au lieu d'Euler)
- Support des forces externes et frottements
- Amélioration de l'utilisation des symboles
Licence
Libre d'utilisation