Probleme pour tracer une fonction python

Signaler
Messages postés
2
Date d'inscription
jeudi 24 septembre 2020
Statut
Membre
Dernière intervention
24 septembre 2020
-
Messages postés
426
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
15 octobre 2020
-
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 :)

5 réponses

Messages postés
426
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
15 octobre 2020
60
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
Messages postés
2
Date d'inscription
jeudi 24 septembre 2020
Statut
Membre
Dernière intervention
24 septembre 2020

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))
Messages postés
426
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
15 octobre 2020
60
Super, tu as eu ta réponse sur le forum Developpez.com !
Messages postés
426
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
15 octobre 2020
60
Il n'y a plus qu'à fermer cet appel ....
Messages postés
426
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
15 octobre 2020
60
Et donc tu peux marquer cet appel comme résolu !