Maple无法使用整数参数进行定积分

时间:2013-03-07 14:13:27

标签: integration maple

在枫树中,我计算了两个余弦函数乘积的(非常简单的)定积分:

restart;
f := n -> (x -> cos(n*x)):

assume(n1::integer);
assume(n2::integer);

int(f(n1)(x)*f(n2)(x),x=0..2*Pi);

它(不幸)返回

0

Pi应为n1=n2

出人意料地

int(f(n1)(x)*f(n1)(x),x=0..2*Pi);

给出正确的结果。我用错了方法使用枫树还是这个虫子?如果这是一个错误,我该如何避免呢?我将编写一个大型程序,它必须评估许多术语,这些术语都会减少到这种类型的整数相关积分。

1 个答案:

答案 0 :(得分:2)

你可能想修改你的期望(或你的假设)来涵盖另一个角落,因为如果n1=n2=0那么积分应该等于2*Pi

restart:

int(cos(0*x)*cos(0*x),x=0..2*Pi);
                          2 Pi

int(cos(3*x)*cos(-3*x),x=0..2*Pi);

                           Pi

int(cos(2*x)*cos(2*x),x=0..2*Pi);

                           Pi

ans1 := int(cos(n1*x)*cos(n2*x),x=0..2*Pi,AllSolutions)
       assuming n1::integer, n2::integer;

      piecewise(n1 - n2 = 0, Pi, 0) + piecewise(n1 + n2 = 0, Pi, 0)

simplify(ans1) assuming n1::integer, n2::integer, n1=n2, n1=0;

                          2 Pi

simplify(ans1) assuming n1::integer, n2::integer, n1=n2, n1<>0;

                           Pi

simplify(ans1) assuming n1::integer, n2::integer, n1<>n2, n1<>-n2;

                           0

你可能还想在n1n2都是正整数的假设下考虑积分(它有一个更简单的条件结果,甚至可能是你想到的)。

ans2 := int(cos(n1*x)*cos(n2*x),x=0..2*Pi,AllSolutions)
       assuming n1::posint, n2::posint;

             piecewise(n1 - n2 = 0, Pi, 0)

simplify(ans2) assuming n1=n2;

                           Pi

simplify(ans2) assuming n1<>n2;

                           0