Tôi là người mới bắt đầu python và tôi muốn tính pi. Tôi đã thử sử dụng thuật toán Chudnovsky vì tôi nghe nói rằng nó nhanh hơn các thuật toán khác.Tính toán pi pi?
Đây là mã của tôi:
from math import factorial
from decimal import Decimal, getcontext
getcontext().prec=100
def calc(n):
t= Decimal(0)
pi = Decimal(0)
deno= Decimal(0)
k = 0
for k in range(n):
t = ((-1)**k)*(factorial(6*k))*(13591409+545140134*k)
deno = factorial(3*k)*(factorial(k)**3)*(640320**(3*k))
pi += Decimal(t)/Decimal(deno)
pi = pi * Decimal(12)/Decimal(640320**(1.5))
pi = 1/pi
return pi
print calc(25)
Đối với một số lý do mã này mang lại các vakue của pi lên đến 15 số thập phân so với giá trị chấp nhận được. Tôi đã cố giải quyết điều này bằng cách tăng giá trị chính xác; điều này làm tăng số chữ số, nhưng chỉ 15 chữ số đầu tiên vẫn chính xác. Tôi đã thử thay đổi cách tính toán thuật toán và nó cũng không hoạt động. Vì vậy, câu hỏi của tôi là, là có cái gì đó có thể được thực hiện để mã này để làm cho nó chính xác hơn nhiều hoặc tôi sẽ phải sử dụng một thuật toán? Tôi sẽ đánh giá cao sự giúp đỡ với điều này bởi vì tôi không biết làm thế nào để hoạt động với rất nhiều chữ số trong python. Tôi muốn để có thể kiểm soát số lượng chữ số (chính xác) xác định và hiển thị bởi các chương trình - cho dù 10, 100, 1000, vv
Chỉ cần để so sánh, đây là một số mã Chudnovsky làm việc: http://www.craig-wood.com/nick/articles/pi-chudnovsky/ – runDOSrun