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 :

Matrice et vecteur problème de compilation


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Par défaut Matrice et vecteur problème de compilation
    Bonjour,

    lorsque j' exécute mon code, le compilateur m'affiche le problème suivant "invalid type", je connais l'erreur mais j'ai pas de solution, en fait on ne peut faire la somme de deux matrice différents et au même temps je peux pas modifier l'expression. s'il vous plait quelqu'un m'aider. j'ai indiqué par un commentaire dans le code la ligne ou s'affiche l'erreur
    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    float nu=0.6;
    float a=0.25;
    float b=0.5;
    int n1=2;**
    int n2=4;***
    int n3=3;***
    *
    *
    *
    ******/* Saisie des données*/
    *
    *float EntreesX[2]={0.9,0.2};
    *
    double mat_poids_w[2][4]= {{0.5,0.9,0.4,0.6},{0.8,0.9,0.7,0.5}};
    double mat_poids_w2[4][3]= {{0.1,0.4,0.2},{0.4,0.9,0.3},{0.5,0.4,0.8},{0.5,0.4,0.8}};
    float Sdesire[3]={0.3,0.2,0.90};
    float E[4];
    float y[4];
    double y2[3];
    float E2[3];
    float erreur[3];
    double mat_poids_w_new [2][4];
    double mat_poids_w2_new[4][3];
    float erreurq=1;
    float sommeq;
    float somme_produit;
    double delta[2];
    int i,j,k;
    int l=0;
    *
    ***float fct (float erreurq,double *mat_poids_w_new,double *mat_poids_w2_new){
    *
    *
    while (erreurq!=0)
    {
    *
    *
    *
    ****for( j=1;j<n2;j++)
    *****{
    *********E[j]=0;
    *********for(i=1;i<n1;i++)
    *********{
    *************E[j]+=(EntreesX[i])*(mat_poids_w[i][j]);
    *
    *
    *******}
    **y[j]=b+a*E[j];
    /*RECUPERATION DES VALEURS DANS UN VECTEUR
    AFFICHAGE PRINTF E*/
    *
    *
    //printf("E[%d]==%f\n",j, E[j]);
    //printf("y[%d]==%f\n",j, y[j]);
    *
    ****}
    ****sommeq=0;
    *
    *****for( k=1;k<=n3;k++)
    ****{
    ********E2[k]=0;
    *
    ********for( j=1;j<=n2;j++)
    ********{
    ********E2[k]+=(y[j]*mat_poids_w2[j][k]);
    ****************}
    *
    y2[k]=b+a*(E2[k]);
    *//printf("E2[%d]==%f\n",k, E2[k]);
    //printf("y2[%d]==%f\n",k, y2[k]);
    *
    erreur[k]=Sdesire[k]-y2[k];
    *
    sommeq=sommeq+pow((Sdesire[k]-y2[k]),2);
    *
    *
    ****}
    ****erreurq=0.5*sommeq;
    ****//printf("erreurq== %f\n", erreurq);
    ****/*for (k = 1 ; k <=n3; k++)
    ****{
    ***printf("erreur[%d]== %f\n", k, erreur[k]);
    ****}*/
    *
    ****if(erreurq!=0)
    {
    *
    **
    ****somme_produit=0;
    *
    for( k=1;k <= n3;k ++)
    {
    delta[k]=y2[k]*(1-y2[k])*(Sdesire[k]-y2[k]);
    *
    ****for(j=1;j <= n2;j ++)
    {
    mat_poids_w2_new[j][k] += nu*(delta[k]*y2[k]);// ici ou le compilateur indique l'erreur*
    *
    somme_produit += erreur[k]*mat_poids_w2[j][k];// et ici aussi
    delta[j]=y[j]*(1-y[j])*(somme_produit);
    //printf("delta [%d]=%f\n",j, delta[j]);
    *
    ****for(i=1;i <= n1;i ++){
    mat_poids_w_new[i][j]= mat_poids_w[i][j]+((nu*delta[j])*EntreesX[i]);// de meme ici

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    • Comment compiles-tu ton programme ? Quelles sont les commandes exactes d'invocation du compilateur et de l'éditeur de liens ?
    • Quelle est l'erreur exacte retournée par le compilateur ?
    • Nettoie le code posté de tous les caractères incongrus, indentation pétée, lignes exécutables commentées, blocs incomplets, etc... Si je copie-colle ton bloc de code dans un .c, je dois pouvoir témoigner exactement du comportement décrit.
    • Aère ton code, un espace c'est gratuit !

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 600
    Par défaut
    Bonjour,

    c'est illisible, c'est quoi ces étoiles?
    si tu écris : mat_poids_w2_new[j][k] += nu*(delta[k]*y2[k]);.
    c'est que mat_poids_w2_new est un tableau à deux dimensions ou un pointeur sur un tableau,
    Il faut déclarer le bon type pour la variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float fct( float erreurq , double mat_poids_w_new[][4] , double mat_poids_w2_new[][3] ){

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Par défaut
    Bonjour,
    a propos les étoiles, je les mets parce que j'ai besoin de ces variables après(je travaille avec outil Altium)
    Donc mat_poids_w_new, double,mat_poids_w2_new ,double mat_poids_w2 et double mat_poids_w sont des matrices
    je sais qu'il est impossible d'additionner deux matrices de taille ou dim différents
    mat_poids_w2_new[j][k] += nu*(delta[k]*y2[k]) (les étoiles ici sont des multiplications)
    j'ai essayé de convertir nu*(delta[k]*y2[k]) en un matrice pour pouvoir additionner avec mat_poids_w2_new[j][k] mais reste le même problème

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/03/2012, 18h42
  2. Problème dans boucle avec matrice et vecteur
    Par lilyla dans le forum MATLAB
    Réponses: 9
    Dernier message: 26/11/2007, 19h45
  3. Réponses: 1
    Dernier message: 29/10/2003, 12h16
  4. Problème de compilation de la DLL du XMLRad
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/04/2003, 16h46
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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