Tp 05 system equation lu - analyse numérique avec matlab - t

Ce document de Travaux Pratiques (TP 05) est destiné aux étudiants de 2ème année Génie Électrique, dans le cadre du module "Méthodes Numériques" à l'Université de Ghardaïa.

Il vise à les initier et les guider dans la résolution numérique de systèmes d'équations linéaires en utilisant la décomposition LU. Ce TP aborde notamment :

  • La théorie et l'application de la décomposition LU.
  • Les algorithmes de descente et remontée triangulaires.
  • Le développement de codes Matlab pour la résolution de systèmes.
Tp 05 system equation lu - analyse numérique avec matlab - t

TP 05 : Systèmes d'équations linéaires (LU)

Ce document est un support de Travaux Pratiques (TP) de méthodes numériques, axé sur la résolution de systèmes d'équations linéaires en utilisant la décomposition LU.

But du TP

L'objectif de ce TP est l'implémentation d'un code Matlab pour résoudre un système d'équations linéaires en utilisant la décomposition LU.

1. Préambule

Soit à résoudre le système linéaire suivant :

2x₁ + 2x₂ - 3x₃ + 3x₄ = -12
4x₁ + x₂ - 7x₃ + 7x₄ = -22
-4x₁ - 13x₂ + 2x₃ - x₄ = 24
4x₁ + 13x₂ - 7x₃ + 14x₄ = -60

a. Vérification de la solution unique

Vérifier que le système admet une solution unique en calculant le déterminant de la matrice associée (A) à l'aide de la fonction Matlab det(). Si le déterminant est non nul, le système possède une unique solution.

b. Calcul de la solution avec Matlab

Calculer la solution du système en utilisant la fonction Matlab inv() (pour l'inverse de la matrice) ou, de préférence, l'opérateur de division gauche \ (backslash) qui est plus stable et efficace numériquement.

2. Décomposition LU

Pour résoudre le système Ax=b, on décompose la matrice A en un produit de deux matrices L et U. La matrice L est triangulaire inférieure, dont les éléments de la diagonale sont tous égaux à un, et U est triangulaire supérieure. On trouve la solution du système intermédiaire Ly=b par descente triangulaire, puis on calcule la solution de Ux=y par remontée triangulaire. Pour réaliser le script sous Matlab, on suit les étapes suivantes :

a. Fonction de décomposition LU (dcplu)

Écrire une fonction nommée dcplu qui reçoit en argument une matrice M et qui renvoie les deux matrices L et U de sa décomposition LU.

dcplu
U ← 0;
L ← I_n (matrice identité de dimension n)
pour i = 1 → n faire
  pour j = 1 → n faire
    si j < i alors
      L_ij ← (M_ij - somme(k=1 à j-1) L_ik × U_kj) / U_jj
    sinon
      U_ij ← M_ij - somme(k=1 à i-1) L_ik × U_kj
    fin si
  fin pour
fin pour
retourner L et U

b. Fonction de descente triangulaire (dtri)

Écrire une fonction nommée dtri qui reçoit en argument la matrice augmentée formée par L et le second membre b, et qui renvoie la solution y obtenue par descente triangulaire.

dtri
Obtenir la dimension n×m de M
pour i = 1 → n faire
  pour j = 1 → i-1 faire
    M_im ← M_im - M_ij × SOL(j)
  fin pour
  Sol(i) ← M_im / M_ii
fin pour
retourner SOL

c. Fonction de remontée triangulaire (rtri)

Écrire une fonction nommée rtri qui reçoit en argument la matrice augmentée formée par U et le second membre y, et qui renvoie la solution x obtenue par remontée triangulaire.

La fonction rtri a déjà été utilisée avec la méthode de Gauss sous l'appellation soltri. Son principe est similaire à la descente triangulaire mais pour une matrice supérieure.

d. Lecture des données

Dans le script principal, on doit lire la matrice A et le vecteur b du système.

e. Résolution du système

Appeler les fonctions précédentes (dcplu, dtri, rtri) pour résoudre le système donné en utilisant la décomposition LU.

Foire Aux Questions (FAQ)

Pourquoi utiliser la décomposition LU pour résoudre un système linéaire ?

La décomposition LU est particulièrement utile lorsque l'on doit résoudre le même système linéaire (Ax=b) avec plusieurs vecteurs b différents. Une fois que la matrice A est décomposée en L et U, la résolution pour chaque nouveau b est beaucoup plus rapide car elle implique seulement des substitutions avant et arrière (descente et remontée triangulaire), évitant la coûteuse inversion de matrice à chaque fois.

Quelle est la différence entre la division gauche (\) et l'inverse (inv()) en Matlab ?

En Matlab, l'opérateur de division gauche A\b résout le système linéaire Ax=b directement et de manière numériquement stable. Il utilise des algorithmes optimisés (comme la décomposition LU ou QR) sans calculer explicitement l'inverse de A. L'utilisation de inv(A)*b est généralement moins précise et plus lente pour résoudre des systèmes linéaires, car le calcul explicite de l'inverse peut introduire des erreurs d'arrondi et est plus coûteux en termes de calcul.

Qu'est-ce que la descente et la remontée triangulaire ?

La descente triangulaire (ou substitution avant) est une méthode de résolution pour un système linéaire Ly=b où L est une matrice triangulaire inférieure. On commence par résoudre pour la première variable (y₁) et on substitue sa valeur dans les équations suivantes. La remontée triangulaire (ou substitution arrière) est similaire mais s'applique à un système Ux=y où U est une matrice triangulaire supérieure. On commence par résoudre pour la dernière variable (xₙ) et on remonte progressivement pour trouver les autres variables.

Cela peut vous intéresser :

Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

Enregistrer un commentaire (0)
Plus récente Plus ancienne