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

Python Discussion :

Méthode des trapèzes


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    etudiante
    Inscrit en
    Avril 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : etudiante

    Informations forums :
    Inscription : Avril 2015
    Messages : 3
    Points : 0
    Points
    0
    Par défaut Méthode des trapèzes
    404 not found

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 621
    Points : 56 867
    Points
    56 867
    Billets dans le blog
    40
    Par défaut
    Bonsoir,

    Citation Envoyé par thenoob123456789 Voir le message
    ... essayer de parler avec moi comme a un enfant ^^
    Comme à une étudiante plutôt

    Un peu de recherche et on trouve déjà cette ressource (entre autres pour étudiants) sur Developpez : Exemple 3 : calcul intégral - méthode des trapèzes

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par thenoob123456789 Voir le message
    je ne vois pas comment appliquer cela pour 10 trapezes.
    Dois je définir f,b,a,n ?
    De plus que je dois utiliser c'est celle la : intégral de 1 à 3 de sin x /x
    Et bien, vous avez f = sin x /x, a, b = 1, 3 et n = 10.

    Mais avant d'essayer de résoudre votre problème, il faut essayer de comprendre comment fonctionne l'exemple qui vous a été donné.
    De toutes façons, dites vous bien "qu'apprendre" passe par se gratter la tête pour arriver à faire l'exercice.

    Si on le fait à votre place, on pourra éventuellement se faire plaisir, mais, in fine, vous, vous n'aurez rien appris.
    Dit autrement, ce qui est important c'est ce que vous allez accumuler côté expérience dans "le voyage": essayer de coder la chose, la mettre au point, tester,...
    La destination, i.e. le résultat de l'exercice, n'a pas grande importance: demain, sera un autre exo. pretexte à un autre voyage dans le monde de la programmation.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    hello,
    si tu dois faire une représentation graphique, il te faut une bibliothèque graphique du genre pylab (librairies NumPy et Matplotlib). .

    Pour te mettre sur la voie il y a un exemple ici qui montre comment faire pour la méthode des rectangles. Et ensuite il y a un exercice intéressant :
    Exercice

    Faire un programme similaire au précédent pour la méthode des trapèzes en utilisant les mêmes valeurs numériques pour la fonction. Réaliser de même la visualisation des trapèzes.


    A toi de t'inspirer de la méthode des rectangles pour réaliser celle des trapèzes. Tu vas devoir encore te gratter la tête mais cette fois ci normalement tu as tous les éléments pour trouver.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  5. #5
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    hello,
    puisque personne ne te réponds et comme je ne suis pas un spécialiste des maths , le tracé à l'air bon mais le calcul de l'intégrale ne me semble pas correct :

    il faut que tu traduises ceci :
    Nom : Capture_intégrale.PNG
Affichages : 6868
Taille : 7,4 Ko

    en t'inspirant de ce qui avait été fait pour la méthode des rectangles.

    et quand tu fais integrale = integrale + cela peut être simplifié par integrale +=

    Moi j'arrive à un résultat à peu près bon à part que je semble tomber sur le problème des intervalles et des poteaux.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  6. #6
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    y a un truc louche dans ton code : il manque la partie qui définit les points x , y

    la partie *(y[i]+y[i+1]) me semble correcte mais c'est l'autre côté qui cloche . Réfléchis ( encore un grattage de tête) que sont a et b par rapport à f(a) et f(b)
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  7. #7
    Nouveau Candidat au Club
    Femme Profil pro
    etudiante
    Inscrit en
    Avril 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : etudiante

    Informations forums :
    Inscription : Avril 2015
    Messages : 3
    Points : 0
    Points
    0
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from pylab import *
     
    integrale= 0
    for i in range(9):
        integrale += ((x[i+1]-x[i])/2)*(y[i]+y[i+1])
        x_rect = [x[i], x[i],x[i+1] , x[i+1], x[i]]
        y_rect = [0   , y[i],y[i+1] , 0     , 0   ]
        plot(x_rect, y_rect,"r")
    print("integrale =", integrale)
     
    show ()
    Ah oui j'ai fais une bête erreur :/ mais je vois toujours pas comment definir x et y

  8. #8
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    c'était la partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    xmin = 0
    xmax = 3*pi/2
    nbx = 10
    nbi = nbx - 1 # nombre d'intervalles
    x = linspace(xmin, xmax, nbx)
    y = cos(x)
    pour cosinus mais pour sin(x)/x attention à la valeur x = 0
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  9. #9
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    xmin > xmax ?????
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  10. #10
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    on en arrive au problème que j'évoquais précedemment. Y a un écart par rapport à une autre méthode :
    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
    27
    28
    29
    30
    31
    # integration numerique par la methode des rectangles avec alpha = a
    from pylab import *
     
    def trapezoidal(f, a, b, n):
        h = float(b - a) / n
        print ("h= ",h)
        s = 0.0
        s += f(a)/2.0
        for i in range(1, n):
            s += f(a + i*h)
        s += f(b)/2.0
        return s * h
     
     
    xmin = 0.5
    xmax = 3*pi/2
    nbx = 10
    nbi = nbx - 1 # nombre d'intervalles
    x = linspace(xmin, xmax, nbx)
    y = sin(x)/x
    plot(x,y,"bo-")
    integrale = 0
    for i in range(nbi):
        integrale +=  0.5*(x[i+1]-x[i])*(y[i+1]+y[i])
        # dessin du rectangle
        x_rect = [x[i], x[i], x[i+1], x[i+1], x[i]] # abscisses des sommets
        y_rect = [0   , y[i], y[i+1]  , 0     , 0   ] # ordonnees des sommets
        plot(x_rect, y_rect,"r")
    print("integrale = ", integrale)
    print("trapezoidale = ", trapezoidal(lambda x:sin(x)/x, 0.5,3*pi/2, 10))
    show()
    integrale = 1.1190693052
    h= 0.421238898038469
    trapezoidale = 1.11834427665
    avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print("trapezoidale = ", trapezoidal(lambda x:sin(x)/x, 0.5,3*pi/2, 9))
    j'ai la même valeur que intégrale :
    h= 0.4680432200427433
    trapezoidale = 1.1190693052
    Qui peut expliquer la différence entre la valeur d'intégrale et celle de trapezoidal ? un problème d'intervalles et de poteaux ?

    et au fait thenoob tu devais pas faire ton exercice de 1 à 3 ?
    De plus que je dois utiliser c'est celle la : intégral de 1 à 3 de sin x /x
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  11. #11
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Les deux méthodes suivantes sont a priori bonnes :

    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
    27
    28
    29
    30
    31
    32
    33
    import matplotlib.pyplot as plt
    import numpy as np
    x_min = 0.5
    x_max = 3*np.pi/2
    nb_x = 11
     
    x = np.linspace(x_min, x_max, nb_x)
    y = np.sin(x) / x
    plt.plot(x,y,"bo-")
     
    integrale= 0
    for i in range(nb_x-1):
        integrale += ((x[i+1]-x[i])/2)*(y[i]+y[i+1])
        x_rect = [x[i], x[i],x[i+1] , x[i+1], x[i]]
        y_rect = [0   , y[i],y[i+1] , 0     , 0   ]
        plt.plot(x_rect, y_rect,"r")
    print("Intégrale =", integrale)
     
    plt.show ()
     
    def f(x):
        return np.sin(x)/x
     
    def integrale_trapeze(f,a,b,n):
        i = 0
        pas=(b-a)/n
        integrale=0
        while i < n:
            integrale = integrale + (pas/2)*(f(a+i*pas)+f(a+(i+1)*pas))
            i = i+1
        return(integrale)
     
     print("Intégrale = ",integrale_trapeze(f,x_min,x_max,nb_x-1))
    Elles donnent toutes les deux 1.11834427665
    Pas d'aide par mp.

  12. #12
    Nouveau Candidat au Club
    Femme Profil pro
    etudiante
    Inscrit en
    Avril 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : etudiante

    Informations forums :
    Inscription : Avril 2015
    Messages : 3
    Points : 0
    Points
    0
    Par défaut
    OK merci beaucoup à tous !
    Vraiment un grand merci de votre implication

Discussions similaires

  1. Problème méthode des trapèzes en C++ pour débutant
    Par Andromedae dans le forum Débuter
    Réponses: 18
    Dernier message: 14/11/2014, 10h33
  2. double intégrale par la méthode des trapèzes
    Par sergy01 dans le forum MATLAB
    Réponses: 28
    Dernier message: 26/06/2012, 17h05
  3. Méthode des trapèzes
    Par solo12 dans le forum Fortran
    Réponses: 6
    Dernier message: 11/06/2011, 08h18
  4. méthode des trapèzes
    Par humanite dans le forum MATLAB
    Réponses: 12
    Dernier message: 10/01/2011, 21h09
  5. méthode des trapèzes
    Par suzanne1307 dans le forum Fortran
    Réponses: 3
    Dernier message: 15/03/2010, 15h12

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