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

Calcul scientifique Python Discussion :

Intégration simple d'une fonction f à plusieurs variables à l'aide de quad.


Sujet :

Calcul scientifique Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Intégration simple d'une fonction f à plusieurs variables à l'aide de quad.
    Bonjour.

    Je suis débutant en python. L'enseignement que je suis nous demande de faire des exercices, mais sans correction ni cours...
    Actuellement, j'essaie de faire le premier de ma liste : intégrer une fonction, à plusieurs variables, selon une de ses variables.

    Enoncé:
    Formule mathématique
    Intégration d’une fonction à un paramètre
    1. Définir la fonction f(x) en python en faisant appel au module de Scipy pour le calcul de
    l’intégral d’une fonction.
    2. Faire un graphe de la fonction f(x) dans l’intervalle −5 < x < 5.
    3. A l’aide de la méthode de Newton-Raphson (implémentée dans Scipy), déterminer numériquement le zéro de la fonction, c’est à dire le point x0 où f(x = x0) = 0.
    4. Trouver les points de maximum et minimum local de f.

    Voici le code que j'ai produit :

    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
     
    #importation  des bibliothèques
    import numpy as np
    from scipy.integrate import quad
     
    #définition de la fonction
    def f(x,y):
        return np.exp(-(x**2)*y)*(x + y**2) #fonction a intégrer, donnée dans l'énoncé.
     
    #conditions initiales ou paramètres
    x=1 # on fixe le paramètre x pour intégrer une première fois selon y.
     
    #programme
    A=quad(f,0,1,args=(x)) #intégration de f de 0 à 1 selon y en mettant x comme paramètre.
     
    print(A)               #présenter le résultat de l'intégration.
    Résultat :
    (1.0628844122267056, 1.1800387469692648e-14)
    #(Valeur de l'intégrale, erreur de calcul)


    J'ai essayé de faire la suite en changeant x en un intervalle plutôt qu'une valeur fixée, mais je me suis cassé les dents dessus. Je ne sais pas du tout comment m'y prendre. J'ai essayé une boucle, mais je n'arrive pas à avoir de lucidité pour la visualiser et la transcrire.

    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
    #importation  des bibliothèques
    import numpy as np
    from scipy.integrate import quad
     
    #définition de la fonction
    def f(x,y):
        return np.exp(-(x**2)*y)*(x + y**2) #fonction a integrer à l'aide de quad.
     
    #conditions initiales ou paramètres
    x=np.linspace(-5,5,11) # on pose un espace linéaire pour x allant de -5 à 5, avec 11 valeurs pour contenir
                            # un pas de 1. (il faut compter le zéro)
     
    #programme
    #A=quad(f,0,1,args=(x)) #intégration de f de 0 à 1 selon y en mettant x comme paramètre.
     
    for i in x:            # boucle pour intégrer f sur l'intervalle demandé.
        A[i]=quad(f,0,1,args=(i))
     
    print(A)  #présenter le résultat de l'intégration.
    Résultat :
    A[i]=quad(f,0,1,args=(i))

    TypeError: 'tuple' object does not support item assignment


    Voilà. Je suis bloqué et je commence à désespérer. C'est pour cela que je suis venu vers vous, car vous me semblez être de bons conseils sur ce forum.

    Bien à vous.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    A est un tuple, tu dois utiliser une liste pour faire cela.

    Et comme on ne voit nulle part dans ton code où est créé A ...

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour. Je vous remercie de prendre le temps de me répondre.
    Effectivement, A n'est pas défini, mais je ne sais pas si j'ai la bonne réflexion.
    Est-ce que je dois faire une boucle ? Est-ce que je dois définir une fonction ? Comment dois-je définir A en faisant appel à l'intervalle x?
    En réalité, je suis totalement perdu.

    En espérant ne pas vous déranger davantage.

Discussions similaires

  1. Réponses: 10
    Dernier message: 03/09/2011, 13h50
  2. Approcher une fonction réelle à plusieurs variables.
    Par kindyroot dans le forum Intelligence artificielle
    Réponses: 22
    Dernier message: 21/07/2008, 21h06
  3. Appel d'une fonction avec plusieurs variables
    Par midoparis dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 13/05/2008, 11h53
  4. Réponses: 2
    Dernier message: 23/11/2007, 11h33
  5. Réponses: 16
    Dernier message: 14/05/2007, 16h33

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