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