Probleme pour tracer une fonction python

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

  1. 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))