1

在 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);

给出正确的结果。我是在错误地使用枫树还是这是一个错误?如果它是一个错误,我该如何避免它?我将编写一个大型程序,它必须评估许多项,这些项都归结为这种类型的整数相关积分。

4

1 回答 1

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
于 2013-03-09T18:57:46.280 回答