另一个问题是,添加到Nicolas的答案中,如果你想分段使用,那么funclist的每个元素都必须是可调用的.您更正的代码看起来像
t = np.arange(-2,2,.01)
f1 = lambda t: (t+2)**3
f2 = lambda t: (-t)**3
f3 = lambda t: (t)**3
f4 = lambda t: -(2-t)**3
fx = np.piecewise(t, [(t< -1)*(t>=-2), (t <= 0) * (t>=-1), (t>0) * (t<1),(t>=1) * (t<=2)], [f1,f2,f3,f4])
plot(t,fx)
相反,你可以使用选择
t = np.arange(-2,2,.01)
f = lambda x: x**3
fx = np.select([(t< -1)*(t>=-2), (t <= 0) * (t>=-1), (t>0) * (t<1),(t>=1) * (t<=2)], [f(t+2),f(-t),f(t),-f(2-t)])
plot(t,fx)
此外,select允许您通过将默认值传递给参数default来设置定义间隔之外的默认值.如果你想用你的间隔坚持范围(-10,10),你可能需要它.