在JavaScript中准确计算PI到x的位置

时间:2017-03-20 20:09:56

标签: javascript math pi

我知道之前已经问过这个问题,但我找不到答案。 我正在尝试创建一个准确计算pi到x位置的函数。 到目前为止,这是我的代码:

  function odd(num) { return num % 2;}
  var pi = 3;
  var x=2;
  for (var acc = 1; acc < 30000; acc++) {
    if (Odd(acc)) {
      pi = pi + (4/(x * (x+1) * (x+2)));
    } else {
      pi = pi - (4/(x * (x+1) * (x+2)));
    }
    x=x+2;
  }
  console.log(pi);

这样可行,但如何指定长度,同时确保其保持准确?

1 个答案:

答案 0 :(得分:0)

由于此系列是交替的,部分和的误差总是小于下一个术语的绝对值。基本上n术语之后的错误大约是1/(2*n^3)

此外,对于浮点运算,您将获得幅度为n*1e-16的误差,因此可获得的最佳结果将是大约n=1e4,误差幅度为1e-12

第二个想法,从最小到最大项的求和将避免大浮点误差的累积,因为下一个误差是关于下一个项的大小乘以机器ε的量值。因此,总误差将具有与绝对和成比例的界限,绝对和是小5e-15的有限值。这种反向求和应该允许几乎无差错的计算,直到n^3=10^15n=10^5有15个正确的位置。