0

谷歌刚刚以循环方式发送给我。我的指示是:

可以使用下面给出的系列计算 pi 的近似值:

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

编写一个 C++ 程序,使用这个系列计算 pi 的近似值。该程序采用输入 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 是为了让我得到的东西正常工作而留下的,它解决了我的一些错误,但我知道我真的需要做更多。我假设我需要以某种方式循环,因为那是我在课堂上的地方,但我不知道要循环什么。我应该如何实施该系列?

我知道你们都对家庭作业帮助皱眉,这是丢失的,所以如果你能指出我正确的方向,我会尽力而为。谢谢!

4

3 回答 3

3

有人已经通过给出该系列总和为您进行了微积分。你需要一个函数;像这样的东西:

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。一亿项,其近似值为3.141592643589326

不是很好。

于 2015-09-19T20:13:10.983 回答
0

级数的思想是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;
于 2015-09-19T20:15:20.107 回答
0

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

于 2015-09-19T20:13:41.347 回答