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 :

plot de la surface d'une sinus


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 105
    Par défaut plot de la surface d'une sinus
    Bonjour,

    est ce qu'on peut dessiner la surface d'une onde sinusoidale en fontion de son amplitude,période,fréquence.

    j'ai pensé à l'intégrer avec la fonction mais le resultat du plot est une constante alors que j'aimerai voir les variations d'une surface après l'intégration de cette onde sinusoidale.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut
    Bonjour,

    si tu veux tracer un plot a partir de 3 paramètres, il faut que tu utilises la fonction plot3 ou surf.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Par défaut
    Citation Envoyé par slayer21 Voir le message
    Bonjour,

    est ce qu'on peut dessiner la surface d'une onde sinusoidale en fontion de son amplitude,période,fréquence.

    j'ai pensé à l'intégrer avec la fonction mais le resultat du plot est une constante alors que j'aimerai voir les variations d'une surface après l'intégration de cette onde sinusoidale.
    Période = 1 / fréquence et vis et versa, la représentation 2D d'une sinusoïde contient déjà toutes les variables indépendantes non?

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 105
    Par défaut
    Voila comment j'ai procédé,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    x=0:0.1:10*pi;  
     
    Q=quad(@myfun,0,pi);
     
    plot(x,Q);
    myfun.m

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function y_q=myfun(x)
    A=4;
    y_q=A*sin(3*x);
    je ne peux pas utiliser le plot2 ou plot3 ni surf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Undefined function or method 'plot2' for input arguments of type 'double'.


    Je ne vois pas trop comment affecté plusieurs paramètres à ma fonction myfun

  5. #5
    Membre chevronné
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Par défaut
    Salut. Il y a plusieurs choses qui ne me paraissent pas très claires. Tout d'abord, tu veux 'dessiner la surface d'une onde sinusoïdale'. Mais je ne vois que une seule dimension dans ta fonction : x. Si tu veux une surface, il faut un x et un y : un plan sur lequel représenter ta fonction.

    Mais peut-être que ce que tu souhaites, c'est représenter la surface sous ta courbe à une dimension. A ce moment, pas besoin d'utiliser plot2 ou 3. Il faut juste faire un plot de la fonction intégrée entre tes bornes.

    Ou enfin, peut-être que tu souhaites voir comment la surface sous la courbe varie avec le domaine d'intégration qui augmente. Dans ce cas, il faut calculer plusieurs valeurs de la surface sous la courbe et à chaque fois augmenter un peu le pas d'intégration. En, gros utiliser ce que tu as fait, avec une boucle for pour ensuite afficher aire sous la courbe VS taille du domaine d'intégration.

    Voilà voilà, je ne sais pas si je suis très clair, mais qu'est-ce qui t'intéresse au juste?

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 105
    Par défaut
    Citation Envoyé par Dam2227 Voir le message
    Salut. Il y a plusieurs choses qui ne me paraissent pas très claires. Tout d'abord, tu veux 'dessiner la surface d'une onde sinusoïdale'. Mais je ne vois que une seule dimension dans ta fonction : x. Si tu veux une surface, il faut un x et un y : un plan sur lequel représenter ta fonction.

    Mais peut-être que ce que tu souhaites, c'est représenter la surface sous ta courbe à une dimension. A ce moment, pas besoin d'utiliser plot2 ou 3. Il faut juste faire un plot de la fonction intégrée entre tes bornes.

    Ou enfin, peut-être que tu souhaites voir comment la surface sous la courbe varie avec le domaine d'intégration qui augmente. Dans ce cas, il faut calculer plusieurs valeurs de la surface sous la courbe et à chaque fois augmenter un peu le pas d'intégration. En, gros utiliser ce que tu as fait, avec une boucle for pour ensuite afficher aire sous la courbe VS taille du domaine d'intégration.

    Voilà voilà, je ne sais pas si je suis très clair, mais qu'est-ce qui t'intéresse au juste?
    Bonjour Dam2227,

    en fait c'est exactement ce que je veux, mais je ne vois pas très bien comment faire pour afficher ce que tu as appelé aire sous la courbe VS,

  7. #7
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Salut!

    As-tu essaye:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    plot2(x,Q)
     
    ou 
     
    plot3(x,Q,y_q)

  8. #8
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 105
    Par défaut
    Citation Envoyé par mihaispr Voir le message
    Salut!

    As-tu essaye:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    plot2(x,Q)
     
    ou 
     
    plot3(x,Q,y_q)
    salut mihaispr,

    oui j'ai déja essayé mais j'ai le message d'erreure suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Undefined function or method 'plot2' for input arguments of type 'double'.

  9. #9
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Undefined function or method 'plot2' for input arguments of type 'double'.
    Il te dit que la function plot2 ne s'applique pas a des entrees du type double.

    Donc je crois que les variables x,Q et y_q sont du type double donc tu dois faire une conversion.


    Mais tappes ca en command window:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    >>whos x
    >>whos Q
    >>whos y_q
     
    ou simplement
     
    >>whos
    Et renvoie moi s'il te plait les informations qui apparait en command window!

    Amicalment,

    Michel

  10. #10
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 105
    Par défaut
    Citation Envoyé par mihaispr Voir le message
    Tappes ca en command window:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    >>whos x
    >>whos Q
    >>whos y_q
     
    ou simplement
     
    >>whos
    Et renvoie moi s'il te plait les informations qui apparait en command window!

    Amicalment,

    Michel
    Salut Michel, voila le résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >> whos x
      Name      Size             Bytes  Class     Attributes
     
      x         1x315             2520  double

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >> whos Q
      Name      Size            Bytes  Class     Attributes
     
      Q         1x1                 8  double

  11. #11
    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
    Oui enfin c'est surtout que la fonction PLOT2 n'existe pas dans MATLAB

  12. #12
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Oui plot2 n'existe pas dans matlab c'est un peu etrange

    Mais essaye avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    plot3(x,Q,y_q) ou surf(x,Q,y_q)

    Aussi renvoie moi s'il te plait whos y_q et si tu as des messages d'erreur en appliant les 2 fonction plot3 ou surf.
    J'attends ton reponse et le message d'erreur en command window s'il existe!

    Bonne chance,

    Michel

  13. #13
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 105
    Par défaut
    avec le plot3 j'ai cette erreure,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ??? Error using ==> plot3
    Vectors must be the same lengths.
     
    Error in ==> Sinusoidale at 24
        plot3(x,Q,y_q);
    le whos y_q ne renvoi aucune réponse

  14. #14
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Citation Envoyé par slayer21 Voir le message
    avec le plot3 j'ai cette erreure,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ??? Error using ==> plot3
    Vectors must be the same lengths.
     
    Error in ==> Sinusoidale at 24
        plot3(x,Q,y_q);
    le whos y_q ne renvoi aucune réponse
    L'erreur te dit que les vecteurs doivent avoir la meme dimension.

    Exemple des 2 vecteurs qui ont la meme dimension dans command window:

    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
     
    >> a=[1 0 0 -1 2 3 4] 
     
    a =
     
         1     0     0    -1     2     3     4
     
    >> nombre_elements_pour_a=numel(a)
     
    nombre_elements_pour_a =
     
         7
     
    >> b=[1 2 3 -3 -4 2 0] 
     
    b =
     
         1     2     3    -3    -4     2     0
     
    >> nombre_elements_pour_b=numel(b)
     
    nombre_elements_pour_b =
     
         7
     
    >>
    N'importe pas les elements des 2 vecteurs important c'est qu'ils ont la meme dimension(=7 dans ce cas) ca qui ne s'applique pas a ton probleme est c'est pour cela qu'il te donne cette erreur:

    Error using ==> plot3
    Vectors must be the same lengths.

  15. #15
    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
    Je pense qu'il faudrait que slayer recentre un peu mieux son problème.
    Ça ne sert à rien d'essayer de tracer des données qui ne semblent absolument pas maitrisées.
    Actuellement tu as un vecteur x.
    Tu fais une intégration sur 0:pi, et tu obtiens donc un scalaire Q.

    Je ne vois pas très bien ce que tu veux en faire.

    Ce que Dam lui essayait d'expliquer (enfin ce que je comprends), c'est de faire varier ton domaine d'intégration pour avoir plusieurs valeurs de Q et de tracer le vecteur Q obtenu en fonction (VS voulait dire versus) de la taille du domaine d'intégration.

  16. #16
    Membre chevronné
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Par défaut
    Oui, c'est ce que Caro-Line explique. En fait, si ton équation n'a qu'une seule dimension, alors tu peux facilement calculer son intégrale entre les bornes, disons 0 et x. Si f est ta fonction et F son intégrale, alors ce que tu cherches à faire, c'est plotter, la fonction F(x)-F(0). Ceci tu donneras la variation de l'aire sous la courbe en fonction du domaine d'intégration, ici de 0 à x. Si tu as deux dimensions, tu peux raisonner de la même manière, sauf qu'il te faudra faire un maillage (selon x et y), c'est à dire calculer F(x,y)-F(0,0).

    Pour faire ça, tu peux aussi utiliser une fonction déjà toute faite dans Matlab genre quad. Etant donner que quad calcule l'aire sous la courbe selon un domaine d'intégration précis. Donc dans ce cas, il va falloir boucler sur différents domaine pour calculer F à différents x (à moins que tu puisses entrer un vecteur en argument de la fonction quad, mais je ne pense pas que ce soit possible, à tester...).

    ++

Discussions similaires

  1. Interpolation biliniaire sur la surface d'une sphère
    Par djem_aymen dans le forum Mathématiques
    Réponses: 2
    Dernier message: 05/08/2008, 17h39
  2. Une surface ayant une epaisseur .
    Par choko83 dans le forum OpenGL
    Réponses: 6
    Dernier message: 05/05/2008, 18h54
  3. Surface d'une courbe de lorentz
    Par johnkhm dans le forum Mathématiques
    Réponses: 1
    Dernier message: 02/03/2008, 15h23
  4. Blit d'une surface sur une autre...?
    Par Invité dans le forum SDL
    Réponses: 6
    Dernier message: 14/06/2005, 18h24
  5. Réponses: 17
    Dernier message: 25/03/2003, 13h45

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