0

我正在尝试使用 Maclaurin 级数近似制作一个近似 Cos(2) 的函数。到目前为止,我已经做了一个“Do”循环,但我的近似值偏离了-1。

我的功能:

valX = 2
result = 0
numTerms = 5
i = 0

Do[
 Print[
  SetPrecision [
   result = 
    result + (-1)^i*
      (valX^(2*i)/Factorial[2*i]), 10]], {i, numTerms}]

结果:

-2.000000000
-1.333333333
-1.422222222
-1.415873016
-1.416155203 //decimal is correct but I'm off by -1.
4

3 回答 3

1

由于 Mathematica 是 1 索引的,因此您的Do[..., {i, numTerms}]循环范围从 1 到 numTerms。您可能希望从 0 变为 numTerms。试试这个,更改在最后一行:

valX = 2
result = 0
numTerms = 5
i = 0

Do[
 Print[
  SetPrecision [
   result = 
    result + (-1)^i*
      (valX^(2*i)/Factorial[2*i]), 10]], {i, 0, numTerms}]
于 2013-06-29T04:43:58.853 回答
0

如果从 Pi/2 开始扩展,收敛也会更快,即:valX=2-Pi/2 并且循环从 i=1 开始

于 2013-06-29T16:35:28.793 回答
0

其实我只是想通了。必须发生的是,我必须通过从指数中减去来补偿公式是递归的。

正确公式:

  result =
    result + (-1)^i-1*
    (valX^(2*i-2)/Factorial[2*i-2])
于 2013-06-29T04:23:12.357 回答