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

Calcul scientifique Python Discussion :

Modifier une fonction sympy avec if/else


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Branleur
    Inscrit en
    Août 2021
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Branleur

    Informations forums :
    Inscription : Août 2021
    Messages : 11
    Par défaut Modifier une fonction sympy avec if/else
    Boujour.
    J'ai une fonction g = x^3
    J'aimerais créer une autre fonction h qui se comporte comme la premiere quand celle ci est supérieure à 0. Quand la fonction g n'est pas superieure à zéro j'aimerais que h se comporte comme -(1/g)-1

    Je ne sais pas trop comment m'y prendre.

    Merci à vous.

  2. #2
    Membre éprouvé
    Inscrit en
    Juillet 2013
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 80
    Par défaut
    Bonjour,

    Sur l'aspect purement mathématique, ça n'a pas vraiment de sens car ont sait que g(x)>0 pour tout x>0 ; il suffirait donc de faire une condition sur x, et non sur g(x)...

    Sur l'aspect code, ça donnerait quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def g(x) : return x**3
    def h(x) : return g(x) if g(x)>0 else -(1/g(x))-1
    Notez également qu'il y aura une erreur pour x=0...

  3. #3
    Membre régulier
    Homme Profil pro
    Branleur
    Inscrit en
    Août 2021
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Branleur

    Informations forums :
    Inscription : Août 2021
    Messages : 11
    Par défaut
    Ok.
    Comment je peux plot la fonction apres? J'ai pas l'habitude d'utiliser def
    .

  4. #4
    Membre éprouvé
    Inscrit en
    Juillet 2013
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 80
    Par défaut
    La notation "def" permet de créer une fonction que vous pouvez appeler (par le nom que vous lui donnez). Dans mon exemple, ça donnerait quelque chose comme ça :
    Pour "plotter" la fonction vous pouvez utiliser la librairie matplotlib. Exemple (sans Numpy) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import matplotlib.pyplot as plt
     
    x = [i/10 for i in range(-100,100)] # Create x array (from -10 to 10)
    y = [h(xi) if xi else 0 for xi in x] # Create y array, avoid ZeroDivisionError on function h
     
    plt.plot(x,y)
    plt.show()
    Notez que j'ai du rajouter une sécurité dans la règle de création du vecteur y ; il aurait été préférable de l'inclure dans la fonction h

  5. #5
    Membre régulier
    Homme Profil pro
    Branleur
    Inscrit en
    Août 2021
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Branleur

    Informations forums :
    Inscription : Août 2021
    Messages : 11
    Par défaut
    Le probleme c'est que je ne peux utiliser que sympy.

    Si j'éssaye de plot une fonction faite avec def sur sympy comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    from sympy import *
    from sympy.abc import x
     
    def g():
        x**3
     
    plot(g())
    ça me donne cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: 'NoneType' object is not iterable

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par Singezare Voir le message
    Le probleme c'est que je ne peux utiliser que sympy.
    ok, mais si vous ne connaissez pas trop sympy il faut déjà ouvrir un tuto., faire des recherches sur Internet pour voir comment on définit une fonction continue par morceaux avec Piecewise (par exemple).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 7
    Dernier message: 05/05/2006, 09h48
  2. [PHP-JS] une fonction php avec parametres javascript
    Par kagura dans le forum Langage
    Réponses: 1
    Dernier message: 02/03/2006, 18h10
  3. Apelle d une fonction js avec la valeur d'une listbox
    Par echecetmat dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 15/02/2005, 16h53
  4. Creation d'une fonction temporaire avec droit datareader
    Par Bjuice2 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/10/2004, 14h26
  5. Modifier une partion ntfs avec Disk druid
    Par Sébastien dans le forum Administration système
    Réponses: 5
    Dernier message: 24/09/2003, 14h58

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