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

MATLAB Discussion :

Problème indice négatif d'une boucle for


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Problème indice négatif d'une boucle for
    Bonsoir a tous,
    Je veux savoir comment résolu ce problème parce que je n'arrive pas à tracer la réponse de Q en fonction de P.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for P=-50:50:150
     
       Q(P)=dblquad(@(X,Y)bfun(X,Y,P),0,1,0,1);
    end 
    plot(Q);grid on
    le message d'erreur est :
    ??? Subscript indices must either be real positive integers or logicals.
    
    Error in ==> blas at 37
       Q(P)=dblquad(@(X,Y)bfun(X,Y,P),0,1,0,1);
    Merci pour toute réponse.
    Meilleures salutations.

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    salut magelan,
    j'ai vue ce lien de FAQ Matlab, mais est ce qu'il y a une autre méthode pour résolu ce problème car je sais que variable P doit commencer par P=1 , j'ai schéma qui commencer par P=-50 comment il arrive a tracé !!!!!!!!

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    J'ai essayé a reprogrammer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    P=-50:50:150;
    Q=[];
     
    Q(P)=dblquad(@(X,Y)bfun(X,Y,P),0,1,0,1);
     
    plot(Q);grid on
    et la fonction bfun :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    function z=bfun(X,Y,P)
    z=1-P.*(1-(x/a).^2).*(1-(y/b).^2);
    le message d'erreur est :
    ??? Error using ==> times
    Matrix dimensions must agree.
    
    Error in ==> bfun at 2
    z=1-P.*(1-(x/a).^2).*(1-(y/b).^2);
    Error in ==> @(X,Y)bfun(X,Y,P)
    
    Error in ==> blas at 4
       Q(P)=dblquad(@(X,Y)bfun(X,Y,P),0,1,0,1);

    Meilleures salutations.

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    C'est parce que tu multiplie terme à terme des vecteurs de tailles différentes...

    Pour ton premier code, il suffisait juste d'ajouter 51 à P pour que -50 devienne 1, -49 devienne 2, etc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for P=-50:50:150
      
       Q(P+51)=dblquad(@(X,Y)bfun(X,Y,P),0,1,0,1);
    end 
    plot(Q);grid on
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Faisant par pas de 50, j'aurais plus vu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    P=-50:50:150;
    for i = 1:length(P)  
       Q(i)=dblquad(@(X,Y)bfun(X,Y,P(i)),0,1,0,1);
    end 
    plot(Q);grid on
    Ce qui posait problème était Q(P) avec
    Ne faudrait-il pas des majuscules pour être en accord avec les paramètres:
    Citation Envoyé par samo25 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function z=bfun(X,Y,P)
    z=1-P.*(1-(x/a).^2).*(1-(y/b).^2);
    ?

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Je suis d'accord avec vous concernant le X et Y majuscule, ils doivent être le même.
    J'ai utilisé le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    P=-50:50:150;
    for i = 1:length(P)  
       Q(i)=dblquad(@(X,Y)bfun(X,Y,P(i)),0,1,0,1);
    end 
    plot(Q);grid on
    Autre chose je veux savoir comment changer l'axe de X de i par les valeurs de P parce que dans le graphe l'axe de X est 1 à 4 c'est à dire le nombre i des valeurs de P, et merci (voir le graphe).
    Images attachées Images attachées  

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bah simplement

    Pense à regarder la documentation pour des questions de ce genre.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Tellement j'ai perturbé, les bases de plot sont disparu 'plot(x,y)'. merci

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

Discussions similaires

  1. problème d'iterator dans une boucle for
    Par cup of tea dans le forum Débuter
    Réponses: 2
    Dernier message: 10/01/2012, 17h31
  2. Problème d'écriture dans une boucle for
    Par manaliac dans le forum Général Python
    Réponses: 1
    Dernier message: 13/07/2010, 16h46
  3. Problème d'indexage dans une boucle FOR-END
    Par RAMZOON dans le forum MATLAB
    Réponses: 3
    Dernier message: 19/10/2007, 00h59
  4. Problème avec une boucle for
    Par cisse18 dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 29/03/2006, 16h50
  5. Problème avec une DLL dans une boucle For
    Par BraDim dans le forum Langage
    Réponses: 5
    Dernier message: 20/09/2005, 12h22

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