update readme

This commit is contained in:
Didictateur 2026-02-17 00:05:22 +01:00
parent e1e5e940cb
commit 3e78407bcc

View file

@ -1 +1,86 @@
# LeGrandChien
# LeGrandChien - Système de Simulation Physique Symbolique
## 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
```bash
# Dépendances requises
pip install numpy matplotlib tqdm
```
## 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