Voici le README mis à jour avec l'inclusion du package AlgLin et de la classe Helder dans la structure du projet : # TP6 - Méthode des moindres carrés ## Description Ce projet implémente l'approximation polynomiale par la méthode des moindres carrés. Contrairement à l'interpolation qui force la courbe à passer par tous les points, cette méthode cherche à minimiser la somme des carrés des écarts entre les points et la courbe. ## Auteur - **Hamadou BA** - Dépôt GitLab : [https://www-apps.univ-lehavre.fr/forge/bh243413/tp6-ps-methode-des-moindres-carrees.git](https://www-apps.univ-lehavre.fr/forge/bh243413/tp6-ps-methode-des-moindres-carrees.git) ## Structure du projet ``` tp6-moindres-carres/ │ ├── pom.xml # Configuration Maven ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ ├── AlgLin/ # Package de résolution de systèmes linéaires │ │ │ │ ├── Helder.java # Résolution par factorisation LDR │ │ │ │ ├── IrregularSysLinException.java │ │ │ │ ├── Matrice.java │ │ │ │ ├── SysLin.java │ │ │ │ ├── SysDiagonal.java │ │ │ │ ├── SysTriangInfUnite.java │ │ │ │ ├── SysTriangSup.java │ │ │ │ ├── SysTriangSupUnite.java │ │ │ │ ├── SystTriangInf.java │ │ │ │ └── Vecteur.java │ │ │ │ │ │ │ └── tp6/ │ │ │ └── ps/ │ │ │ ├── ModPoly.java # Modèle polynomial │ │ │ ├── ChartVisualizer.java # Visualisation graphique │ │ │ ├── DataLoader.java # Chargement des données │ │ │ └── Main.java # Classe principale │ │ │ │ │ └── resources/ # Ressources de l'application │ │ ├── quadratic.txt # Données quadratiques │ │ ├── linear.txt # Données linéaires │ │ ├── cubic.txt # Données cubiques │ │ └── sinusoidal.txt # Données sinusoïdales ├── imgReadme/ # Images pour le README │ ├── quadratic_deg1.png # Approximation degré 1 │ ├── quadratic_deg2.png # Approximation degré 2 │ ├── quadratic_deg3.png # Approximation degré 3 │ └── quadratic_deg5.png # Approximation degré 5 └── README.md # Ce fichier ``` ## Fonctionnalités - Approximation polynomiale par moindres carrés - Choix du degré du polynôme - Visualisation graphique des points de support et de la courbe d'approximation - Sauvegarde des graphiques au format PNG ## Dépendances - Java 11+ - Maven - XChart (pour la visualisation) - Package AlgLin (bibliothèque de résolution de systèmes linéaires) ## Installation et exécution 1. Clonez le dépôt : ```bash git clone https://www-apps.univ-lehavre.fr/forge/bh243413/tp6-ps-methode-des-moindres-carrees.git cd tp6-ps-methode-des-moindres-carrees ``` 2. Compilez avec Maven : ```bash mvn compile ``` 3. Exécutez l'application : ```bash mvn exec:java -Dexec.mainClass="tp6.ps.Main" ``` 4. À l'exécution, l'application vous demandera : - Le nom d'un fichier de données (ex: quadratic.txt) - Le degré du polynôme d'approximation ## Exemples de résultats ### Approximation avec un polynôme de degré 1 ![Approximation degré 1](imgReadme/quadratique_deg1.png) L'approximation linéaire (degré 1) est inadaptée pour des données quadratiques. La droite ne peut pas capturer la courbure parabolique des points. ### Approximation avec un polynôme de degré 2 ![Approximation degré 2](imgReadme/quadratique_deg2.png) L'approximation quadratique (degré 2) est parfaitement adaptée à ces données. La parabole suit idéalement la tendance des points. ### Approximation avec un polynôme de degré 3 ![Approximation degré 3](imgReadme/quadratique_deg3.png) L'approximation de degré 3 reste très bonne. Le coefficient du terme en x³ est très proche de zéro, ce qui indique que ce terme contribue peu. ### Approximation avec un polynôme de degré 5 ![Approximation degré 5](imgReadme/quadratique_deg5.png) Avec un degré 5, on commence à observer de légères oscillations, signe d'un début de surapprentissage. Le modèle s'adapte au bruit plutôt qu'à la tendance générale. ## Concept mathématique L'approximation par moindres carrés minimise la somme des carrés des écarts : ![Équation des moindres carrés](https://latex.codecogs.com/png.latex?E%20%3D%20%5Csum_%7Bj%3D0%7D%5E%7Bn-1%7D%20%28y_j%20-%20p%28x_j%29%29%5E2%20%3D%20%5Csum_%7Bj%3D0%7D%5E%7Bn-1%7D%20%5Cleft%28%20y_j%20-%20%5Csum_%7Bi%3D0%7D%5E%7Bm%7D%20a_i%20x_j%5Ei%20%5Cright%29%5E2) La forme du polynôme d'approximation est : ![Polynôme d'approximation](https://latex.codecogs.com/png.latex?p%28x%29%20%3D%20%5Csum_%7Bi%3D0%7D%5E%7Bm%7D%20a_i%20x%5Ei) ## Méthode de résolution Pour résoudre le système d'équations linéaires issu de la méthode des moindres carrés, nous utilisons la méthode de factorisation LDR implémentée dans la classe **Helder** du package AlgLin, au lieu de la méthode d'élimination de Gauss. La factorisation LDR décompose la matrice du système A en trois matrices : - L : matrice triangulaire inférieure avec des 1 sur la diagonale - D : matrice diagonale - R : matrice triangulaire supérieure avec des 1 sur la diagonale telles que A = LDR. La résolution du système s'effectue ensuite en trois étapes : 1. Résoudre Ly = b pour y 2. Résoudre Dz = y pour z 3. Résoudre Rx = z pour obtenir les coefficients x Cette approche s'avère numériquement stable pour les systèmes issus de l'approximation par moindres carrés, même pour des degrés de polynôme relativement élevés. ## Licence Ce projet est fourni à des fins éducatives uniquement.