Ich habe eine Anwendung, in der ich eine stückweise Funktion definieren muss, IE, f (x) = g (x) für [x in einem Bereich], f (x) = h (x) für [x in einigen anderer Bereich], ... usw.
Gibt es einen schönen Weg, dies in Julia zu tun? Ich würde lieber nicht, wenn-sonst, weil es scheint, dass ich jeden Bereich für große Werte von x überprüfen müsste. Die Art, wie ich dachte, war, ein Array von Funktionen und ein Array von Grenzen / Bereichen zu konstruieren, dann, wenn f (x) aufgerufen wird, eine binäre Suche nach den Bereichen durchzuführen, um den passenden Index zu finden und die entsprechende Funktion zu verwenden (IE, h (x), g (x) usw.
Es scheint, als ob eine solche mathematisch freundliche Sprache eine gewisse Funktionalität dafür hätte, aber die Dokumentation erwähnt auf diese Weise nicht stückweise. Hoffentlich hat jemand anderes dies bedacht, danke!
Ich habe versucht, eine piecewise
Funktion für Julia
zu implementieren, und das ist das Ergebnis:
Warum nicht so etwas?
%Vor% Hier haben Sie eine Liste von (sortierten) Haltepunkten, und Sie können den optimierten searchsortedfirst
verwenden, um den ersten Haltepunkt b
größer als x
zu finden. Der Randfall, wenn kein Haltepunkt größer als x
ist, wird ebenfalls entsprechend behandelt, da length(breakpts)+1
zurückgegeben wird, so dass b
der korrekte Index in den Vektor der Funktionen f
ist.
Tags und Links julia-lang piecewise