在Julia中定义分段函数

use*_*051 9 piecewise julia

我有一个应用程序,我需要定义一个分段函数,IE,f(x)= g(x)为[x在某个范围内],f(x)= h(x)为[x在某些其他范围] ,......等

在朱莉娅有一个很好的方法吗?我宁愿不使用if-else,因为我似乎必须检查x的大值的每个范围.我想的方法是构造一个函数数组和一个边界/范围数组,然后当调用f(x)时,对范围进行二元搜索以找到适当的索引并使用相应的函数(IE, h(x),g(x)等

似乎这种数学友好的语言可能具有一些功能,但文档没有以这种方式分段提及.希望其他人给出了一些想法,谢谢!

小智 6

使用 Heaviside 函数,您可以执行间隔函数:

function heaviside(t)
   0.5 * (sign(t) + 1)
end
Run Code Online (Sandbox Code Playgroud)

function interval(t, a, b)
   heaviside(t-a) - heaviside(t-b)
end

function piecewise(t)
   sinc(t) .* interval(t,-3,3) + cos(t) .* interval(t, 4,7)
end
Run Code Online (Sandbox Code Playgroud)

我认为它也可以实现一个子类型 Interval,它会更优雅