Abschnittsweise definierte Funktion

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Pumpkinpy
User
Beiträge: 10
Registriert: Freitag 26. Mai 2017, 11:45

Hallo zusammen ich bin es mal wieder.

Stehe gerade vor dem Problem, dass ich eine abschnittsweise definierte Funktion benutzen möchte.
was ich mit in etwa vorstelle ist eine Funktion die mit immer nur den benötigten Funktionsteil zurückgibt. Wieviele unterteilungen es gibt ist variabel, von daher ist die lösung mit den elif etwas ungünstig. Habt ihr da ne andere Möglichkeit? Möglich wäre es wohl auch über eine while-Schleife., was natürlich auch das problem mit der Anzahl der Schleifen nicht löst :

if:

Code: Alles auswählen

def func( (a, b, c, ...), (t_1, t_2, t_3, ...), t): 

if t<t_1:
    return(a)
    
elif t<t_2:
    return(b)

....
while:

Code: Alles auswählen

def func(a, b, c, ...), (t_1, t_2, t_3; ...), t)

while t<t_1:
    return(a)
    
while t_1<t<t_2:
    return(b)
    
....
Zuletzt geändert von Anonymous am Montag 29. Mai 2017, 11:18, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@Pumpkinpy: Was das ``while`` da bewirken soll ist mir nicht so ganz klar. Das ist doch nur ein kompliziert und verwirrend ausgedrücktes ``if``.

``return`` ist eine Anweisung und keine Funktion. Das sollte man deshalb auch nicht so schreiben als wäre es ein Funktionsaufruf.

Suchst Du eventuell `numpy.piecewise()`?

Ansonsten könntest Du auch eine ``for``-Schleife über die Grenzwerte und Funktionen schreiben.
Benutzeravatar
pillmuncher
User
Beiträge: 1482
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

@Pumpkinpy: Geht mir genauso wie BlackJack, auch ich verstehe nicht recht, was du erreichen willst.

Ich vermute aber, du könntest es mit einer Generator Function (AKA Co-Routine) oder mit Continuations lösen.

Oder du versuchst uns zu erklären, warum du so etwas programmieren möchtest. Siehe auch XY-Problem.
In specifications, Murphy's Law supersedes Ohm's.
Antworten