我有一个表示特定表达式的不等式列表,现在我想在分段函数中使用这些列表元素。
list1 :=[a < 0, c < 0, -2*k*a < b];
list2 :=[0 < c, a < 0, b < -2*k*a];
list3 :=[0 < a, b < -2*k*a, c < 0];
对于每个列表,都有一个要显示的表达式,我的想法是使用分段函数如下所示
piecewise(a < 0 and c < 0 and -2*k*a < b, expr1, 0 < c and a < 0 and b < -2*k*a, expr2, 0 < a and b < -2*k*a and c < 0, expr3)
expr1,expr2,expr3分别是表达式。
我怎么可能做到这一点?
答案 0 :(得分:2)
restart;
list1 :=[a < 0, c < 0, -2*k*a < b]:
list2 :=[0 < c, a < 0, b < -2*k*a]:
list3 :=[0 < a, b < -2*k*a, c < 0]:
您可以对and
使用所谓的前缀形式(运算符形式),但是请注意,这需要在其周围加上一个左引号(因为它是语言关键字)。
`and`(op(list1));
a < 0 and c < 0 and -2 k a < b
因此piecewise
的构造可以类似,
allconds := [list1, list2, list3]:
allexpr := [expr1, expr2, expr3]:
piecewise( seq( op( [ `and`(op(allconds[i])),
allexpr[i] ] ),
i = 1 .. nops(allconds) ) );
/ expr1 a < 0 and c < 0 and -2 k a < b
|
< expr2 0 < c and a < 0 and b < -2 k a
|
\ expr3 0 < a and b < -2 k a and c < 0
答案 1 :(得分:1)