CHỈNH SỬA: Yêu cầu là mơ hồ và thay vì tính số thứ n của pi, chúng chỉ muốn pi đến chữ số thứ n không vượt quá giới hạn của phao vì vậy lực lượng vũ phu làm việc cho các yêu cầu.Thực hiện công thức Bailey – Borwein – Plouffe trong C++?
Tôi cần tính PI chữ số thứ n và tôi muốn thử sử dụng BBP formula nhưng gặp khó khăn. Phương trình tôi gõ lên dường như không cho tôi PI một cách chính xác.
(1/pow(16,n))((4/(8 * n + 1)) - (2/(8 * n + 4)) - (1/(8 * n + 5)) - (1/(8 * n + 6)))
Tôi đã thành công với cách tìm kiếm PI nhưng điều đó rất chính xác và việc tìm số thứ n rất khó.
(4 - (4/3) + (4/5) - (4/7)...)
Tôi muốn tìm hiểu xem có ai có ý tưởng hay hơn về cách thực hiện điều này hoặc có thể trợ giúp phương trình BBP của tôi về những gì tôi đã làm sai?
Cảm ơn bạn,
LF4
chức năng nhưng không phải là rất chính xác cho đến khi một vài lần lặp và sau đó bạn phải disreguard vài ngoái.
#include <iostream>
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;
}
Điều tôi hy vọng sẽ là một chương trình tốt hơn.
#include <iostream>
#include <cmath>
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;
}
Bạn mong đợi bao nhiêu độ chính xác? Và làm thế nào để so sánh với độ chính xác được hỗ trợ bởi loại bạn đang sử dụng? Điều gì về các thuộc tính số của thuật toán ... dấu trừ luôn luôn có nghĩa là phải lo lắng về việc mất độ chính xác. – dmckee
Tôi muốn tính PI như chúng ta biết hoặc là đúng hay không (không bao gồm chữ số cuối cùng có thể được làm tròn). Chương trình sẽ nhắc người dùng xem có bao nhiêu chữ số có nghĩa của pi mà họ muốn sau đó tính toán nó. Từ sự hiểu biết của tôi, công thức BBP sẽ tổng hợp cho mỗi số 0 đến vô cùng. Mỗi lần sẽ có thêm một chữ số pi. Tôi sẽ thêm mã của mình để trợ giúp và hiểu những gì tôi muốn. – LF4
Việc xây dựng các điểm đại diện nổi sẽ chỉ hỗ trợ 6-7 (32 bit) hoặc 15-16 (64 bit) (và có thể là 17-18 (80 bit)) chữ số thập phân của các precisions. Để có được nhiều hơn thế, bạn sẽ phải sử dụng một gói chính xác tùy ý của một số loại. Có một tài liệu nổi trên internet được gọi là * Mỗi nhà khoa học máy tính nên biết gì về số học dấu chấm động *. Bạn cần đọc nó. – dmckee