Python: modifier le resultat d'une fonction.

Discutez d'informatique ici !
Avatar de l’utilisateur
lazare
Membre Relatif
Messages: 283
Enregistré le: 11 Mai 2020, 23:16

Python: modifier le resultat d'une fonction.

par lazare » 29 Aoû 2021, 14:09

Bonjour.

J'ai une fonction f(x) sur python j'aimerais faire que si son résultat est superieur à 0 la fonction reste la même mais si le resulat est inferieur à 0 je voudrait que la fontion devienne

Quels outils je pourais utiliser ?

Merci à vous.
Voici mon opinion : je pense que l'éducation obligatoire centralisée est infestée de pervers narcissiques ainsi que l'essemble du systeme administratif français. Je suis complotiste.



Avatar de l’utilisateur
lazare
Membre Relatif
Messages: 283
Enregistré le: 11 Mai 2020, 23:16

Re: Python: modifier le resultat d'une fonction.

par lazare » 29 Aoû 2021, 15:32

Voila ce que j'ai tenté pour l'instant:

Code: Tout sélectionner
from sympy import *
from sympy.abc import x

x= Symbol('x')

a = x**3

if a > 0:
  a = a
else:
  a = 1/a

plot(a)


ça me donne ça:

TypeError: cannot determine truth value of Relational
Voici mon opinion : je pense que l'éducation obligatoire centralisée est infestée de pervers narcissiques ainsi que l'essemble du systeme administratif français. Je suis complotiste.

GaBuZoMeu
Habitué(e)
Messages: 4895
Enregistré le: 05 Mai 2019, 11:07

Re: Python: modifier le resultat d'une fonction.

par GaBuZoMeu » 29 Aoû 2021, 17:37

Que voudrais-tu exactement ? Une procédure qui prend en entrée une fonction et qui retourne la fonction modifiée ?

Avatar de l’utilisateur
lazare
Membre Relatif
Messages: 283
Enregistré le: 11 Mai 2020, 23:16

Re: Python: modifier le resultat d'une fonction.

par lazare » 29 Aoû 2021, 23:29

GaBuZoMeu a écrit:Que voudrais-tu exactement ? Une procédure qui prend en entrée une fonction et qui retourne la fonction modifiée ?


Oui. La meme chose qu'éssaye de faire mon script

Code: Tout sélectionner
a = x**3

if a > 0:
  a = a
else:
  a = 1/a
Voici mon opinion : je pense que l'éducation obligatoire centralisée est infestée de pervers narcissiques ainsi que l'essemble du systeme administratif français. Je suis complotiste.

Avatar de l’utilisateur
lazare
Membre Relatif
Messages: 283
Enregistré le: 11 Mai 2020, 23:16

Re: Python: modifier le resultat d'une fonction.

par lazare » 30 Aoû 2021, 15:29

GaBuZoMeu a écrit:Que voudrais-tu exactement ? Une procédure qui prend en entrée une fonction et qui retourne la fonction modifiée ?


Enfin oui, pour reformuler:
J'ai aurais besoin d'une deuxieme fonction qui change la première en fonction si son image est sperieure ou pas à 0
Voici mon opinion : je pense que l'éducation obligatoire centralisée est infestée de pervers narcissiques ainsi que l'essemble du systeme administratif français. Je suis complotiste.

Avatar de l’utilisateur
lazare
Membre Relatif
Messages: 283
Enregistré le: 11 Mai 2020, 23:16

Re: Python: modifier le resultat d'une fonction.

par lazare » 31 Aoû 2021, 01:47

trouvé

Code: Tout sélectionner
from sympy import *

x = Symbol('x')

g = x**3

h = Piecewise((g, x>0), (1/g, True))

plot(h, ylim=(-10, 10))
Voici mon opinion : je pense que l'éducation obligatoire centralisée est infestée de pervers narcissiques ainsi que l'essemble du systeme administratif français. Je suis complotiste.

Avatar de l’utilisateur
lazare
Membre Relatif
Messages: 283
Enregistré le: 11 Mai 2020, 23:16

Re: Python: modifier le resultat d'une fonction.

par lazare » 31 Aoû 2021, 10:48

Ah non en fait ça marche pas.
Voici mon opinion : je pense que l'éducation obligatoire centralisée est infestée de pervers narcissiques ainsi que l'essemble du systeme administratif français. Je suis complotiste.

GaBuZoMeu
Habitué(e)
Messages: 4895
Enregistré le: 05 Mai 2019, 11:07

Re: Python: modifier le resultat d'une fonction.

par GaBuZoMeu » 31 Aoû 2021, 19:57

Une possibilité :

Code: Tout sélectionner
def a(x) :
    if x >=0 : return x
    else : return 1/x

f = lambda x : x**3

g = lambda x : a(f(x))


autre possibilité avec le a(x) défini ci-dessus

Code: Tout sélectionner
def truquer(f) :
    g = lambda x : a(f(x))
    return g

g = truquer(f)

Avatar de l’utilisateur
lazare
Membre Relatif
Messages: 283
Enregistré le: 11 Mai 2020, 23:16

Re: Python: modifier le resultat d'une fonction.

par lazare » 02 Sep 2021, 00:34

J'ai éssayé avec ça et ça marche:

Code: Tout sélectionner
from sympy import *
x = Symbol('x')

g = x**3

h = Piecewise((g, g>0), (1/g, True))
         
plot(h, ylim=(-10, 10))
Voici mon opinion : je pense que l'éducation obligatoire centralisée est infestée de pervers narcissiques ainsi que l'essemble du systeme administratif français. Je suis complotiste.

Cliffe
Membre Rationnel
Messages: 967
Enregistré le: 12 Juin 2012, 15:25

Re: Python: modifier le resultat d'une fonction.

par Cliffe » 23 Sep 2021, 07:55

Tu peux utiliser un décorateur :

https://onlinegdb.com/dfhsJAn7r

patrick28
Messages: 6
Enregistré le: 24 Déc 2018, 12:44

Re: Python: modifier le resultat d'une fonction.

par patrick28 » 03 Déc 2021, 18:07

Bonjour,
Sans rentrer dans les décorateurs, tu peux mettre la fonction f en paramètre d'entrée d'une fonction g.
Code: Tout sélectionner
def g(f,x):
   if f(x) >=0:
      return f(x)
   else:
      return 1/f(x)


tu peux tester avec une fonction f, comme
Code: Tout sélectionner
 def f(x):
   return x*x -4


En shell:
Code: Tout sélectionner
>>> g(f,-1)
-0.3333333333333333
>>> g(f,7)
45
>>>


La fonction g vérifie, il me semble les conditions ...(après je ne sais pas ce que tu souhaites faire avec une telle fonction ....)
Patrick, professeur en maths, et informatique (spécialité NSI)
Cours maths, informatique en Eure-Et-Loir, Chartres, Châteaudun
Cours en Visioconférence (en ligne) (France) : https://cours-visio.fr/

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : jeje56 et 1 invité

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite