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 :

multiplier une matrice complete par un coefficient


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut multiplier une matrice complete par un coefficient
    Bonjour à tous,


    J'ai un petit problème que je ne sais pas résoudre en c:

    ma matrice est de la forme suivante :


    int matrix [10] [11];
    int line;
    int column;
    line=1
    column=0

    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
    for( line = 1 ; line <11 ; line ++)
         { 
         for(column =0 ; column < line ; column ++)
              {
                matrix [ligne][column] = -1/line ;
               }
          matrix[line][column+1]=1;
         }
    // c'est maintenant que j'ai mon problème
     
    je fais :
     
    for ( line =1 ; line <11 ; line ++)
          {
          for ( column=0 ;  column <line+1; column ++)
               {
               matrix[line][column]= matrix[line][column]* float( sqrt(1-line*line)); // faux
    //mon probleme est qu'ici je voudrais multiplier la matrice complete contenant ligne et colomne mais pas seulement une ligne ou je fais evoluer la colomne
               }
           }
    En esperant que quelqu'un comprendra ma question et sache y repondre en sachant reellement que ma formulation n'est pas tres claire

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Je n'ai pas compris exactement ta question.
    De toute façon, des erreurs ou des bizarreries dans le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for( line = 1 ; line <11 ; line ++)
         { 
         for(column =0 ; column < line ; column ++)
              {
                matrix [ligne][column] = -1/line ;
               }
          matrix[line][column+1]=1;
         }
    - Les bornes de line (1 à 10) font sortir du tableau matrix [10] [11] : Erreur (et idem plus bas)
    - -1/line donne toujours 0 sauf pour line = 1. Normal ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matrix[line][column]= matrix[line][column]* float( sqrt(1-line*line)); // faux
    - sauf pour line = 1, le sqrt a un argument négatif !!!
    - qu'est ce qu'est ce float(...) ?

  3. #3
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Vous trouverez en fichier joint la matrice que je desirerais réaliser.'

    Dans un premier temps je construis la matrice tel que le fichier jpeg. (premiere partie du code)

    Je ne comprends pas pourquoi -1/line est egal a 0 sauf pour line=1.
    J'aurais voulu que pour 2 ca soit 0,5 pour 3, 0,33333 ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            matrix[11][12];
            int line;
            int column;
            for ( line=1 ;  line <11 ;line++)
                {
                for ( column =0 ; column < line ; column ++)
                     {
                     matrix[line][column]=-1/line;
                     }
                matrix[line][column+1]=1;
                }
    Je multiplies ensuite la matrice par des coefficients représentés par les cadres rouge, bleu , violet ...

    Le coefficient est de la forme:

    pour la premiere ligne : sqrt (1-(1/2)*(1/2))
    pour les deux premieres lignes : sqrt (1-(1/3)*(1/3))
    pour les trois premieres lignes : sqrt (1-(1/4)*(1/4))
    ...
    le dernier coefficient : un nombre demandé à l'utilisateur : step
    C'est ce que je ne sais pas faire !

    J'aimerais que dans chaque case de la matrice le nombre soit un arrondi
    floor(nombre;1)
    Images attachées Images attachées  

  4. #4
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Bonjour, j'ai encore un petit probleme. je remplis une matrice avec des valeurs exactes. J'aimerais remplacer dans cette meme matrice toutes les valeurs exactes par des arrondis à la premiere decimale. Je ne sais pas commment m'y prendre. Existe t- il une fonction qui arrondisse la matrice complete?

    Ou faut -il mettre un curseur sur chaque valeur?

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    c'est bizarre que tu veuilles arrondir à 1 décimales les coefficients de la matrice. Mais bon, l'algo est simple : tu boucles sur tous les éléments de ta matrice. Regarde du côté de ceil() et floor() et si tu cherches bien, dans la FAQ, tu auras ta réponse

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Citation Envoyé par piheb Voir le message

    Je ne comprends pas pourquoi -1/line est egal a 0 sauf pour line=1.
    J'aurais voulu que pour 2 ca soit 0,5 pour 3, 0,33333 ...


    pour la premiere ligne : sqrt (1-(1/2)*(1/2))
    pour les deux premieres lignes : sqrt (1-(1/3)*(1/3))
    pour les trois premieres lignes : sqrt (1-(1/4)*(1/4))
    1/2 effectue une division euclidienne entre 2 entiers
    1./2. == 1./2 == 1/2. effectue une division entre 2 doubles.

    Fait un essai et tu comprendras.

    17/4 = 4
    17./4. = 4.25

  7. #7
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    bonjour, en tapant le code ci dessous j' obtiens des nombres completement extravagants. je voulais seulement obtenir ceci:

    -1 1 0 0 0 0
    -0,5 -0,5 1 0 0 0
    ......

    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
     
          Matrix E= matrix_malloc(A.rows,A.cols);
             int u,v,o,p;
             for (u= 0; u < A.rows; u++)
                    {                                                            
    	        for (v = 0; v < A.cols; v++)       //initialisation de la matrice
                            {
                            E.data[u][v]=0;
                  	        }
                    }
             for ( o=0 ;  o < A.rows ;o++)                                      
                    {
                    for (p =0 ; p < (o+1) ; p++)             //application des coefficiants
                            {                                                       
                            E.data[o][p]= -1.0/(o+1.0);
                            E.data[o][p+1]=1.0;
                            }
                    }
    Merci de vos reponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer une matrice diagonale par blocs
    Par antonb dans le forum MATLAB
    Réponses: 5
    Dernier message: 08/12/2011, 20h10
  2. [Débutant] extraire les éléments d'une matrice un par un
    Par cameleone31 dans le forum Images
    Réponses: 23
    Dernier message: 19/11/2011, 16h50
  3. Lire une matrice sauvegardé par Matlab!
    Par farouk2506 dans le forum C
    Réponses: 1
    Dernier message: 02/06/2011, 12h07
  4. Application d'une matrice OPENGL par son propre code
    Par fanoplusplus64k dans le forum OpenGL
    Réponses: 4
    Dernier message: 03/10/2006, 23h36

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