Déterminer le rang d'une matrice (en Maths - Algèbre linéaire)

Hello Forum,

Je cherche à connaître le rang d'une matrice. Pour rappel, le rang d'une matrice est le nombre de vecteurs linéairement indépendants de la matrice donnée. naturellement, si le rang de la matrice est égal à sa taille, alors la matrice définit une base.

Je ne sais par contre pas comment l'encoder. Quelqu'un aurait il une piste ?

Bien à vous,

Yeshua.

Oxydym,

Merci des propositions. J'ai regardé oui. Ces liens proposent une fonction qui renvoie la position d'une valeur dans une liste ou matrice de données.

Le rang dont il est question ici, est le résultat d'une opération mathématique calculé sur les colonnes d'une matrice. Il permet d'avoir la dimension réelle d'une matrice en mathématique.

Exemple: On donne une matrice de taille 3x3 qui est de rang 2. Cela signifie qu'on peut dessiner, le sous-espace généré par la matrice dans un espace à deux dimensions au lieu de 3 dimensions: deux dimensions donc un plan ici. Il y a donc une donnée "muette" dans la matrice.

un exemple numérique parlant pour illustrer,

On a une matrice:={ ligne1=(1,0,0); ligne2=(0,1,0); ligne3=(0,0,0)}

La matrice est bien de taille 3x3 (3 lignes, 3 colonnes) mais de rang k=2 au lieu de 3 car le troisième vecteur colonne est nul (entièrement égal à 0 sur toutes les lignes et on sait que le vecteur nul est colinéaire à tout vecteur de même dimension).

Yeshua.

Pour travailler avec les matrices, rien ne vaut ce classeur Matrix.xla à télécharger ici :

http://www.bowdoin.edu/~rdelevie/excellaneous/matrix.zip

Tu as une fonction nommée M_Rank qui ressemble à ça :

Function M_RANK(Mat)
'Returns the rank of a matrix
'ver. 23-6-2002  by L.V.
'Original M_RANK routine by Bernard Wagner, CH (Thanks Bernard)
'
Dim A, At, b, u
Const tiny = 10 ^ -15
A = Mat
N = UBound(A, 1): m = UBound(A, 2) 'get A dimension
'reduce Mat to a square matrix U with the lowest dimension
If N <> m Then
    At = M_TRANSP(Mat)
    If N < m Then
        b = Application.WorksheetFunction.MMult(A, At)
        nb = N
    Else
        b = Application.WorksheetFunction.MMult(At, A)
        nb = m
    End If
Else
    b = A  'nothing to do
    nb = N
End If
'compute the sub-space of Ax=0
u = SysLinSing(b, , tiny)
'count null column-vectors of sub-space
Rank = nb
For j = 1 To nb
    s = 0: For i = 1 To nb: s = s + Abs(u(i, j)): Next i
    If s > tiny Then Rank = Rank - 1
Next j

M_RANK = Rank
End Function

Re,

Merci pour l'add-I. Je n'ai pas encore fini de la tester (je ne sais pas encore comme faire pour la prise en main). Mais je sens que ça promet d'être très utile si cela fonctionne.

Pour la macro, elle affiche "#NOM?" lorsque je l'utilise comme fonction sur Excel. elle ne me donne par le rang de la matrice mise en paramètre.

Yeshua.

Bonjour,

Pour m'assurer que tu parviendras à ton objectif, je te joins un classeur fonctionnel.

Enjoy!

39matrice.xlsm (350.34 Ko)

Bonjour Oxydum,

Waouh, ça fonctionne très bien. Impeccable!!! Merci beaucoup.

Je rigole de joie tout seul là du coup. Merci encore!

De bonnes choses à toi,

Yeshua.

Rechercher des sujets similaires à "determiner rang matrice maths algebre lineaire"