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 :

Fonctions par partie


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné

    Homme Profil pro
    Technicien
    Inscrit en
    Août 2013
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 440
    Par défaut Fonctions par partie
    Bonjour,

    J'aimerais créer un graphique où je représente une courbe U dont l'équation est soit une fonction f soit une fonction g selon la valeur prise par la courbe U
    (la fonction f correspond à une équation de charge d'un condensateur de type E*(1-exp(-t/tau)) alors que g correspond à une décharge (de type E*exp(-t/tau))

    J'ai testé ceci (dans un premier pour tester l'afficahge selon la valeur du temps) mais j'obtiens une erreur (The truth value of an array with more than one element is ambiguous. Use a.any() or a.all())

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    import math
    from numpy import arange
    import numpy as np
    import matplotlib.pyplot as plt
     
    def Ucharge(t,tau):
        return E*(1-np.exp(-t/tau))
     
    def Udecharge(t,tau):
        return E*np.exp(-t/tau)
     
    t0, tf=0.,200
    N=1000
    E=10
     
    t=np.linspace(t0,tf,N+1)
     
    R1=10e3
    C=1e-3
     
    tau1=R1*C
    print(tau1)
     
    R2=10
    tau2=R2*C
    print(tau2)
     
    if t<100:
        Uc=Ucharge(t,tau1)
     
    plt.figure
    plt.plot(t,Uc)
    Si quelqu'un pouvait m'aider, ce serait sympa
    [Nouveau] Envie de tracer des circuits électriques : essayez le package LaTeX CircuiTikZ

    Pour créer une belle table des matières sur LibreOffice - N'oubliez pas de consulter les FAQ en cas de question !

    Envie de se lancer dans l'aventure Arduino : allez faire un tour sur ce cours.


    Ma réponse vous a plu ? Un petit vote serait sympa

  2. #2
    Membre éclairé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mars 2023
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2023
    Messages : 33
    Par défaut
    L'erreur "The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()" se produit car la condition t < 100 est appliquée à l'ensemble de l'array t, qui contient plus d'un élément.

    Il n'est pas possible de traiter l'ensemble de l'array t comme une seule valeur booléenne, ce qui crée une ambiguïté. Vous pouvez utiliser la fonction np.where() pour créer un nouvel array en fonction de la condition t<100 :

    Cela crée un nouvel array Uc avec la même taille que t, où chaque élément est égal à Ucharge(t, tau1) si la condition t<100 est vraie, sinon l'élément est égal à 0.

    Ensuite, vous pouvez tracer Uc en utilisant plt.plot(t, Uc).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    import math
    from numpy import arange
    import numpy as np
    import matplotlib.pyplot as plt
     
    def Ucharge(t,tau):
        return E*(1-np.exp(-t/tau))
     
    def Udecharge(t,tau):
        return E*np.exp(-t/tau)
     
    t0, tf = 0., 200
    N = 1000
    E = 10
     
    t = np.linspace(t0, tf, N+1)
     
    R1 = 10e3
    C = 1e-3
     
    tau1 = R1*C
    print(tau1)
     
    R2 = 10
    tau2 = R2*C
    print(tau2)
     
    Uc = np.where(t<100, Ucharge(t, tau1), 0)
    plt.figure()
    plt.plot(t, Uc)
    plt.show()
    Notez que j'ai également ajouté plt.show() à la fin pour afficher le graphique tracé.

Discussions similaires

  1. [VB.Net] Problème appel fonction par un bouton
    Par balibo dans le forum ASP.NET
    Réponses: 4
    Dernier message: 25/11/2005, 10h48
  2. Réponses: 4
    Dernier message: 28/09/2005, 09h19
  3. Propriétés et fonctions par défaut
    Par Arrown dans le forum Langage
    Réponses: 3
    Dernier message: 21/06/2005, 16h38
  4. creation d'une fonction par l'utilisateur
    Par michelk dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 15/03/2005, 09h53
  5. Réponses: 10
    Dernier message: 03/03/2005, 13h36

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