【问题标题】:Calculating Pi with Taylor Method C++ [closed]使用 Taylor 方法 C++ 计算 Pi [关闭]
【发布时间】:2015-12-16 19:45:42
【问题描述】:

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

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

我知道你们都对家庭作业帮助不屑一顾,所以如果你们能指出我正确的方向,我会尽力而为。谢谢!

【问题讨论】:

  • SO 是针对特定问题而不是对话或指针!

标签: c++ pi taylor-series


【解决方案1】:

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

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

不是很好。

【讨论】:

  • 术语从何而来?
  • 改变了我的想法;我会删除它。
  • @duffymo 补充一句,使用你的函数,最后的setprecision()应该根据结果的准确性来设置,即小数点后3位
  • 是的,当我根据此处给出的答案更好地理解提示时,我将其删除。谢谢。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    系列的思想是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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 2011-05-07
      • 2017-09-27
      • 2013-01-10
      • 1970-01-01
      相关资源
      最近更新 更多