使用分段MAPLE 2018时,如何在列表的元素之间插入“和”(代替逗号)

时间:2018-12-12 12:01:42

标签: maple

我有一个表示特定表达式的不等式列表,现在我想在分段函数中使用这些列表元素。

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分别是表达式。

我怎么可能做到这一点?

2 个答案:

答案 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)

@ acer谢谢您的解决方案,

从昨天开始,我还在研究其他方法,该方法有点复杂(有点类似于您的方法),可以理解,并且像您一样紧凑和简单。

因为,列表的数量(list1,list2 ....)可以根据表达式而改变。我将这些列表组合到一个大列表bigList的子集中。术语是表达式列表

name

enter image description here

这也可以正常工作。如果有任何缺点或例外,请倾听 谢谢