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 :

Représentation de fonctions graphiquement


Sujet :

MATLAB

  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 25
    Par défaut Représentation de fonctions graphiquement
    Salut, je veux représenter 3 fonctions graphiquement,
    et j'ai utliser ce code, mais il me donne rien
    le code est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     for x=-100:100
       for y=-100:100
           f=x.^2+y.^2
           g=x.^2-y.^2
           h=sin(x*y)
        end
    end
    subplot(1,3,1); plot(f); title('fonction f');
    subplot(1,3,2); plot(g); title('fonction g');
    subplot(1,3,3); plot(h); title('fonction h');
    merci

  2. #2
    Membre expérimenté Avatar de LordPeterPan2
    Inscrit en
    Février 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 247
    Par défaut
    La réponse est non :

    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
     
    x=-100:5:100; %je change les x juste pour que x et y n'ai pas le meme nombre d'éléments 
    y=(-100:100)';
    f=repmat(x.^2,length(y),1)+repmat(y.^2,1,length(x));
    g=repmat(x.^2,length(y),1)-repmat(y.^2,1,length(x));
    h=sin(y*x);
     
    figure;
    surf(x,y,f)
    title('mon titre');
     
    figure;
    surf(x,y,g)
    title('mon titre');
     
    figure;
    surf(x,y,h)
    title('mon titre');

  3. #3
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 25
    Par défaut ....!!!!
    Citation Envoyé par LordPeterPan2 Voir le message
    La réponse est non :

    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
     
    x=-100:5:100; %je change les x juste pour que x et y n'ai pas le meme nombre d'éléments 
    y=(-100:100)';
    f=repmat(x.^2,length(y),1)+repmat(y.^2,1,length(x));
    g=repmat(x.^2,length(y),1)-repmat(y.^2,1,length(x));
    h=sin(y*x);
     
    figure;
    surf(x,y,f)
    title('mon titre');
     
    figure;
    surf(x,y,g)
    title('mon titre');
     
    figure;
    surf(x,y,h)
    title('mon titre');

    Bjr, mais est ce necessaire que x et y n'auront pa le meme nombre d'element??
    deuxieme chose, pourquoi "repmat"?? à quoi sert??
    j'ai pas bien compri votre code

  4. #4
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Avant de passer à 3 fonctions, regardons ton code juste pour une :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for x=-100:100
       for y=-100:100
           f=x.^2+y.^2
        end
    end
    plot(f);
    Premier problème : essayes de regarder la valeur de f (avec un disp(f) par exemple) à la fin de ta boucle : n'y a-t-il rien qui te choque ?
    Que veux tu que soit f ? Un scalaire ? Un vecteur ? Une matrice ?

    Deuxième problème : plot(f) : tu ne "dessines" ici que f : pas d'abscisses, pas d'ordonnées ? MATLAB va automatiquement dans ce cas mettre des abscisses de 0 à taille de f avec un pas de 1. Souhaites-tu avoir de la 2D, de la 3D ? Souhaites-tu exprimer f en fonction de x et y (dans ce cas la fonction surf te sera effectivement sûrement utile) ?

    Donc réfléchis déjà un peu à ce que tu veux vraiment faire. Explique le nous en français ou en algorithmique et on pourra te donner de l'aide en MATLAB.

  5. #5
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 25
    Par défaut fonction f
    Citation Envoyé par caro95470 Voir le message
    Avant de passer à 3 fonctions, regardons ton code juste pour une :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for x=-100:100
       for y=-100:100
           f=x.^2+y.^2
        end
    end
    plot(f);
    Premier problème : essayes de regarder la valeur de f (avec un disp(f) par exemple) à la fin de ta boucle : n'y a-t-il rien qui te choque ?
    Que veux tu que soit f ? Un scalaire ? Un vecteur ? Une matrice ?

    Deuxième problème : plot(f) : tu ne "dessines" ici que f : pas d'abscisses, pas d'ordonnées ? MATLAB va automatiquement dans ce cas mettre des abscisses de 0 à taille de f avec un pas de 1. Souhaites-tu avoir de la 2D, de la 3D ? Souhaites-tu exprimer f en fonction de x et y (dans ce cas la fonction surf te sera effectivement sûrement utile) ?

    Donc réfléchis déjà un peu à ce que tu veux vraiment faire. Explique le nous en français ou en algorithmique et on pourra te donner de l'aide en MATLAB.
    j veu représenter la fonction f graphiquement en fonction x et y, moi je suis débutante, merci

  6. #6
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 25
    Par défaut graphiq
    Citation Envoyé par Amal4u Voir le message
    j veu représenter la fonction f graphiquement en fonction x et y, moi je suis débutante, merci
    oui j'ai exécuté votre code, oui ça me choque, aucun résultat..
    alors comment représenter graphiquement cette fonction normalement, parce que j'ai aucune indice sur f (matrice, vecteur ou scalaire..)
    peut etre scalaire
    merci

  7. #7
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Citation Envoyé par Amal4u Voir le message
    oui j'ai exécuté votre code, oui ça me choque, aucun résultat..
    alors comment représenter graphiquement cette fonction normalement, parce que j'ai aucune indice sur f (matrice, vecteur ou scalaire..)
    peut etre scalaire
    merci

    Euh tu ne sais pas ce que tu veux obtenir ??? Et en parlant en termes graphiques, tu veux :
    • un point (<=> scalaire)
    • une ligne (<=> vecteur)
    • une surface (<=> matrice)
    Pour représenter une fonction, l'objectif est de calculer pour chaque couple (x,y) la valeur de f, n'est-ce pas ?
    Cela te fait donc un tableau (donc une matrice), et il faut donc mettre des indices à chaque valeur de f :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for x=-100:100
       for y=-100:100
           f(x,y)=x.^2+y.^2
        end
    end
    f est alors une matrice et tu peux utiliser la fonction SURF pour le tracé de ta surface :

  8. #8
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 25
    Par défaut
    Citation Envoyé par caro95470 Voir le message

    Euh tu ne sais pas ce que tu veux obtenir ??? Et en parlant en termes graphiques, tu veux :
    • un point (<=> scalaire)
    • une ligne (<=> vecteur)
    • une surface (<=> matrice)
    Pour représenter une fonction, l'objectif est de calculer pour chaque couple (x,y) la valeur de f, n'est-ce pas ?
    Cela te fait donc un tableau (donc une matrice), et il faut donc mettre des indices à chaque valeur de f :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for x=-100:100
       for y=-100:100
           f(x,y)=x.^2+y.^2
        end
    end
    f est alors une matrice et tu peux utiliser la fonction SURF pour le tracé de ta surface :

    l'exercice que j'ai non pas parler de quel type la fonctionf, mais évidemment, d'apres mes connaissances, f ensemble de points calculé en fonction de x et y, non?
    alors d'apres ce que t'as di f doit etre soit scalaire, soit vecteur, soit matrice (merci pour l'information)
    alors et si c le cas, comment peut on les représenter (ces trois types de f) ??

  9. #9
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 25
    Par défaut
    Citation Envoyé par Amal4u Voir le message
    oui j'ai exécuté votre code, oui ça me choque, aucun résultat..
    alors comment représenter graphiquement cette fonction normalement, parce que j'ai aucune indice sur f (matrice, vecteur ou scalaire..)
    peut etre scalaire
    merci
    oui j'ai exécuté ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for x=-100:100
       for y=-100:100
                  f=x.^2+y.^2
            end
    end
    il m'a donné les valeurs de f, alors je sais pas comment représenter f graphiquement??
    c'est le courbe qui représente f en fonction de x et y bien sur

  10. #10
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Relis bien attentivement mon dernier post (message n°7)

  11. #11
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 25
    Par défaut
    Citation Envoyé par caro95470 Voir le message
    Relis bien attentivement mon dernier post (message n°7)
    ok, mais ça march pas ce code

  12. #12
    Membre expérimenté Avatar de LordPeterPan2
    Inscrit en
    Février 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 247
    Par défaut
    Citation Envoyé par Amal4u Voir le message
    Bjr, mais est ce necessaire que x et y n'auront pa le meme nombre d'element?? Non ce n'est absolument pas necessaire, simplement d'un point de vu dimension c'est plus facile à comprendre si x et y n'ont pas le meme nombre d'éléments
    deuxieme chose, pourquoi "repmat"?? à quoi sert?? repmat sert à reproduire une matrice à l'identitque. Ce que je faisais c'est juste créer un vecteurligne et le transformer en matrice avec n ligne chaque ligne étant identique
    j'ai pas bien compri votre code
    Matlab est un logiciel de calcul matricielle, vu que f,g et h sont des matrices, j'ai fais ce que tu voulais faire avec tes boucles for mais je me suis servie du calcul sur les matrices.

    Par contre, en lisant ce que tu écris j'ai l'impression que tu ne sais pas toi même ce que tu veux.

    f est une matrice si elle dépend de x et y.

  13. #13
    Membre expérimenté Avatar de LordPeterPan2
    Inscrit en
    Février 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 247
    Par défaut
    Citation Envoyé par Amal4u Voir le message
    ok, mais ça march pas ce code
    Mais elle a ajamais dit que ton code marchait
    Elle te dis juste de réfléchir à ce que tu veux vraimement faire.

    Ton code avec tes deux boucle for crée un scalaire f (de dimension 1x1).
    Quand tu fais un plot d'un nombre çà va te tracer juste un point. Je ne pense pas que ce soit ce que tu veux.

  14. #14
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Citation Envoyé par Amal4u Voir le message
    ok, mais ça march pas ce code
    OK je veux bien te croire, n'ayant pas MATLAB je ne peux tester, mais cette petite phrase ne va pas vraiment aider à avancer.
    Donc :
    1. Fait un copier-coller exact du code que tu as testé
    2. Montre en quoi "ça ne marche pas" : erreurs, résultat non correct...

    Note : tu devrais essayer sans les . soit f(x,y)=x^2+y^2 dans la boucle.
    Et je te conseille de te pencher dans la documentation (ou tes cours), MATLAB est un logiciel pour faire du calcul matriciel donc si tu ne sais pas ce qu'est une matrice ça risque d'être très difficile pour toi.

  15. #15
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 318
    Par défaut
    Citation Envoyé par caro95470 Voir le message
    Pour représenter une fonction, l'objectif est de calculer pour chaque couple (x,y) la valeur de f, n'est-ce pas ?
    Cela te fait donc un tableau (donc une matrice), et il faut donc mettre des indices à chaque valeur de f :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for x=-100:100
       for y=-100:100
           f(x,y)=x.^2+y.^2
        end
    end
    f est alors une matrice et tu peux utiliser la fonction SURF pour le tracé de ta surface :
    Le code exact est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    x=-100:100;
    y=-100:100;
     
    for m=1:numel(x)
       for n=1:numel(y)
           f(m,n)=x(m)^2+y(n)^2;
        end
    end
     
    surf(x,y,f);
    Ou plus directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [x,y]=meshgrid(-100:100,-100:100);
    f=x.^2+y.^2;
    surf(x,y,f);

  16. #16
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 25
    Par défaut
    Citation Envoyé par LordPeterPan2 Voir le message
    Matlab est un logiciel de calcul matricielle, vu que f,g et h sont des matrices, j'ai fais ce que tu voulais faire avec tes boucles for mais je me suis servie du calcul sur les matrices.

    Par contre, en lisant ce que tu écris j'ai l'impression que tu ne sais pas toi même ce que tu veux.

    f est une matrice si elle dépend de x et y.
    merci pour l'explication, mais dans l'énoncé j ces 3fonctions, et la question et de les représenter graphiquement sous Matlab. ( aucune autre indice)
    j'ai lu des cours sur les représentations graphiques, alors c de 3D, je pense, non? alors on aura besoin de 3axes dans la figure pour représenter ces 3 fonctions, et la fonction surf peut faire ce q est demander???
    merci

Discussions similaires

  1. Comment représenter un objet graphiquement ?
    Par SoftAbdou dans le forum C#
    Réponses: 4
    Dernier message: 13/06/2009, 00h14
  2. [Débutant] Représentation de fonction par méthode numérique
    Par lucienGr dans le forum MATLAB
    Réponses: 6
    Dernier message: 12/06/2009, 22h31
  3. Représentation algébrique fonction transfert
    Par Cypselos dans le forum Octave
    Réponses: 0
    Dernier message: 20/05/2008, 15h58
  4. Fonctions graphiques
    Par ZeKlubb dans le forum Langage
    Réponses: 6
    Dernier message: 28/03/2006, 04h48
  5. Fonctions graphique.
    Par castaka dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/04/2005, 18h06

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