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

Exercices Python Discussion :

Exercice sur fsolve de scipy


Sujet :

Exercices Python

  1. #1
    Nouveau membre du Club Avatar de Youyayouyou
    Femme Profil pro
    Étudiant
    Inscrit en
    mai 2020
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2020
    Messages : 41
    Points : 25
    Points
    25
    Par défaut Exercice sur fsolve de scipy
    Bonjour,

    Je suis en train de faire un exercice sur scipy et je ne comprends pas l'erreur que j'ai faite:

    Voici l'exercice:
    Nom : aide td.JPG
Affichages : 60
Taille : 47,8 Ko

    Voici mon code:

    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
    from scipy import linalg 
     
    ##Question 1:
    def f(x):
        M = np.array([[1, 2*x - 3, 3] , [-2, -1, x] , [3, 2, 1]]) 
     
        return linalg.det(M) #La fonction retourne le déterminant de M
     
     
    ##Question 2:
    y = np.linspace (-3, 5, 1000) 
     
    #On crée une liste nommée ff qu'on remplit avec les images de y par la fonction f
     
    ff=[]
    for i in y:
        ff.append(f(i))
     
    plt.plot(y,ff)
    plt.title("Tracé de f dans l'intervalle [-3,5]")
    plt.xlabel("x")
    plt.ylabel("f(x)")
     
     
    ## Question 3:
    #Les zéros:
    #Imporation du module fsolve:
    from scipy.optimize import fsolve
     
    zeros = fsolve(f,[-3,5])
    et là il m'affiche :
    ValueError: object arrays are not supported
    Merci d'avance et bonne journée

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    août 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2010
    Messages : 627
    Points : 1 118
    Points
    1 118
    Par défaut
    Salut,

    fsolve() envoie à f() un array de la même taille que celle de l'argument x0. Or la fonction f n'accepte pas ce type car numpy n'est pas en mesure de calculer le déterminant d'un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mat = np.array([
        [1, 2*[0, 1], 3],
        [0, 0, 1],
        ])
    Il y a plusieurs façon de résoudre le problème :
    1. Modifier la fonction f()
    2. Créer une fonction intermédiaire
    3. Utiliser une fonction jetable via l'emploi de lambda


    1-
    Pour moi pas la bonne approche, mais ce serait quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def f(x):
        _x = x[0]
        mat = np.array([[1, 2*_x - 3, 3] , [-2, -1, _x] , [3, 2, 1]]) 
        return linalg.det(mat)
    2-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def obj_func(x):
        """Objective function : fonction a pour laquelle on cherche les racines"""
        return f(x[0])
     
    zeros = fsolve(obj_func, 0.0)
    3-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    zeros = fsolve(lambda x: f(x[0]), 0.0)
    Dans tous les cas, il définir un nombre comme valeur de départ (argument x0 de fsolve), pas les bornes. D'ailleurs cette fonction n'accepte pas de bornes. Il faut savoir à l'avance à peu près où se trouvera la racine.

    J

  3. #3
    Nouveau membre du Club Avatar de Youyayouyou
    Femme Profil pro
    Étudiant
    Inscrit en
    mai 2020
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2020
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    Aaahh ouiiii je comprends très bien!!

    Je vous remercie énormément pour votre réponse détaillée et votre aide

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

Discussions similaires

  1. exercice sur les matrices
    Par massimo dans le forum MATLAB
    Réponses: 3
    Dernier message: 22/03/2007, 17h20
  2. besoin d aide sur un exercice sur les pointeurs
    Par azumachakib69 dans le forum C
    Réponses: 3
    Dernier message: 28/12/2006, 01h16
  3. Exercice sur les tableaux
    Par IDE dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 06/11/2006, 19h33
  4. Besoin d'aide pour un exercice sur les registres
    Par zakuza dans le forum Assembleur
    Réponses: 5
    Dernier message: 14/04/2006, 14h23
  5. Réponses: 4
    Dernier message: 28/07/2005, 16h22

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