Я пытаюсь реализовать функцию для вычисления числа пи с использованием ряда Тейлора, вот мой код, чтобы сделать это
#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 ++, любая помощь, которую я могу получить, очень ценится
Вы должны оценить функцию с некоторым значением, например 10:
cout << "the value for pi is " << pi(2000)<<endl;
Выход:
the value for pi is 3.14109
pi
в вашем примере это функция, которая принимает аргумент. Следовательно, вы должны добавить скобки и такой аргумент pi(50)
, 50 — это просто пример использования того, что вы хотите.