Résolution de systèmes linéaires par la méthode de gauss

Soyez le premier à donner votre avis sur cette source.

Snippet vu 18 579 fois - Téléchargée 72 fois

Contenu du snippet

Code à insérer dans un module.

Source / Exemple :


'Resolution d'un système matriciel A.X = B par la méthode de Gauss, la
'matrice A étant une matrice carrée d'ordre n, B est un vecteur colonne
'1 x n et X le vecteur solution.
'Dans la procédure ci dessous, "Matrice" est une matrice de n lignes et
'n+1 colonnes obtenue par la juxtaposition de la matrice A et du vecteur B
'La procédure rajoute une colonne à cette matrice et stockera le vecteur
'solution X dans cette Colonne.

Public Sub GaussReso(ByRef Matrice() As Double)
    Dim M(), X() As Double
    Dim Tampon As Double
    Dim n, I, J, K, T, Max As Long
    n = UBound(Matrice, 1)
    If UBound(Matrice, 2) <> n + 1 Then Exit Sub
    ReDim X(n)
    ReDim M(n, n + 1)
    ReDim Preserve Matrice(n, n + 2)
    For I = 1 To n
       For K = 1 To n + 1
         M(I, K) = Matrice(I, K)
       Next K
    Next I
    
    For I = n To 2 Step -1
       Max = I
       
       For J = 1 To I - 1
         If Abs(M(J, I)) > Abs(M(Max, I)) Then Max = J
       Next J
       
       If Max <> I Then
                     For K = 1 To n + 1
                       Tampon = M(I, K)
                       M(I, K) = M(Max, K)
                       M(Max, K) = Tampon
                     Next K
       End If
       
       For J = 1 To I - 1
         M(J, n + 1) = M(J, n + 1) - M(I, n + 1) * M(J, I) / M(I, I)
         For K = 1 To I
           M(J, K) = M(J, K) - M(I, K) * M(J, I) / M(I, I)
         Next K
       Next J
       
     Next I
     
     X(1) = M(1, n + 1) / M(1, 1)
     For I = 2 To n
       X(I) = M(I, n + 1)
       For K = 1 To I - 1
         X(I) = X(I) - M(I, K) * X(K)
       Next K
       X(I) = X(I) / M(I, I)
     Next I
     
     For I = 1 To n
       Matrice(I, n + 2) = X(I)
     Next I
End Sub

Conclusion :


Le code ci avant est à utiliser, de préférence, pour la résolution de systèmes qui n'ont aucune particularité. Pour les systèmes ayant des propriétés particulières, il existe des algorithmes plus appropriés, quoique ce code fonctionne, mais il sera plus long. ( Par exemple, matrice symétrique, matrice à bande etc...)

A voir également

Ajouter un commentaire

Commentaires

koi c'est un exercice vu en TD ?
le petit malin !
Non, ce n'est pas un exercice vu en TD, mais c'est le résultat d'un travail qui m'a pris un temps pour le réaliser, et je voudrais faire profiter les autres de ce travail.

Je m'excuse si je n'ai pas eu le temps de documenter mon code correctement.

Tu pourrais peut être mettre tes codes en ligne même s'ils ne sont pas documentés, pourvu que quelqu'un d'autre puisse en profiter. Et merci quand même pour ta remarque.
pas mal!
cs_syndibad
Messages postés
1
Date d'inscription
dimanche 12 novembre 2000
Statut
Membre
Dernière intervention
30 mars 2005
-
merci infiniment
mais est ce que je peut trouver le programmation d autre methode comme cholski ou l equat de la chaleur
chasseurdedemon
Messages postés
60
Date d'inscription
mardi 23 décembre 2003
Statut
Membre
Dernière intervention
15 novembre 2010
-
slt je suis débutan et je voudrais savoir si kelk1 peu m'expliqué ce code car je ne compren pa tré bi1.j'aimeré faire un sudoku en vb é pr cela il me faire une matrice mais je ne c'est pas comment on fait une matrice en vb (je suis un débutan ne l'oublié pas). j'ai ma petit idée de la fasson dont je programmeré le sudoku avec une matrice et j'ariveré a le faire mais le tt c'est de savoir comment la faire cete matrice.
donc voila koi je voudrais une expliquation tré détaillé de cette source si c'est possible.
j'ai msn pour ce qui veulent discuter ou m'aidé en direct voicis mon adresse : mocktarm@hotmail.com.

merci d'avence

cordialement


MokMap

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.