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 :

Problème intégrale sur Python.


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 5
    Par défaut Problème intégrale sur Python.
    Bonjour, voila ça va faire pas mal de temps que je bloque sur un exercice python, le suivant:

    La probabilité que la norme du vecteur vitesse d'un atome du gaz soit comprise entre les valeurs 𝑣 et v+dv est donné par P(v) d(v)𝑣+𝑑𝑣est donneé par𝑃(𝑣)𝑑𝑣 où 𝑃(𝑣)est la fonction suivante:

    𝑃(𝑣)=(𝑚/2𝜋𝑘𝑇)^3/2*exp(−𝑚𝑣²/2𝑘𝑇)*4𝜋𝑣²
    Dans cette formule 𝑇 est la temperature absolue, 𝑚=𝐴×1.66×10−27𝐾𝑔 la masse d'un atome du gaz (pour de l'Hélium, A=4), et 𝑘=1.38×10−23𝐽.𝐾^−1 la constante de Boltzmann.

    Verifier numériquement que l'intégrale ∫∞0𝑃(𝑣)𝑑𝑣 vaut 1.

    Voilà ce que j'ai fait pour tenter de répondre à la question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from scipy.integrate import quad
    from math import*
     
    xmin=0
    xmax=inf
     
     
    def Boltzmann(v,A,T):
        P=(((A*1.66e-27)/(2*pi*1.38e-23*T))**3/2)*exp(-((1.66e-27*A)*(v**2))/(2*1.38e-23*T))*4*pi*v**2
        return P
     
    res, err=quad(Boltzmann,xmin,xmax,args=(A,T))
    print('norm',res)
    Cependant je ne trouve pas 1 et je ne comprends où j'ai bien pu me tromper, j'ai donc ouvert cette discussion pour que quelqu'un veuille bien m'expliquer comment résoudre ce problème s'il vous plaît.

  2. #2
    Membre confirmé
    Homme Profil pro
    Curieux
    Inscrit en
    Avril 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2020
    Messages : 114
    Par défaut
    Salut,

    commence par appeler ta fonction correctement, ou regarde le message d'erreur, puis je pense que tu as des trous dans la raquette aussi. Essaye de faire le calcule de ce que tu as écrit à la main et tu verras ce qu'il manque.

    Edit : Par à la main j'entends, regarde ce que tu lui passes comme arguments

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 5
    Par défaut
    Citation Envoyé par Aelurus_ Voir le message
    Salut,

    commence par appeler ta fonction correctement, ou regarde le message d'erreur, puis je pense que tu as des trous dans la raquette aussi. Essaye de faire le calcule de ce que tu as écrit à la main et tu verras ce qu'il manque.

    Edit : Par à la main j'entends, regarde ce que tu lui passes comme arguments
    Merci pour la réponse mais le problème c'est qu'il n'y a pas de message d'erreur étant donné que le programme me donne une valeur mais ce n'est pas la valeur attendu 1.

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut


    J'obtiens 2.0 !

    Vous êtes certain de la formule de calcul, de la position des parenthèses ?

    Je n'arrive pas à trouver cette formule sur le web, il y a des liens qui n'aboutissent pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def boltzmann(v, A, T):
        P = (((A*1.66e-27)/(2.0*np.pi*1.38e-23*T))**1.5) * \
            np.exp(-((1.66e-27*A)*(v**2.0))/(2.0*1.38e-23*T))*4.0*np.pi*v**2.0
        return P
     
     
    A = 4
    T = 473
    res, err = quad(boltzmann, -np.inf, np.inf, args=(A, T))
     
    print(res, err)  # 2.0000000000000004 6.660564238510888e-09

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 5
    Par défaut
    Bonjour, oui je pense que la formule est bonne de plus vous obtenez 2 parce que l'intégrale se fait de 0 à +inf normalement et pas de -inf à +inf comme vous l'avez fait. Sinon en utilisant votre programme de 0 à +inf je trouve bel et bien 1.
    Merci beaucoup je n'aurais pas trouvé seul !

  6. #6
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Oui, de 0 à np.inf c'est 1 ! N'oubliez pas de cliquer sur le bouton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def boltzmann(v, A, T):
        P = (((A*1.66e-27)/(2.0*np.pi*1.38e-23*T))**1.5) * \
            np.exp((-1.66e-27*A*v**2.0)/(2.0*1.38e-23*T))*4.0*np.pi*v**2.0
        return P
     
     
    A = 4
    T = 273
    res, err = quad(boltzmann, 0, np.inf, args=(A, T))
     
    print(res, err)  # 1.0 1.1056633735590314e-08

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

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

Discussions similaires

  1. problème programmation sur python
    Par o2pubcy9 dans le forum Général Python
    Réponses: 10
    Dernier message: 01/11/2017, 10h40
  2. Problème avec fonction tuple sur Python 3.4.1
    Par inconnito2 dans le forum Général Python
    Réponses: 4
    Dernier message: 28/12/2014, 12h57
  3. problème sur python 3.3
    Par bosskev62 dans le forum Général Python
    Réponses: 1
    Dernier message: 09/11/2014, 18h35
  4. Problème de Serpent sur Python
    Par NovaVI dans le forum Programmation multimédia/Jeux
    Réponses: 6
    Dernier message: 28/12/2013, 17h21
  5. [Débutant] Problème intégrale sur une Densite spectrale Pxx
    Par windsea dans le forum Signal
    Réponses: 3
    Dernier message: 03/04/2011, 18h15

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