Вычисление Пи методом переполнения стека методом Тейлора

Google только что отправил меня в круговой Мои инструкции:

Приблизительное значение числа pi можно рассчитать, используя ряд, приведенный ниже:

pi = 4 * [1 — 1/3 + 1/5 — 1/7 + 1/9… + ((-1) ^ n) / (2n + 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 остались от попыток заставить то, что мне дали, работать должным образом, и это решило несколько моих ошибок, но я знаю, что мне действительно нужно сделать больше Я предполагаю, что мне как-то нужны циклы, так как именно там я нахожусь в классе, но я не знаю, ЧТО нужно зацикливать. Как мне реализовать серию?

Я знаю, что вы недовольны справкой по домашнему заданию, которая потеряна, так что, если вы просто укажете мне правильное направление, я сделаю все возможное Спасибо!

0

Решение

Кто-то уже сделал исчисление для вас, дав сумму этой серии. Вам нужна функция; что-то вроде этого:

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;
}

Серия Тейлор не очень точный: 10000 терминов и приближение 3.1414926535900345, Миллион слагаемых и приближение 3.1415916535897743, Сто миллионов терминов и приближение 3.141592643589326,

Не очень хорошо.

3

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

Вычисление n-го члена ряда Тейлора осуществляется путем вычисления ((-1)^n)/(2n + 1), Чтобы вычислить с точностью до n-го члена, вы должны затем выполнить цикл от 0 до n, добавив окончательный результат к вашему текущему приближению числа pi в конце каждого цикла.

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;
0
По вопросам рекламы [email protected]