如何使用maple来简化涉及arccos和cos的trig表达式?

时间:2017-07-14 14:41:55

标签: trigonometry symbolic-math maple simplification

我无法说服maple简化复杂的trig表达式。看来瓶颈的是,我不知道如何告诉枫可以简化表达式,如:

arccos(cos(x))

进入

x

相反,如果我发出:

simplify(arccos(cos(x)));

我得到了

arccos(cos(x));

我应该使用一组assume吗?我的实际表达式要复杂得多,所以我更喜欢通用的解决方案,其中arccos和cos中的表达式可能都是复杂的表达式。

更新

这是更复杂的simplify示例,其中出现了这个问题(至少在我认为这是问题的地方):

# Angles
hac := arccos( (lab^2 + lbc^2 - lca^2)/(2*lab*lbc) ):
hcd := arccos( (lbc^2 + lbd^2 - lcd^2)/(2*lbc*lbd) ):
had := hac+hcd:
# length of AD
lad := sqrt( lab^2 + lbd^2 - 2*lab*lbd*cos(had) ):
sin_hbd := lbd*sin(had)/lad:
sin_hbp := sin_hbd:         
hbp := arcsin( sin_hbp ):
hap := hac:
hab := Pi - hbp - hap:
# length of BP
lbp := lab*sin_hbp/sin(hab):
# factor we're looking for
s := lbp/lbc:
simplify(s);

产生

                                           lab lbd sin(%2)
   -----------------------------------------------------------------------------------------------
       2      2                     1/2                        lbd sin(%2)
   (lab  + lbd  - 2 lab lbd cos(%2))    sin(arcsin(------------------------------------) + %1) lbc
                                                       2      2                     1/2
                                                   (lab  + lbd  - 2 lab lbd cos(%2))

                                                   2      2      2
                                                lab  + lbc  - lca
                                   %1 := arccos(------------------)
                                                    2 lab lbc

                                                     2      2      2
                                                  lbc  + lbd  - lcd
                                %2 := %1 + arccos(------------------)
                                                      2 lbc lbd

符号lablbclca是三角形的长度。同样地lablbdlcd。所以角度h*应该都在0和Pi之间。我不确定先验 s的表达式有多简单。但到目前为止我所有的假设尝试(例如,明确地添加三角形不等式,在下面添加像宏碁部分答案一样的界限)都没有产生影响。

1 个答案:

答案 0 :(得分:1)

Maple遵循arccos principal value的通常惯例。

您可以根据arccos(cos(x))假设x的假设,将x简化为[0,Pi]

simplify(arccos(cos(x))) assuming x>=0, x<=Pi;

                      x

plot(arccos(x),x=-1..1,tickmarks=[default,piticks]);

enter image description here