Math 余弦的泰勒级数返回0的错误结果

Math 余弦的泰勒级数返回0的错误结果,math,trigonometry,maple,Math,Trigonometry,Maple,我想用Maple-Taylor级数写余弦函数。这是我的密码: better_cos := proc (x) options operator, arrow; sum((-1)^n*x^(2*n)/factorial(2*n), n = 0 .. 20) end proc; 更好的cos(0)返回0而不是1(cos(0)=1)。这可能是因为x^(2*n)总是返回0而不是1。例如: fun_sum := proc (x) options operator, arrow; sum(x^(2*n),

我想用Maple-Taylor级数写余弦函数。这是我的密码:

better_cos := proc (x) options operator, arrow; sum((-1)^n*x^(2*n)/factorial(2*n), n = 0 .. 20) end proc;
更好的cos(0)返回0而不是1(cos(0)=1)。这可能是因为x^(2*n)总是返回0而不是1。例如:

fun_sum := proc (x) options operator, arrow; sum(x^(2*n), n = 0 .. 0) end proc
对于x==1,返回0


这很奇怪,因为0^0返回1。您知道如何正确地实现cosinus的泰勒级数吗?

以下是泰勒级数的定义:

不要以零开始循环;用1初始化,从2开始


阶乘也是低效的

您应该能够通过在
better\u cos
操作符中使用
add
而不是
sum
来获得所需内容

使用
add
通常更适合于对数字序列中的有限个项进行相加,还请注意
add
具有Maple所谓的特殊求值规则

如果您打算取固定数量的项之和(即n从0到20),则不应编写为每个输入参数(即为
x
的每个值)计算阶乘的过程。相反,只生成一次被截断的序列,然后使用
unapply
生成运算符。这种方法也恰好处理了您原来的问题,因为使用了符号
x
,所以x^0术语变成了
1

您还可以重新排列多项式(截断级数),使其为Horner形式,以便在随后以各种数值x求值时尝试最小化算术步骤

例如,使用5个术语来表示简洁,而不是使用20个术语

convert(add((-1)^n*x^(2*n)/factorial(2*n), n = 0 .. 5),horner);

     /  1   /1    /   1    /  1        1     2\  2\  2\  2\  2
 1 + |- - + |-- + |- --- + |----- - ------- x | x | x | x | x 
     \  2   \24   \  720   \40320   3628800   /   /   /   /   

bc := unapply(%,x):
现在,您可以使用符号或数字参数,根据需要应用过程
bc

expand(bc(x));

       1  2   1   4    1   6     1    8      1     10
   1 - - x  + -- x  - --- x  + ----- x  - ------- x  
       2      24      720      40320      3628800    

bc(0);
                           1

bc(1.2);
                      0.3623577360

如果你喜欢你的过程<代码> BeTyTy-COS取一对参数,这样术语的数量是可变的,那么你仍然可以考虑使用<代码> Addio>代码来处理你原来的问题。例如

bc := (x,N)->add((-1)^n*x^(2*n)/(2*n)!, n = 0 .. N):
我假设这是一个家庭作业,并且您意识到您也可以使用现有的系统命令
taylor
series
来获得相同的结果,即

convert(series(cos(x),x=0,10),polynom);

              1  2   1   4    1   6     1    8
          1 - - x  + -- x  - --- x  + ----- x 
              2      24      720      40320   

convert(taylor(cos(x),x=0,10),polynom);

              1  2   1   4    1   6     1    8
          1 - - x  + -- x  - --- x  + ----- x 
              2      24      720      40320   

哦,这太错了。0^0应该是未定义的。他们在学校也教了我同样的内容,但维基百科说的是另外一个:;)