Редактировать : требование было расплывчатым и вместо расчета N-й цифры PI, они просто хотели, чтобы ПИ к N-й цифре не выходить за пределы поплавков Силовая способ работала на требования.
Мне нужно рассчитать pi n-th digit, и я хотел попробовать использовать формулу BBP , но у меня есть трудности. Уравнение, которое я напечатал, похоже, не дает мне правильно.
(1 / pow(16,n))((4 / (8 * n + 1)) - (2 / (8 * n + 4)) - (1 / (8 * n + 5)) - (1 / (8 * n + 6)))
Я был успешным с мороженым способом нахождения PI, но это только точнее, и нахождение NT-номера сложно.
(4 - (4/3) + (4/5) - (4/7)...)
Я хотел выяснить, лучше ли у кого-то лучшее представление о том, как это сделать или, возможно, помочь с моим уравнением BBP на то, что я испортил?
Спасибо,
LF4
Функциональный, но не очень точный до нескольких итераций, а затем вы должны рассмотреть последние несколько.
#include
using namespace std;
int main()
{
int loop_num = 0;
cout << "How many digits of pi do you want?: ";
cin >> loop_num;
double my_pi = 4.0;
bool add_check = false;
int den = 3;
for (int i = 0; i < loop_num; i++)
{
if (add_check)
{
my_pi += (4.0/den);
add_check = false;
den += 2;
}
else
{
my_pi -= (4.0/den);
add_check = true;
den += 2;
}
}
cout << "Calculated PI is: " << my_pi << endl;
system("pause");
return 0;
}
Что я надеюсь, будет лучшим программой.
#include
#include
using namespace std;
const double PI_BASE = 16.0;
int main()
{
int loop_num = 0;
cout << "How many digits of pi do you want?: ";
cin >> loop_num;
double my_pi = 0.0;
for (int i = 0; i <= loop_num; i++)
{
my_pi += ( 1.0 / pow(PI_BASE,i) )( (4.0 / (8.0 * i + 1.0)) -
(2.0 / (8.0 * i + 4.0)) -
(1.0 / (8.0 * i + 5.0)) -
(1.0 / (8.0 * i + 6.0)) );
}
cout << "Calculated PI is: " << my_pi << endl;
system("pause");
return 0;
}