Untitled Document

Méthode de Crout

Projet de Méthode Numérique

Bruno Minoc

ASI00 - Groupe de TT n°3

 

Sujet : Résolution du problème de l'équation de la chaleur avec une méthode spécifique des matrices par bandes.

Réalisations

Pour évaluer la méthode de Crout pour résoudre l'équation de la chaleur, je voulais comparé ma méthode avec les méthodes développées par les autres membres du groupe de TT n°3, en appliquant leur méthode à ma matrice tridiagonale. Cependant par manque de temps je n'ai pu comparer Crout qu'avec la méthode de Sébastien Durand, le gradient conjugué.

Le tableau qui suit reste indicatif, n'étant valable que sur l'ordinateur de Sébastien. Nous avons appliquer la même matrice A et le même vecteur b à nos méthodes. Les résulatats sont identiques à 10^-4.

 

  Crout * Crout * Crout *
n 11 11 100 100 500 500
nombre d'opérations 192 9801 1883 5251100 9483 631255500
temps d'exécution (s) 0.01 0.05 0.06 0.25 0.8 35.78

* méthode du gradient conjugué

Ces résultats sont seulement à titres indicatifs, en effet l'un des paramètres de la méthode du gradient conjugué est la précision que nous avions pris pour avoir un résulat très précis.

Cependant il est évident que la méthode de Crout est plus optimal pour ce problème de l'équation de la chaleur. D'ailleurs on peut généraliser et dire que Crout est une méthode adaptée pour les matrices tridiagonales.

Crout a un inconvénients, elle fonctionne uniquement pour les matrices tridiagonales. De plus la matrice doit être soit définie positive, soit à diagonale dominante. Alors que la méthode du gradient conjugué fonctionne pour toute matrice à diagonale dominante.

On peut noter cependant que le problème de l'équation de la chaleur tel qu'il est posé ici est une approximation du problème. En effet le problème est posé sous la forme Ax = b et il nous donne le résultat à l'équilibre. Je conseille d'aller voir la méthode Crank-Nicolson pour obtenir le problème complet de l'équation de la chaleur ainsi que sa solution.

 

Retour en haut de page.

 

 

Avant de voir quelques exemples de résultats obtenus avec le programme matlab chaleur.m, je dois signaler que les valeurs obtenues sont à un coefficients multiplicateur près, en effet pour obtenir les vraies températures il faudrait multiplier les vecteurs résultats par le coefficient de conduction de la barre.

Les trois premiers exemples sont purements théoriques, on considère que le flux de chaleur est égale à 0 sur toute la barre et que l'on modifie ce flux ponctuellement.

Dans le dernier exemple, on considère un flux constant sur toute la barre, mais non égale à 0 et une modification ponctuelle. Ce cas est plus proche de la réalité.

( rappel les valeurs du flux sont rentrées dans le vecteur b, avec Ax = b)

Dans les exemples qui suivent la matrice A est une matrice 100x100.

 

Exemple 1 - cas théorique- : on applique en un seul point de la barre une valeur de 100 (abscisse 40) et le reste est à 0 (vecteur b de Ax = b).

La température est répartie de manière linéaire, avec un pic à la posistion où on applique le flux de 100.

 

Exemple 2 - cas théorique - : on applique un point à 100 et un à -100 (abscisse 60 et 40), le reste étant à 0 (vecteur b de Ax = b).

On retrouve une répartition linéaire de la température, et les deux pics de température dans les zones de pics de flux.

 

Exemple 3 - cas théorique - : on apllique un flux constant de 0 et deux points à 100 (abscisse 70 et 30).

Les deux pics de température correspondent aux pics de flux.

On remarque que l'un des pics de température est plus élevé que l'autre alors que les flux appliqués en ces points sont égaux.

 

Exemple 4 -cas théorique - : on applique deux points à 100 (abscisse 40 et 60) et on place un point à 40 entre les deux (abscisse 50).

Toujours une forme linéaire avec les trois pics aux mêmes endroits que les pics de flux. Cependant il est intéressant de voir que le pic du milieu qui est le pic maximal de température correspond à la plus petite valeur de flux. Cette zone cumule le flux appliqué à cette zone et les flux appliqués autour.

 

Exemple 5 - cas pratique - : on applique une valeur constante de 19 sur tout le vecteur b et on met un point à 100 (abscisse 30).

Dans cette exemple plus proche de la réalité on voit que la température ne se répartie plus de manière linéaire, mais plutôt parabolique.

Le sommet n'est pas à l'endroit où nous appliquons le flux de 100. C'est un point intéressant à noter.

La température se répartie sur la barre en parabole avec un sommet toujours au milieu de la barre, malgré l'application d'un flux important décentré.

 

Exemple 6 - cas pratique - : on applique une valeur constante de 19 sur tout le vecteur b et on met deux point à 100 (abscisse 30 et 80).

Même forme parabolique de la solution, cependant on remarque que la parabole est plus plate sur le dessus et plus large. Cela vient du fait qu'il y a deux sources de flux de chaleur.

Par contre le maximum n'est pas l'endroit où l'on applique les deux flux (en 30 et 80 sur l'abscisse).

 

Retour en haut de page.

 

Les matrices par bandes / L'équation de la chaleur
Recherche de la meilleur méthode de résolution / La méthode de Crout

 

Commentaires

Commentaires sur la méthode / Exemples de résultats

 

Une matrice a(n,n) est appelé par bande si il existe des entiers p et q, avec 1 < p et q < n, et que pour tous i et j tels que i + p <= j et j + p <= i alors a(i,j) = 0.

La largeur de bande w est : w = p + q - 1

 

Retour en haut de page.

 

 

Nous posons d'abord le problème comme suit. Nous avons une barre avec les deux extrémitées maintenus à 0° (u(0) et u(N)), et on applique une source de chaleur en différents points f(x). Nous voulons connaitre le profil de température dans la barre à l'équilibre.

Le problème

 

 


La solution

NB : si la matrice est de dimension (n,n) il y a en fait on mesure la température dans la barre en n+2 points mais on connait la température aux deux extémitées (0°)

 

Retour en haut de page.

 

 

Nous remarquons que la matrice A est une matrice par bandes, de plus nous avons p = 2, q = 2 et w = 3.

Notre matrice A est une matrice très spéciale, on appelle ce genre de matrice une matrice tridiagonale.

De plus nous observons que la matrice A est à diagonale dominante :

La résolution des systèmes linéaires Ax = b avec une matrice A par bandes est conseillé par la méthode LU.

Cependant lorsque nous nous trouvons dans le cas où A est une matrice tridiagonale, nous sommes alors en présence d'un cas particulier de la méthode LU. En fait pour les matrices tridiagonales il existe une variante de l'algorithme LU, la méthode de Factorisation de Crout.

L'algorithme de Crout en matlab avec les arguments suivants : la matrice A tridiagonal (n,n), le vecteur b (n,1) et l'entier n. Crout

Un script matlab qui initialise la matrice A dans le cas de l'équation de la chaleur, ainsi que le vecteur b (à modifier manuellement éventuellement), qui appelle la fonction Crout et enfin affiche une courbe. Chaleur

NB : la fonction crout affiche le nombre d'opération effectuées et le temps de calcul.

 

Retour en haut de page.

 

Nous avons la matrice A :

Nous supposons que la matrice A peut être factorisé sous la forme LU. La matrice A a (3n - 2) valeurs non nuls.

Nous considérons que les matrices LU ont la forme suivantes :

Nous avons (2n-1) valeurs inconnues dans la matrice L et (n-1) valeurs inconnues dans la matrice U.

Si on pose A = LU et que nous procédons à une identification terme à terme, nous pouvons dire :

(eq 1) # a(1,1) = l(1,1)

(eq 2) # a(i,i-1) = l(i,i-1) pour i = 2,3,...,n

(eq 3) # a(i,i) = l(i,i-1) * u(i-1,i) + l(i,i) pour i = 2,3,...,n

(eq 4) # a(i,i+1) = l(i,i) * u(i,i+1) pour i=1,2,...,n-1

La démarche la plus simple consiste à d'abord faire les équations (1) et (2), puis d'utiliser les équations (2) et (3) pour obtenir alternativement les termes de L et U.

L'équation Ax = b devient donc LUx = b, on résout d'abord Lz = b avec z = Ux puis on résout z = Ux. Dans la pratique il est conseillé de calculer z en même temps que L et U et de résoudre z = Ux.

 

Retour en haut de page.

 

Les matrices par bandes
L'équation de la chaleur
Recherche de la meilleur méthode de résolution
La méthode de Crout
Commentaires