Probleme pour tracer une fonction python

Fermé
jjsch21 Messages postés 2 Date d'inscription jeudi 24 septembre 2020 Statut Membre Dernière intervention 24 septembre 2020 - 24 sept. 2020 à 18:18
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 4 oct. 2020 à 19:54
Bonjour, j'essaye de tracer le graphe de ma fonction g définie ci dessous mais ça me met une erreur que je ne comprends pas... ma fonction marche mais c'est le traçage du graphe qui ne marche pas..

def fact(n):
if n<2:
return 1
else:
return n*fact(n-1)

def caga(a,x):
if x>0 and x<1 :
return (1/fact(a-1))*x**(a-1)
elif x>=1 :
return (1/fact(a-1))*np.exp(-x)
else :
return 0

caga(2,3)

x_grid = np.linspace (0,5,100)
plt.plot(x_grid,caga(a,x_grid))

ça me met : ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

lorsque je remplace par

def caga(a,x):
if x.any()>0 and x.any()<1 :
return (1/fact(a-1))*x**(a-1)
elif x.any()>=1 :
return (1/fact(a-1))*np.exp(-x)
else :
return 0

ça me met l'erreur suivante :
x and y must have same first dimension, but have shapes (100,) and (1,)

Je ne comprends vraiment pas.. Merci d'avance pour votre aide :)
A voir également:

5 réponses

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 24 sept. 2020 à 20:55
Bonsoir,

L'indentation étant importante en Python, peux-tu re poster ton code complet
(tu nous a donné juste un extrait )
avec les balises,
mode d'emploi ici :

https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
jjsch21 Messages postés 2 Date d'inscription jeudi 24 septembre 2020 Statut Membre Dernière intervention 24 septembre 2020
24 sept. 2020 à 21:49
Bonsoir,
Merci pour votre réponse, j'essaie de vous joindre le code comme vous me l'avez indiqué..

import numpy as np
import scipy as sp
from scipy.stats import norm, expon, uniform, gamma
import matplotlib.pyplot as plt

def fact(n):
    if n<2:
        return 1
    else:
        return n*fact(n-1)
    

def caga(a,x):
    if x>0 and x<1 :
        return (1/fact(a-1))*x**(a-1)
    elif x>=1 :
        return (1/fact(a-1))*np.exp(-x)
    else :
        return 0

a=0.7  # on prend un a entre 0 et 1
x_grid = np.linspace (0,5,100)
plt.plot(x_grid,caga(a,x_grid))
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
25 sept. 2020 à 18:45
Super, tu as eu ta réponse sur le forum Developpez.com !
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
27 sept. 2020 à 12:47
Il n'y a plus qu'à fermer cet appel ....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
4 oct. 2020 à 19:54
Et donc tu peux marquer cet appel comme résolu !
0