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

 C++ Discussion :

programme qui fait des opérations sur la matrices


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 117
    Points : 30
    Points
    30
    Par défaut programme qui fait des opérations sur la matrices
    Bonsoir tous le monde
    Je veux ecrire un programme qui calcule le produit ,puissance de deux matrices ,apres le determinant de C (le produit de ces deux matrices A*B) et son inverse.
    j'ai commencé le programme ,mais il me reste le determinant
    et l'inverse;comment les introduire dans mon programme
    remarque:j ai besoin un programme en C++

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    #include <iostream> 
    #include <cmath> 
    using namespace std; 
     
    void lecture(int X[][10],int a) 
    { 
        int i,j; 
        for(i=0;i<a;i++) 
            for(j=0;j<a;j++) 
            cin>>X[i][j]; 
    } 
     
    void produit(int X[][10],int Y[][10],int Z[][10],int n) 
    { int i,j,k; 
     
        for(i=0;i<n;i++) 
            for(k=0;k<n;k++) 
            { Z[i][k]=0; 
                for(j=0;j<n;j++) 
                    Z[i][k]= Z[i][k]+X[i][j]*Y[j][k] ; 
            } 
    } 
     
    void afficher(int X[][10],int a) 
    {int i,j; 
        for(i=0;i<a;i++) 
        { 
            for(j=0;j<a;j++) 
                cout<<X[i][j]<<" "; 
            cout<<endl; 
        } 
    } 
     
    int main() 
    { int n,i,j,k,L; 
     
        // int *A,*B,*C; 
        int A[10][10],B[10][10],C[10][10],Ck[10][10],CB[10][10];     
        cout<<"donner la taille des matrices"<<endl; 
        cin>>n; 
        //A=new int[n][nca]; 
        //B=new int[nlb][ncb]; 
        //C=new int [n][ncb]; 
        cout<<"lecture des elements de la matrice A ligne par ligne"<<endl; 
        lecture( A,n); 
        cout<<"lecture des elements de la matrice B ligne par ligne"<<endl; 
        lecture( B,n); 
        produit(A,B,C,n); 
        cout<<"affichage des elements de la matrice A ligne par ligne"<<endl; 
        afficher( A,n); 
        cout<<"affichage des elements de la matrice B ligne par ligne"<<endl; 
        afficher( B,n); 
        cout<<"affichage des elements de la matrice C ligne par ligne"<<endl; 
        afficher( C,n); 
        cout<<"donner la valeur de k pour caculer C^k"<<endl; 
        cin>>k; 
     
        for(i=0;i<n;i++) 
            for(j=0;j<n;j++) 
            Ck[i][j]=C[i][j]; 
     
        for(L=1;L<k;L++) 
        {produit(C,Ck,CB,n); 
            for(i=0;i<n;i++) 
                for(j=0;j<n;j++) 
                    Ck[i][j]=CB[i][j]; 
        } 
     
        afficher(Ck,n); 
     
        system("pause"); 
        return 0; 
    }

    merci

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour et bienvenu,
    Si tu as besoin d'une solution en C++, je te conseille d'oublier les tableaux à la C (X[][]). Construit toi une classe matrice qui contient les données et offre les fonctions dont tu as besoin.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 117
    Points : 30
    Points
    30
    Par défaut re:matrice
    Bonjour
    merci pour votre réponse,
    la demande de notre professeur nous oblige de travailler avec les fonctions de la maniere utilisée dans mon propre programme pour calculer le produit;
    mais j arrive pas a faire le meme pour :
    -------C^k avec k >0
    -------det C
    --------inverse de C
    si possible j veux le programme,voyant que je suis debutant dans C++ ,cela va m aider à comprendre mieux
    merci

  4. #4
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 044
    Points : 2 239
    Points
    2 239
    Par défaut
    est-ce un problème de calcul au niveau des matrices? ou juste un problème de codage? car si c'est les maths qui te manque c'est tout simple, et le code qui suit aussi mais quel est vraiment ton problème?

    Ps: C'est ton prof qui te demande de faire du C++ avec ce code la??? ahah

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 117
    Points : 30
    Points
    30
    Par défaut re:matrice
    Bonjour
    je suis obligé de faire le programme avec des fonctions saisie des deux matrices,affichage,produit puissance ,inverse ,determinant suivant la demande de notre prof
    comme vous voyez j'ai commencé ,et il n ya pas de problème pour le produit,mais en ce qui concerne la puissance je l'ai pas réalisée par une fonction,et le pire que jusqu'à maintenant j'arrive pas à faire le deteminant et l'inverse
    merci

  6. #6
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 044
    Points : 2 239
    Points
    2 239
    Par défaut
    Très bien, pour le produit, c'est comme toi M^n c'est MxMxM...xM (n fois) tu as déjà fais la fonction produit sa sera simple
    Pour le déterminant tout dépendra de ta matrice
    Matrice diagonale: somme les membres diagonaux.
    exemple:
    a b c
    0 e f
    0 0 i

    det(M) = a*e*i

    Ensuite pour les cas géneraux:

    a b c
    d e f
    g h i

    det(M) = (a*e*i) + (b*f*g) + (c*d*h) - (c*e*g) - (b*d*i) - (a*f*h)
    etc...
    C'est les diganoles si tu observe bien, d'abord l'addition des diagonales de gauche a droite moins la soustraction des diagonales de droite a gauche

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Pour calculer l'inverse tu peut utiliser la formule suivante:
    Soit la matrice A
    Soit Mc la transposer de la matrice des cofacteurs(ou comatrice) de A

    1/A=Mc/detA;

    Pour la comatrice ce n'est pas dur a calculer;
    La case a la iéme ligne et jiéme colonne de la matrice est égal à (-1)^(i+j)*detij
    Avec detij le déterminent de A en suppriment la iéme ligne et jiéme colonne.

    Voila c'est tout simple.

    Petite précision: la méthode de la comatrice est absolument à éviter pour les grandes matrices, en revanche elle est plus simple à programmer que le pivot de Gauss.

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/03/2014, 14h59
  2. Réponses: 2
    Dernier message: 06/04/2013, 11h53
  3. programme php qui fait des additions
    Par jakol dans le forum Langage
    Réponses: 1
    Dernier message: 30/04/2010, 17h03
  4. Réponses: 2
    Dernier message: 19/02/2009, 09h46
  5. API pour effectuer des opérations sur des matrices
    Par Mobius dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 14/11/2008, 15h18

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