IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Calcul d'un déterminant 4*4


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Calcul d'un déterminant 4*4
    Bonjour,
    je dois pour les besoins d'un calcul (méthode de Cramer) calculer le déterminant d'une matrice 4x4, cette matrice ne sera bien sûr par toujours la même, seulement je ne vois pas comment automatiser le calcul avec VB.net

    Je vous remercie par avance.

    Dark'

    PS: je développe sous visual studio 2010

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753

  3. #3
    Membre habitué Avatar de jlm22
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2010
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 203
    Points : 148
    Points
    148
    Par défaut
    Représente ta matrice sous forme de listview ou de tableau, de plus cette matrice sera toujours 4x4x apparament donc la formule sera toujours la même.

    C'est quoi ton problème? un souci d'organisation des données ? formules ?

    j'ai eu l'occasion de faire un programme en java sur des matrices nxn mais je sais plus si je calculais le déterminant mais je faisait des multiplication de matrice donc je suppose que c'est largement faisable ^^

  4. #4
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    Bonjour,

    notre amis Wikipédia nous dit ceci: pour une matrice 3*3


    il y a deux possibilitées:

    soit tu fait la même chose pour une matrice 4*4
    en précisant une formule en dur comme ci-dessus
    en précisant la position dans le tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim maMatrice(4)(4) as integer
    Dim det as integer
     
    'remplissage de la matrice
    ...
     
    ' Calcul du déterminant
    det = maMatrice(1)(1) + maMatrice(2)(2) + maMatrice(3)(3) +_
     maMatrice(4)(4) + '....

    soit tu fait un algo évolué
    en prenant en compte la largeur et la hauteur de ta matrice
    offrant ainsi la possibilité de cacluler le déterminant de n'importe qu'elle matrice
    mais a mon avis ça va etre autrement plus complexe

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Citation Envoyé par hunteshiva Voir le message
    Bonjour,

    notre amis Wikipédia nous dit ceci: pour une matrice 3*3


    il y a deux possibilitées:

    soit tu fait la même chose pour une matrice 4*4
    en précisant une formule en dur comme ci-dessus
    en précisant la position dans le tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim maMatrice(4)(4) as integer
    Dim det as integer
     
    'remplissage de la matrice
    ...
     
    ' Calcul du déterminant
    det = maMatrice(1)(1) + maMatrice(2)(2) + maMatrice(3)(3) +_
     maMatrice(4)(4) + '....

    soit tu fait un algo évolué
    en prenant en compte la largeur et la hauteur de ta matrice
    offrant ainsi la possibilité de cacluler le déterminant de n'importe qu'elle matrice
    mais a mon avis ça va etre autrement plus complexe
    Bof non, c'est assez simple en fait! C'est typiquement du récursif: sur une matrice n*n et tu fais les sous déterminants n-1*n-1

  6. #6
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    ça fait un moment que j'ai pas touché aux matrice,
    mais je suis d'accord.

    Tu peux recopier dans une matrice transitoire de taille n * 2n -1
    de la maniére suivante:

    et faire le calcul simplement avec une ou deux boucle For

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    ' Déclaration des variables
    Dim n as integer = 4
    Dim maMatrice(n)(n) as integer
    Dim maMatriceTransitoire(n)(2*n-1) as integer
    Dim det as integer = 0
    ' variables transitoires
    Dim i as integer = 0
    Dim j as integer = 0
    Dim tampon as integer = 1
     
    'remplissage de maMatrice
    '...
     
    'Création de la matrice transitoire
    For i = 0 to (2*n-1)
        maMatriceTransitoire(i) = maMatrice(j)
        ' Dés que j arrive à la dernière ligne de la matrice
        ' On reboucle sur la première ligne 
        If j < n-1 then
            j = j + 1 ' ou j++ ou j += 1
        Else
            j = 0
        End If
    Next
     
    'Calcul du déterminant
    'phase d'addition (rougne, jaune, orange)
    For i = 0 to n-1 ' On balaye les lignes
        For j = 0 to n-1 ' puis les colonnes
            tampon = tampon * maMatriceTransitoire(j)(i+j)
        Next
    det = det + tampon
    tampon = 1 'reset du tampon
    Next
     
    'Phase de soustraction (bleu, bleuciel, rose)
    For i = n-1 to 0 ' On balaye les colonnes
        For j = n-1 to 0 ' puis les lignes
            tampon = tampon * maMatriceTransitoire(j)(i+j)
        Next
    det = det - tampon
    tampon = 1 'reset du tampon
    Next
     
     
    det '--> tu à ton déterminant en sortie

  7. #7
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    C'est du C# et ca marche pour n*n:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    void Main()
    {
    	var myMatrix =new double[]{1,0,2,0,3,0,4,0,5};
    	CalculDeterminant(myMatrix);
    }
     
    double CalculDeterminant(double[] matrice)
    {
    	if(Math.Sqrt(matrice.Length) - Math.Truncate(Math.Sqrt(matrice.Length))>0)
    		throw new ArgumentException("Matrix is not squared");
    	if(matrice.Length < 4)
    	{
    		throw new ArgumentException("Matrix must be at least 2*2");
    	}
    	else if(matrice.Length == 4)
    	{
    		return matrice[0] * matrice[3] - matrice[1] * matrice[2];
    	}
    	else
    	{
    		double acc = 0;
    		var dim = Convert.ToInt32(Math.Sqrt(matrice.Length));
    		int i = 0;	
    		foreach(var j in matrice.Take(dim))
    		{			
    			var vals = Enumerable.Range(0, matrice.Length)
    						.Skip(dim)
    						.Except(Enumerable.Range(0, dim - 1).Select (e => (e + 1) * dim + i))
    						.Select(e=>matrice[e])
    						.ToArray();
     
    			acc += j * (((i % 2) == 0) ? 1 : -1) * CalculDeterminant(vals);
     
    			i++;
    		}
    		return acc;
    	}
    }

Discussions similaires

  1. Calcul déterminant et complexité
    Par membreComplexe12 dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 23/01/2012, 15h53
  2. [XL-97] Ecrire résultat calcul dans une colonne déterminée
    Par Bocage dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/04/2009, 19h24
  3. Calcul d'un déterminant
    Par beegees dans le forum Mathématiques
    Réponses: 8
    Dernier message: 20/04/2009, 12h51
  4. [Matrices] Comment calculer le Déterminant d'une matrice 4x4
    Par cyber_N dans le forum Algorithmes et structures de données
    Réponses: 70
    Dernier message: 19/08/2005, 16h47
  5. [Débutant] Calculer le déterminant d'une matrice
    Par v4np13 dans le forum Mathématiques
    Réponses: 7
    Dernier message: 30/05/2005, 18h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo