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 :

Intégration d'une courbe de Gauss


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Points : 17
    Points
    17
    Par défaut Intégration d'une courbe de Gauss
    Bonsoir,

    J'aimerais intégrer une courbe de Gauss.

    Voici mes données pour la courbe :
    gauss = [01 02
    02 05
    03 15
    04 20
    05 22
    06 19
    07 16
    08 05
    09 01];
    je plote la courbe de Gauss
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    x_gauss = gauss(:,1);
    y_gauss = gauss(:,2);
    Remarque : j'ai séparé x et y car si je faisais le plot(gauss) il y avait deux courbes sur ma figure. Je n'ai pas très bien compris pourquoi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot(x_gauss,y_gauss,'+')
    Ensuite j'ai essayé de faire l'intégration avec la fonction trapz

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    h_gauss = (max(y_gauss)-min(y_gauss))/length(y_gauss);
    % Taille de l'intervalle
     
    int_gauss = zeros (length(y_gauss)-1,1);
    % initialisation du vecteur contenant ensuite l'intégration
     
    for i = 1 : length(y_gauss)-1
       h_gauss*(trapz(x_gauss(i),y_gauss(i)))= int_gauss(i);
    end
    et là... erreur je n'arrive pas plus loin...

    Merci d'avance pour votre aide!!!

  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
    Par défaut
    Bonsoir,

    tout d'abord plusieurs remarques sur ton code :
    Remarque : j'ai séparé x et y car si je faisais le plot(gauss) il y avait deux courbes sur ma figure. Je n'ai pas très bien compris pourquoi.
    Si tu met plot(X), matlab interprete X comme un vecteur contenant les ordonnées d'une fonction, ta variable gauss comprenant 2 colonnes, matlab les trace comme 2 fonctions différentes.
    Tu aurais pu faire simplement plot(gauss(:,2)) car tes abscisses varies de 1 à 9 avec un pas de 1. Si tes abscisses sont décalées ou varient avec un pas différent de 1, alors il faut utiliser plot(x,y). (je te conseille de toujours utilisé plot(x,y) au début comme cela tu es sur de ne pas faire d'erreurs.

    h_gauss = (max(y_gauss)-min(y_gauss))/length(y_gauss);
    % Taille de l'intervalle
    Ce n'est pas plutôt sur x_gauss que tu voulais faire ce calcul? Je ne comprends pas bien l'intérêt d'un intervalle sur y...

    h_gauss*(trapz(x_gauss(i),y_gauss(i)))= int_gauss(i);
    J'imagine que tu voulais écrire dans l'autre sens (c'est sûrement à cet endroit du code que tu avais une erreur):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int_gauss(i) = h_gauss*(trapz(x_gauss(i),y_gauss(i)))
    Mais de toute manière, ce code ne calcule pas l'intégrale par la méthode des trapèzes : comment veux-tu que trapz calcule une aire en lui fournissant les coordonnées d'un seul point???

    As-tu compris cette méthode, as-tu lu la doc? Tu n'as pas besoin de boucle pour faire le calcul :
    un petit exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    x = 1:15;
    y = [164,175,184,191,192,196,199,200,199,196,191,192,184,175,164];
    aire = trapz(x,y);

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Points : 17
    Points
    17
    Par défaut
    Merci en effet il fallait prendre l'ensemble des points jusqu'à i ce qui donne le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i = 1 : length(y_gauss)-1
       int_gauss(i)=h_gauss*(trapz(x_gauss(1:i,1),y_gauss(1:i,1))) ;
    end
    Merci beaucoup!!!

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

Discussions similaires

  1. [XL-2007] Création d'une courbe de gauss
    Par Metalcoder dans le forum Excel
    Réponses: 1
    Dernier message: 03/02/2015, 19h01
  2. Réponses: 5
    Dernier message: 29/09/2014, 23h08
  3. [CR 8] Intégration d'une courbe excel
    Par p_oum dans le forum SAP Crystal Reports
    Réponses: 15
    Dernier message: 19/01/2010, 10h32
  4. [XL-2007] Statistiques : histogramme et une courbe de Gauss
    Par MAFFORUM dans le forum Excel
    Réponses: 8
    Dernier message: 19/04/2009, 19h27
  5. Resconstitution d'une courbe
    Par Mertyl dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 27/05/2005, 07h39

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