как вставить 'и' (вместо запятой) между элементами списка, при использовании кусочно MAPLE 2018 - PullRequest
0 голосов
/ 12 декабря 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 являются соответствующими выражениями.

как я мог бы достичь этого ??

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

@ 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])));

enter image description here

Это также работает нормально, как и ожидалось.Если есть какие-либо недостатки или исключения, рад выслушать Спасибо

0 голосов
/ 12 декабря 2018
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
...