создавать подвыражения на основе оператора сложения (+) MAPLE - PullRequest
0 голосов
/ 27 сентября 2018

Произвольное выражение be

test := a*b*c+x+a*y+c*z;

output := SomeCommand(test, `+`);
output
      [a*b*c,x,a*y,c*z];

Есть ли какая-либо команда, чтобы сделать это как выражение.

Я сделал это, преобразовав его в строку и используя команду StringSplit.преобразование каждого элемента из списка в выражение и в цикл for.

test := convert(test, string)
with(StringTools):
output:=StringSplit(test, "+")
     ["a*b*c", "a*y", "c*z", "x"]
InertForm:-Parse(output[1])

value(output[1])
    a*b*c

, но я заинтересован в том, чтобы сделать это как выражение.есть ли возможность ??

1 Ответ

0 голосов
/ 28 сентября 2018

У вас вопрос есть ввод, но нет вывода.Вы должны заметить, что выражение , которое вы присвоили test , может иметь свои адденты, сохраненные в другом порядке, в котором они вводятся во input .

Можно выделить суммы и поместить их в список.Очень простой код для этого приведен ниже.

Порядок, в котором дополнения появляются в списке, соответствует порядку их внутреннего хранения.

restart;

f := proc(expr)
   if type(expr, `+`) then
      [op(expr)];
   else
      expr;
   end if;
end proc:

test := a*b*c+x+a*y+c*z;

             test := a b c + a y + c z + x

f( test );
                  [a b c, a y, c z, x]

Вы тот же самый парень, которыйзадал все эти (несколько связанные) вопросы?Или пройти тот же курс? Q1 Q2 Q3 Q4 Если да, то можете ли вы просто сказать, что вы действительно пытаетесь достичь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...