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 :

double intégrale par la méthode des trapèzes


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 16
    Points
    16
    Par défaut double intégrale par la méthode des trapèzes
    Bonjour,
    je reviens vers vous une autre fois en guise de chercher une solution a mon tt petit problème; pour calculer l'intégrale d'une fonction a une seul variable j'ai utiliser la commande 'trapz',
    mon problème est le suivan0:t j'ai une fonction a deux variable et je veux faire son double intégrale en utilisant la méthode de trapez ,quelqu'un a une solution svp

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 292
    Points : 435
    Points
    435
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    doc dblquad
    doc integral2
    Ce n'est pas la méthode par trapèze car en dimension 2 ça n'existe pas.

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 16
    Points
    16
    Par défaut
    Mais non comme j'ai souligné je veux utiliser la méthode des trapèzes ,sous MATLAB pour une fonction à une seule variable je l'ai intégré comme suit : Maintenant je veux faire la double intégrale par la méthode des trapèzes aussi, comme il est connu elle est plus précise, surtout quand la fonction est un peu compliqué, merci

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 292
    Points : 435
    Points
    435
    Par défaut
    Alors il suffit de chercher dans le forum/ et remplacer comme il faut par ta fonction (trapz)

    Ensuite la méthode des trapèzes n'est pas forcément la plus précise ( cf. le fil précédent)

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 16
    Points
    16
    Par défaut
    En fait je suis obligé de travailler avec la méthode des trapèzes puisque j'en ai utilisé en mono-varié, et je dois faire une extension en utilisant le même principe c'est à dire la méthode des trapèzes appliquée à une fonction à deux variables, une idée camarade ?

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 292
    Points : 435
    Points
    435
    Par défaut
    Je propose sur un exemple:

    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
     
    SampleX = 100
    SampleY = 100
    xmin=1
    xmax=10
    ymin=1
    ymax=10
     
    x=linspace(xmin, xmax, Samplex);
    y=linspace(ymin, ymax, Sampley);
    [X,Y]=meshgrid(x,y);
    Z= X^2 + Y^2
     
    # Integre suivant x puis suivant y
    Ix = trapz(x, Z);
    I = trapz(y, Ix);

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 16
    Points
    16
    Par défaut
    C'est tellement complexe que je vois un peu flou, bon il s'agit de faire le produit de convolution de deux fonctions, analytiquement parlant le produit de convolution a la forme suivante :
    La fonction de distribution: f
    La fonction de densité :F
    produit de convolution = integrale (F(t).f(t-x))
    en code MATLAB c'est :
    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
    for i=1:n
        mu(i)=mu1*(a^(i-1));
        sigma(i)=sigma1*(a^(i-1));
        ft(i,:)=gampdf(T,mu(i),sigma(i));
    end
    FS(1,:)=normcdf(T,mu1,sigma1);
    figure(10)
    hold on
    plot(T,FS(1,:),'r.-')
    %------itéra : 02 --> n
    for o=2:n
        for i=1:m
            for k=1:m
                if i-k>0
                    ftt(k)=ft(o,i-k);
                    yy(k)=FS(o-1,k)*ftt(k);
                else
                    ftt(k)=0;
                    yy(k)=FS(o-1,k)*ftt(k);
                end
            end
            FSt(i)=trapz(T,yy);
        end
    le problème c'est encore complexe pour la fonction à deux variables générées par la commande mvncdf (loi normale à deux dimensions).

  8. #8
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Il faudrait d'abord bien comprendre ce qu'est la méthode des trapèzes.

    A une dimension, l'intégrale de f(x) correspond à l'aire de la surface située au-dessous du graphe de f(x). Ta fonction f(x) est donnée sous la forme d'un tableau à deux lignes ou deux colonnes contenant l'une, les valeurs de x et l'autre les valeurs correspondantes de f(x):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       0.0   0.2   0.4   0.6   0.8   1.0
         0     1     4     9    16    25
    La méthode des trapèzes consiste en fait à remplacer le graphe par une ligne polygonale, c'est-à-dire à faire une interpolation linéaire.

    A deux dimensions l'intégrale de f(x,y) correspond au volume situé au-dessous de la surface qui représente f(x,y). Ta fonction f(x,y) peut, selon les cas, être donnée de deux manières différentes, soit:
    1. un tableau à 3 lignes ou 3 colonnes contenant respectivement les valeurs de x, celles de y et celles de f(x,y). Pour calculer l'intégrale, tu découpes la surface en mailles triangulaires; l'intégrale sur tout le domaine est la somme des volumes situés au-dessous de chaque maille.
    2. un tableau contenant m valeurs de x, un autre contenant n valeurs de y et un tableau de dimensions m*n contenant les valeurs de f(x,y).


    Alors, dans laquelle de ces deux situations te trouves-tu?

    Jean-Marc Blanc

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 16
    Points
    16
    Par défaut
    Je vous explique mon programme: j'ai une fonction de renouvellement M(t,u) avec t est le temps , et u est l'usage.
    Je prends un exemple pour t=20 mois, et pour u=2000km ça me retourne M=2, c'est à dire 2 renouvellement, je pense bien évidement que je suis dans votre première proposition, où j'ai un tableau qui contient une ligne de temps, une colonne d'usage et ce que contient le tableau c'est le nombre de renouvellement soit 'M'

  10. #10
    Membre à l'essai
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 16
    Points
    16
    Par défaut
    Dans ce cas je procède comme ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Ix = trapz(x, Z);
    I = trapz(y, Ix);

  11. #11
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    j'ai un tableau qui contient une ligne de temps, une colonne d'usage et ce que contient le tableau c'est le nombre de renouvellement soit 'M'
    C'est exactement la seconde proposition et non la première. Je n'ai peut-être pas été assez clair. Alors, j'explique autrement:

    Dans la seconde proposition, pour chaque valeur de x, tu as la valeur de f(x,y) pour toutes les valeurs de y et vice versa. Dans le plan Oxy, les valeurs de f(x,y) sont donc connues sur tous les noeuds d'une grille à mailles rectangulaires.

    En revanche, dans la première proposition, les valeurs connues de f(x,y) sont saupoudrées un peu n'importe où sur le plan Oxy.

    Jean-Marc Blanc

  12. #12
    Membre à l'essai
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 16
    Points
    16
    Par défaut
    bon entre autre j'ai un tableau où les entrées sont le temps et l'usage , et en fonction de ces entrées j'ai le nombre de renouvellement, donc le calcul d'intégrale double pour une fonction à deux variables en utilisant la méthode des trapèzes se fait comment ? Je retourne à la case départ !

  13. #13
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Je retourne à la case départ !
    Si tu ne réponds pas à ma question, ça ne sert à rien. Alors, je te la pose autrement: Montre-nous ton tableau de données.
    Jean-Marc Blanc

  14. #14
    Membre à l'essai
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par FR119492 Voir le message
    Salut!

    Si tu ne réponds pas à ma question, ça ne sert à rien. Alors, je te la pose autrement: Montre-nous ton tableau de données.
    Jean-Marc Blanc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    M =
     
             0         0         0         0         0         0         0
             0    0.9999    0.9999    1.0000    1.0000    1.0000    1.0000
             0    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000
             0    0.9941    0.9942    0.9942    0.9942    0.9942    0.9942
             0    0.7839    0.7839    0.7839    0.7839    0.7840    0.7840
             0    0.8395    0.8396    0.8396    0.8396    0.0000    0.0000
             0    0.8514    0.8515    0.8515    0.8515    0.0000    0.0000

  15. #15
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Alors, on y est presque.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    M =
     
             Y         Y         Y         Y         Y         Y         Y
             Y    0.9999    0.9999    1.0000    1.0000    1.0000    1.0000
             Y    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000
             Y    0.9941    0.9942    0.9942    0.9942    0.9942    0.9942
             Y    0.7839    0.7839    0.7839    0.7839    0.7840    0.7840
             Y    0.8395    0.8396    0.8396    0.8396     XXXX      XXXX
             Y    0.8514    0.8515    0.8515    0.8515     XXXX      XXXX
    J'ai encore deux petites questions concernant ton tableau:
    1. Comment expliques-tu que les valeurs que j'ai remplacées par XXXX soient nulles?
    2. Que représentent les valeurs 0 que j'ai remplacées par Y?

    Jean-Marc Blanc

  16. #16
    Membre à l'essai
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par FR119492 Voir le message
    Salut!
    Alors, on y est presque.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    M =
     
             Y         Y         Y         Y         Y         Y         Y
             Y    0.9999    0.9999    1.0000    1.0000    1.0000    1.0000
             Y    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000
             Y    0.9941    0.9942    0.9942    0.9942    0.9942    0.9942
             Y    0.7839    0.7839    0.7839    0.7839    0.7840    0.7840
             Y    0.8395    0.8396    0.8396    0.8396     XXXX      XXXX
             Y    0.8514    0.8515    0.8515    0.8515     XXXX      XXXX
    J'ai encore deux petites questions concernant ton tableau:
    1. Comment expliques-tu que les valeurs que j'ai remplacées par XXXX soient nulles?
    2. Que représentent les valeurs 0 que j'ai remplacées par Y?

    Jean-Marc Blanc
    voila j'ai corrigé mon programme!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000
        2.0000    2.0000    2.0000    2.0000    2.0000    2.0000    2.0000    2.0000    2.0000    2.0000
        3.0000    3.0000    3.0000    3.0000    3.0000    3.0000    3.0000    3.0000    3.0000    3.0000
        4.0000    4.0000    4.0000    4.0000    4.0000    4.0000    4.0000    4.0000    4.0000    4.0000
        5.0000    5.0000    5.0000    5.0000    5.0000    5.0000    5.0000    5.0000    5.0000    5.0000

  17. #17
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    C'est de nouveau beaucoup moins clair! Alors, je vais essayer de reformuler ton problème. Tu me diras si j'ai bien compris.

    Données du problème
    Tu as un domaine rectangulaire (X1 <= x <= X2 et Y1 <= y <= Y2) dans lequel il y a une fonction f(x,y). Sur ce domaine est appliquée une grille définie par un tableau unidimensionnel contenant m valeurs de x et un autre contenant n valeurs de y.
    Ta fonction t'est donnée sous la forme d'un tableau bidimensionnel de taille m*n contenant les valeurs de ta fonction sur tous les noeuds de la grille.

    Solution recherchée
    Une valeur approchée de l'intégrale de la fonction sur le domaine décrit ci-dessus.

    Est-ce bien ça?

    Jean-Marc Blanc

  18. #18
    Membre à l'essai
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par FR119492 Voir le message
    Salut!
    C'est de nouveau beaucoup moins clair! Alors, je vais essayer de reformuler ton problème. Tu me diras si j'ai bien compris.

    Données du problème
    Tu as un domaine rectangulaire (X1 <= x <= X2 et Y1 <= y <= Y2) dans lequel il y a une fonction f(x,y). Sur ce domaine est appliquée une grille définie par un tableau unidimensionnel contenant m valeurs de x et un autre contenant n valeurs de y.
    Ta fonction t'est donnée sous la forme d'un tableau bidimensionnel de taille m*n contenant les valeurs de ta fonction sur tous les noeuds de la grille.

    Solution recherchée
    Une valeur approchée de l'intégrale de la fonction sur le domaine décrit ci-dessus.

    parfait ce que je recherche )
    Est-ce bien ça?

    Jean-Marc Blanc

  19. #19
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Alors, c'est tout simple (en Fortran, mais tu n'as qu'à traduire):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
          Integrale=0.0
          Do i=2,m
            Do j=2,n
              Integrale=Integrale+(x(i)-x(i-1))(y(j)-y(j-1))*(f(i-1,j-1)+f(i-1,j)+f(i,j-1)+f(i,j))/4.0
            End Do
          End Do
    C'est tout simple, mais ça aurait été beaucoup plus vite si tu avais formulé correctement ton problème.

    Jean-Marc Blanc

  20. #20
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    où je dois insérer la méthode de trapèze de yy où il y 'a %trap , je me plante tjs
    Insère le bout de programme que je t'ai donné à la place de %trap puis dis-moi ce qui ne va pas.
    Jean-Marc Blanc

Discussions similaires

  1. Intégrale par la méthode des rectangles
    Par lnkjv dans le forum C
    Réponses: 3
    Dernier message: 14/11/2013, 12h26
  2. Sécurite CSRF par la "méthode des tickets"
    Par lebonvieuxnovice dans le forum Langage
    Réponses: 4
    Dernier message: 09/09/2009, 00h16
  3. Calcul d'une intégrale double par la méthode des quadratures
    Par deubelte dans le forum Mathématiques
    Réponses: 5
    Dernier message: 10/05/2009, 12h40
  4. Equation du cercle par la méthode des moindres carrés
    Par olivier21c dans le forum MATLAB
    Réponses: 1
    Dernier message: 29/03/2009, 20h10
  5. Calcul d'intégrale par la méthode de Monte Carlo
    Par physicslover dans le forum Fortran
    Réponses: 5
    Dernier message: 29/01/2009, 11h02

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