функция — Вычисление числа Пи с использованием переполнения стека в серии Тейлора

Я пытаюсь реализовать функцию для вычисления числа пи с использованием ряда Тейлора, вот мой код, чтобы сделать это

#include <iostream>
#include <math.h>
using namespace std;

double pi(int n)
{
double sum = 1.0;
int sign = -1;

for (int i = 1; i < n; i++)
{
sum += sign / (2.0 * i + 1.0);
sign = -sign;
}
return 4.0 * sum;
}int main()
{
cout << "the value for pi is" << pi ;
}

По какой-то причине мой код продолжает возвращать 1, но я не могу понять, почему

В качестве примечания я хочу сделать так, чтобы код, выполняющий ряд Тейлора, прекращал работать, если абсолютное значение последнего члена ряда меньше ошибки в последней оценке числа пи

Я думал о том, чтобы сделать это, используя аналогичный цикл for для вычисления ошибки, и цикл do … while для всей функции, которая останавливает вычисление числа pi, когда это условие выполнено, но я не уверен, есть ли более простой способ сделать это или с чего начать.

Я довольно новичок в этом форуме и C ++, любая помощь, которую я могу получить, очень ценится

0

Решение

Вы должны оценить функцию с некоторым значением, например 10:

cout << "the value for pi is " << pi(2000)<<endl;

Выход:

the value for pi is 3.14109
1

Другие решения

pi в вашем примере это функция, которая принимает аргумент. Следовательно, вы должны добавить скобки и такой аргумент pi(50), 50 — это просто пример использования того, что вы хотите.

0

По вопросам рекламы [email protected]