Symbolic math 基于加法(+;)运算符MAPLE生成子表达式

Symbolic math 基于加法(+;)运算符MAPLE生成子表达式,symbolic-math,maple,Symbolic Math,Maple,任意表达 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

任意表达

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

但是,我的兴趣是把它作为一个表达式来完成。有没有可能???

你的问题有输入,但没有输出。您应该注意到,分配给test的表达式的加数存储顺序可能与在输入中键入的顺序不同

可以从一个和的加数中选取,并将它们放入一个列表中。下面是非常简单的代码

加数在列表中的显示顺序与它们在内部的存储顺序相匹配

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]
你是问过所有这些(有些相关)问题的同一个人吗?还是走同样的路? 如果是这样的话,你能告诉我们你真正想要完成什么吗