Du scilab au python

Diasmine
Modifié (May 2022) dans Informatique théorique
Bonjour à tous
Mon directeur de mémoire m'a passé un code scilab pour résoudre un système d'EDP (Fitzhugh Nagumo) pour que je le traduise en Python.
Il y a une fonction devant laquelle je bonne (qui est ma condition initiale):
function y=e(t)
//       --------
e0 = ((t<=l)*1).*((t>=0)*1) * h // Créneau entre 0 et l, de hauteur h
y = e0
return;
Voilà, je n'arrive pas trop à voir ce que fait cette fonction, ni comment la traduire en Python. Si quelqu'un a la réponse, cela m"aiderait grandement !

Réponses

  • Pour Python ou Scilab, $a\leq b$ est un nombre qui vaut soit 1, soit 0. Il vaut 1 lorsque $a\leq b,$ et $0$ sinon. Je te laisse alors comprendre pourquoi tu obtients $e(t)=\begin{cases}h&\text{ si } 0\leq t\leq 1\\ 0&\text{ sinon}\end{cases}$
  • Merci beaucoup!!
  • bisam
    Modifié (May 2022)
    En Python, on peut définir la fonction ainsi (à condition tout de même que "h" soit une variable globale définie auparavant) :
    def e(t):
        return h if t>=0 and t<=1 else 0
    On peut même le faire en une ligne :
    e = lambda t: h if t>=0 and t<=1 else 0
    mais c'est moins lisible.
  • Ou même :
    e=lambda t:h*(0<=t<=1)

    Algebraic symbols are used when you do not know what you are talking about.
            -- Schnoebelen, Philippe
  • Diasmine
    Modifié (May 2022)
    Merci à tous !
    En python,
    def e(t):
        return (t<=l)*(t>=0)*h
    marche très bien.
Connectez-vous ou Inscrivez-vous pour répondre.