用泰勒方法计算圆周率

Calculating Pi with Taylor Method C++

本文关键字:计算 圆周率 方法      更新时间:2023-10-16

谷歌刚刚给我安排了一轮循环。我的指示是:

圆周率的近似值可以用下面给出的级数来计算:

π= 4 * (1 - 1/3 + 1/5 - 1/7 + 1/9 ... + ((- 1) ^ n)/(2 n + 1)]

用这个级数写一个c++程序来计算圆周率的近似值。程序的输入n决定了pi值近似值的项数,并输出近似值。包括一个循环,允许用户对新值n重复这个计算,直到用户说她或他想结束程序。

我从来没有学过微积分,所以这对我来说太难了,我不知道如何完成我被要求的。

#include<iostream>
#include<iomanip>
#include<cmath>
#include<math.h>
using namespace std;
int main()  
{
    //declare variables
    double sum, pi;
    int n;
    
    //prompt user
    cout << "How many decimals would you like to calculate pi to? ";
    cin >> n;
    
    //calculate pi
    
    //print response
    cout << fixed << setprecision (n) << pi << endl;
    return 0;
}

的cmath和math.h是剩余的尝试,使我得到的工作正常,它解决了我的一些错误,但我知道我真的需要做更多。我假设我需要循环,因为这是我在课堂上的位置,但我不知道该循环什么。我应该如何实现这个系列?

我知道你们都不喜欢家庭作业辅导,所以如果你能给我指出正确的方向,我会尽力的。谢谢!

已经有人通过给出级数和为你做了微积分。你需要一个函数;像这样:

double pi(int n) {
    double sum = 0.0;
    int sign = 1;
    for (int i = 0; i < n; ++i) {           
        sum += sign/(2.0*i+1.0);
        sign *= -1;
    }
    return 4.0*sum;
}

泰勒级数不是非常精确:10,000项,近似值是3.1414926535900345。一百万项,近似值是3.1415916535897743。1亿项,近似是3.141592643589326

计算泰勒级数的第n项是通过计算((-1)^n)/(2n + 1)来完成的。要计算到第n项,您应该从0循环到n,在每个循环结束时将最终结果与当前的pi近似值相加。

级数的思想是n越大,值越准确。所以如果你只是让这段代码在n=2的情况下运行,它将是完全错误的。可以是递归的,也可以是简单的。我用一种简单的方式

double partialSeries = 0d;
for (i = 0; i < n; i++) // you give the value to n
   if (i % 2 == 0)
       partialSeries += 1/(2.0 * i + 1);
   else
       partialSeries -= 1/(2.0 * i + 1);
double series = 4 * partialSeries;