Поехали.
Procedure.d BBP(n) Protected k, sum.d = 0.0 For k = 0 To n sum + (1.0 / Pow(16, k)) * (4.0 / (8 * k + 1) - 2.0 / (8 * k + 4) - 1.0 / (8 * k + 5) - 1.0 / (8 * k + 6)) Next ProcedureReturn sum EndProcedure Debug #PI Debug bbp(15)
PureBasic - форум |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » PureBasic - форум » OpenSource » Давайте выложил калькуляторы числа Пи у кого есть.
Поехали.
Procedure.d BBP(n) Protected k, sum.d = 0.0 For k = 0 To n sum + (1.0 / Pow(16, k)) * (4.0 / (8 * k + 1) - 2.0 / (8 * k + 4) - 1.0 / (8 * k + 5) - 1.0 / (8 * k + 6)) Next ProcedureReturn sum EndProcedure Debug #PI Debug bbp(15)
Procedure.d Leibnic(Iter) For i = 0 To iter-1 pi.d+Pow(-1,i)/(2*i+1) Next ProcedureReturn pi*4 EndProcedure Debug Leibnic(1000000) Debug #PI
Слабо 100000 знаков посчитать?
на длинной математике - нет, не слабо, когда-то считал. Какую-то библиотеку юзал и там поставил длину чисел для деления большую и считал.
А причём тут слабо или не слабо?! Ты бы выложил что у тебя есть по этой теме, а не писал "слабо". Тем более для расчётов научных никто столько не использует.
по формуле Виета
Procedure.d VietaFormula(n.i) Define.d product = 1.0 Define.d sqrt_term = 0.0 Define.i i For i = 1 To n sqrt_term = Sqr(2 + sqrt_term) product = product * (sqrt_term / 2) Next i ProcedureReturn 2 / product EndProcedure Debug VietaFormula(1000) Debug #PI
egons, 100000 не слабо, к чему усложнять если всё уже есть.
офф.
from mpmath import mp import time # Функция для вычисления и записи цифр числа π def compute_and_save_pi(digits, filename): # Устанавливаем точность mp.dps = digits + 2 # +2 для учёта "3." # Начало вычислений print(f"Вычисление числа π с {digits} цифрами после запятой...") start_time = time.time() # Вычисляем число π pi_value = str(mp.pi) # Записываем результат в файл with open(filename, "w") as file: file.write(pi_value) # Время выполнения end_time = time.time() print(f"Вычисление завершено за {end_time - start_time:.2f} секунд.") print(f"Результат записан в файл: {filename}") # Параметры digits = 100000 # Количество цифр после запятой filename = "pi_digits.txt" # Имя файла для записи # Выполняем вычисления и запись compute_and_save_pi(digits, filename)
формула Валлиса
Procedure.d WallisPi(n.i) Define.d product = 1.0 Define.i i For i = 1 To n product = product * (4 * Pow(i, 2)) / (4 * Pow(i, 2) - 1) Next i ProcedureReturn 2 * product EndProcedure Debug WallisPi(1000000) Debug #PI
Чудновский
Procedure.d Factorial(n.i) Define.d result = 1.0 Define.i i For i = 1 To n result = result * i Next i ProcedureReturn result EndProcedure Procedure.d ChudnovskyPi(n.i) Define.d sum = 0.0 Define.d term Define.i k For k = 0 To n term = Factorial(6 * k) * (13591409 + 545140134 * k) term = term / (Factorial(3 * k) * Pow(Factorial(k), 3) * Pow(640320, 3 * k + 1.5)) If k % 2 = 1 term = -term EndIf sum = sum + term Next k ProcedureReturn 1 / (12 * sum) EndProcedure Debug ChudnovskyPi(10) Debug #PI
Procedure.d Factorial(n.i) Define.d result = 1.0 Define.i i For i = 1 To n result = result * i Next i ProcedureReturn result EndProcedure Procedure.d RamanujanPi(n.i) Define.d sum = 0.0 Define.d term Define.i k For k = 0 To n term = Factorial(4 * k) * (1103 + 26390 * k) term = term / (Pow(Factorial(k), 4) * Pow(396, 4 * k)) sum = sum + term Next k ProcedureReturn 1 / ((2 * Sqr(2) / 9801 * sum)) EndProcedure Debug RamanujanPi(10) Debug #PI
Формула Рамануджана
Debug 4*ATan(1)
Алгоритм Brent-Salamin был уже?
Вы здесь » PureBasic - форум » OpenSource » Давайте выложил калькуляторы числа Пи у кого есть.