No description
Find a file
2026-02-17 18:52:11 +01:00
.gitignore all partial derivation 2026-02-15 01:07:00 +01:00
double_pendule.py now support power operation 2026-02-17 18:52:11 +01:00
double_pendule_a_ressort.py now support power operation 2026-02-17 18:52:11 +01:00
legrandchien.py now support power operation 2026-02-17 18:52:11 +01:00
pendule_a_ressort.py now support power operation 2026-02-17 18:52:11 +01:00
pendule_simple.py now support power operation 2026-02-17 18:52:11 +01:00
README.md now support power operation 2026-02-17 18:52:11 +01:00

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 x
  • Var("d_x") ou x.diff() : dérivée première
  • Var("d_d_x") ou x.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 partielle
  • equation.evaluate(dico) : Évalue l'expression avec un dictionnaire de valeurs
  • equation.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

  1. Générer les équations du mouvement via les équations d'Euler-Lagrange
  2. 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
  3. 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