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 :

Calcul de l'aire d'un vecteur [Débutant]


Sujet :

MATLAB

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut Calcul de l'aire d'un vecteur
    Bonjour à tous,

    J'ai une question à priori banale mais qui me pose problème. Je souhaiterais calculer l'aire du domaine formé par le plot d'un certain vecteur.

    Par exemple : soit real1 un certain vecteur une colonne, et le plot suivant :

    On obtient l'allure suivante :



    Je veux calculer l'aire du domaine bleu qui est donc finalement une fonction : en abscisse les indices du vecteur real1 et en ordonnée les valeurs correspondantes. En faisant des recherches, j'ai vu qu'il existe des fonctions telles que trapz,quad, quad8 qui permettent de calculer l'aire sous une courbe définie par une équation explicite. Par conséquent ici cela ne marche pas à priori :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aire_real1=quad8(real1);
    real1 n'est pas une "fonction" mais un simple vecteur 1 colonne. Bref comment pourrais-je faire ?

  2. #2
    Membre averti
    Femme Profil pro
    Ingénieur informatique scientifique
    Inscrit en
    Mai 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique scientifique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 313
    Points : 301
    Points
    301
    Par défaut
    Bonjour,

    j'ai eu peur avec ton titre "aire d'un vecteur"
    Au final, même si tu n'as "qu'un vecteur", c'est bien l'aire sous une courbe que tu veux calculer il me semble.

    Avec ton vecteur real1, tu as les valeurs Y de ta fonction. Puisque en abscisse tu as les indices du vecteur, c'est donc une série d'entiers allant de 1 à la longueur de ton vecteur par pas de 1.
    Donc quelque chose comme ça devrait marcher:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    X = 1: length(real1);
    aire = trapz(X, real1);

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut
    Merci mokochan de cette réponse. J'avais en effet tenté moi aussi la même chose avec trapz mais je suis sceptique. Si je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    X=[1 2 3]
    plot(X)
    Y = 1: length(X);
    aire = trapz(Y, X)
    Il me renvoie 4 alors que sur le plot l'aire en question est pour moi l'aide du triangle rectangle de côté 3 et 3 donc aire=(3*3)/2=4.5, à moins que je me trompe ?

  4. #4
    Membre averti
    Femme Profil pro
    Ingénieur informatique scientifique
    Inscrit en
    Mai 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique scientifique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 313
    Points : 301
    Points
    301
    Par défaut
    A vrai dire je n'avais pas trop regardé la doc de trapz,
    premièrement avec cette fonction on peut directement écrire
    Deuxièmement la valeur renvoyée est approchée puisque cette fonction calcule l'intégrale selon la méthode des trapèzes, et là on a très peu de points donc le résultat est peu précis.
    Cependant, avec ton vecteur real1, peut-être que la fonction trapz sera suffisante, tout dépend du niveau de précision que tu veux.

    Tu peux utiliser d'autres fonctions plus précises comme quad ou integral si ta version de Matlab la supporte (ce qui n'est pas le cas de la mienne donc pas pu tester!).
    Pour ces fonctions il faut donner en paramètre un handle de fonction (tu ne peux pas donner directement real1), tout est dans la doc.

  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
    Citation Envoyé par abel413 Voir le message
    Merci mokochan de cette réponse. J'avais en effet tenté moi aussi la même chose avec trapz mais je suis sceptique. Si je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    X=[1 2 3]
    plot(X)
    Y = 1: length(X);
    aire = trapz(Y, X)
    Il me renvoie 4 alors que sur le plot l'aire en question est pour moi l'aide du triangle rectangle de côté 3 et 3 donc aire=(3*3)/2=4.5, à moins que je me trompe ?
    trapz renvoie le bon résultat : l'aire en question est celle entre la courbe et l'axe des abscisses, ce qui correspond à l'aire d'un rectangle de dimension 1x2 et d'un triangle rectangle isocèle de coté 2, soit une aire totale de 4. La méthode des trapèzes donnent la valeur exacte pour des segments de droite.
    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
    Membre averti
    Femme Profil pro
    Ingénieur informatique scientifique
    Inscrit en
    Mai 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique scientifique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 313
    Points : 301
    Points
    301
    Par défaut
    Ha merci magelan j'avais donc mal compris cette fonction ^^'

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut
    Merci mokochan. Les vecteurs que j'utilise contiennent des milliers de valeurs donc trapz est acceptable. J'avais essayé avec quad et quad8 ou quadl mais j'obtiens l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    X=1:length(real1);
    aire_real1bis=quadl(real1,X);
    ??? Error using ==> fcnchk
    FUN must be a function, a valid string expression, 
    or an inline function object.
     
    Error in ==> quadl at 54
    f = fcnchk(funfcn);
    Cela peut importe la version de quad utilisée. J'ai compris qu'il faut donner un handl mais dans mon cas je ne sais comment le faire. La fonction à proprement parlé est real1(X) si X=1:lenght(real1) mais cela ne marche pas. Sur cette page il y a bien un exemple avec une équation explicite de fonction et d'aire sous cette fonction mais dans mon cas je ne vois pas d'équation explicite.

    magelan

    Merci pour les précisions mais, en conséquence, comment obtenir la bonne aire, soit 4.5 pour mon exemple, i.e. celle sous la courbe ?

  8. #8
    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
    L'aire sous ta courbe vaut 4, et non 4.5 donc trapz renvoie le bon résultat. Avec tes données,aucune aire ne vaut 4.5, l'aire du triangle rectangle vaut 2 (triangle rectangle isocèle de côté 2 : (2*2)/2 = 2)

    Quelle aire souhaites-tu calculer :
    l'aire délimité par ta courbe et l'axe des abscisses? dans ce cas l'aire vaut 4
    une autre aire? peux-tu la définir?
    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.

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut
    Effectivement magelan, le calcul est bon avec trapz. C'est moi qui calculait mal l'aire sous la courbe. Il s'agit en fait de l'intégrale de x entre 1 et 3 ce qui donne donc [x²/2] calculé entre 1 et 3, soit 4.5 - 0.5 = 4. Donc le calcul est correct. Merci bien.

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

Discussions similaires

  1. Calcul de l'angle d'un vecteur
    Par zarbiman dans le forum Mathématiques
    Réponses: 11
    Dernier message: 09/12/2013, 15h03
  2. Arbre N-aire avec des vecteurs de pointeurs
    Par valderama dans le forum Débuter
    Réponses: 3
    Dernier message: 15/01/2009, 16h42
  3. [isosurface] Calcul de l'aire d'une surface
    Par kamelcompte dans le forum Images
    Réponses: 6
    Dernier message: 24/10/2008, 12h32
  4. calcul de l'aire visible d'une sphère
    Par zarbiman dans le forum OpenGL
    Réponses: 11
    Dernier message: 13/08/2008, 13h47
  5. Calcul de l'aire sous une courbe
    Par ramrouma dans le forum MATLAB
    Réponses: 2
    Dernier message: 16/05/2007, 23h11

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