为maple设置简化规则

时间:2016-08-16 12:55:11

标签: maple simplify

我想为一个符号定义一个规则,比如说“a”,例如:$ a ^ 3 = b a ^ 2 + c a + d $并强制枫木来化解我的所有符号表达式包含$ a $的表达式,其表达式仅包含$ a $的权限。我试过“applyrule”,但即使是$ a ^ 4 $枫似乎也无法做到。有没有办法强制这种简化规则?

1 个答案:

答案 0 :(得分:1)

您可以使用使用边关系进行简化来实现此目的,这意味着使用simplify命令将规则显示在特定形式的可选参数中。

例如,

restart;

rule:=a^3=b*a^2+c*a+d:

simplify(a^2, {rule});

                                           2
                                          a

simplify(a^3, {rule});

                                     2
                                    a  b + a c + d

simplify(a^4, {rule});

                              2       2
                            (b  + c) a  + (b c + d) a + b d

我们可以使用algsubs来证明以前结果的正确性。请注意,algsubs可能会多次应用,以实现这一目标。

algsubs(rule, a^4);

                                    3      2
                                   a  b + a  c + a d

algsubs(rule, %);

                              2       2
                            (b  + c) a  + (b c + d) a + b d

ans1 := simplify(a^7, {rule}):

ans2 := algsubs(rule, algsubs(rule, algsubs(rule, algsubs(rule, a^7)))):

normal(ans1 - ans2);

                                           0

请注意,使用边关系的简化也适用于不仅仅是多项式的表达式(在这种情况下,使用algsubs来获得相同的效果会更加困难)。

expr := sin(a^4) + a^3 + sqrt(a^7);

                                         4     3     7 1/2
                            expr := sin(a ) + a  + (a )

simplify(expr, {rule}):

lprint(%);

               b*a^2+c*a+d+sin((b^2+c)*a^2+(b*c+d)*a+b*d)+
               ((b^5+4*b^3*c+3*b^2*d+3*b*c^2+2*c*d)*a^2+
               (b^4*c+b^3*d+3*b^2*c^2+4*b*c*d+c^3+d^2)*
               a+d*(b^4+3*b^2*c+2*b*d+c^2))^(1/2)
相关问题