基于加法运算符MAPLE进行子表达式

时间:2018-09-27 14:20:08

标签: 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, "+")
     ["a*b*c", "a*y", "c*z", "x"]
InertForm:-Parse(output[1])

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

但是,我的兴趣是将其表达为表达式。有可能吗?

1 个答案:

答案 0 :(得分:2)

您的问题有输入但没有输出。您应注意,分配给 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]

您是问所有这些(有点相关)问题的同一个家伙吗?还是参加相同的课程? Q1 Q2 Q3 Q4 如果是这样,您能告诉使用您真正要完成的工作吗?