使用分段 MAPLE 2018 时如何在列表元素之间插入 'and'(代替逗号)
how to insert 'and'(in place of comma) in between elements of a list, when using piecewise MAPLE 2018
我有一个表示特定表达式的不等式列表,现在我想在分段函数中使用这些列表元素。
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分别是表达式。
我怎么可能做到这一点??
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
@acer 谢谢解答,
从昨天开始我也在研究其他方法,它有点复杂(有点类似于你的方法)理解起来和你的一样紧凑和简单。
因为,列表(list1、list2....)的数量可以根据表达式改变。我已将这些列表组合成一个大列表 bigList 的子集。术语是表达式列表
biglist :=[list1,list2,list3];
Terms :=[Expr1,Expr2,Expr3]
conditions := seq([apply(`and`, op(bigList[i]))], i = 1 .. nops(bigList));
sequence := seq([conditions[i][1], Terms[i]], i = 1 .. nops([conditions]));
pieceWiseResult := piecewise(seq(op(sequence[i]), i = 1 .. nops([sequence])));
这也符合预期。如果有任何缺点或例外乐意倾听
谢谢
我有一个表示特定表达式的不等式列表,现在我想在分段函数中使用这些列表元素。
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分别是表达式。
我怎么可能做到这一点??
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
@acer 谢谢解答,
从昨天开始我也在研究其他方法,它有点复杂(有点类似于你的方法)理解起来和你的一样紧凑和简单。
因为,列表(list1、list2....)的数量可以根据表达式改变。我已将这些列表组合成一个大列表 bigList 的子集。术语是表达式列表
biglist :=[list1,list2,list3];
Terms :=[Expr1,Expr2,Expr3]
conditions := seq([apply(`and`, op(bigList[i]))], i = 1 .. nops(bigList));
sequence := seq([conditions[i][1], Terms[i]], i = 1 .. nops([conditions]));
pieceWiseResult := piecewise(seq(op(sequence[i]), i = 1 .. nops([sequence])));
这也符合预期。如果有任何缺点或例外乐意倾听 谢谢