Собственно заинтересовала тема связанная с числом Пи. Возможно выбрал не самый подходящий язык, а именно php. Собственно возникла проблема с выбором оптимального алгоритма для получения числа Пи, скажем с точночтью до 10^100 знаков после запятой. Может кто сталкивался с такими вычеслениями, буду признателен за любую инфу в этом направлении.
22/7=3,142857 Увы. но это не подходит ибо не соответствие уже в 3 знаке, а речь идет о точности 10^100 знаков. Интересует реализация в коде, пусть в общем виде, главное получить результат в виде массива n*m.
Да, 22\7 -не самая точная рациональная дрбь. На вики рапсисано много алогритмов получения - http://ru.wikipedia.org/wiki/Pi
а ничего что (выдержка из мануала по php)размер целого зависит от платформы, хотя максимум, как правило, ~1.8e308 с точностью около 14 десятичных цифр (это 64-битный IEEE-формат).
Парси это =) http://pi314.narod.ru/pi314.htm - А вообще почитай может интересно будет http://algolist.manual.ru/maths/count_fast/pi.php
Цитаты с вики ТС, а сколько, простите, у вас суперкомпьютеров в наличие, если вы замахиваетесь на такую точность?
на пэхе врядли точнее 7-8 символов получится алгоритм взят из вики PHP: <?php $pi = 0; for($i=0;$i<99999999999999999;$i=$i+4) { $pi = $pi + 1/($i+1)-1/($i+3); echo $pi*4 ; echo "\n" ; } ?>
Один. Но изначально я ошибся в плане php, залез в этот раздел потому как он более живой, а в алгоритме поправтье если это не так, главное не язык на котором кодить, а сам алгоритм . Цель не брать "железом", а совершенствовать, (оптимизировать) сам алгоритм вычислений числа Pi. Зачем супержелезо если например взять нейронные сети или как вариант ботнет для распределенных вычислений, ну или ..... Вот собственно поэтому и создал тему так как надеюсь услышать советы в данном направлении с компетентных уст.
кмк, лучше комбинации C + Asm вы вряд ли найдете по скорости работы. PHP для таких расчетов не годится, имхо. Он не для этого создавался. ЗЫ. Никто не мешает реализовать один и тот же алгоритм с фиксированным числом итераций на разных ЯП и сравнить
Думаю, что для высоконагруженных математических расчётов больше подходит функциональное программирование. Рекомендую Erlang - он очень хорош для распределённого программирования, и в нём нет ограничений на величину чисел.
Code: <?php $r = 4; $tochnost = 1000000; function y($x) { global $r; return sqrt($r*$r-$x*$x); } for($i=-$r*$tochnost;$i<$r*$tochnost;$i++) { $x1 = $i/$tochnost; $y1 = y($x1); $x2 = ($i+1)/$tochnost; $y2 = y($x2); $d += sqrt(pow(($x2-$x1),2)+pow(($y2-$y1),2)); } echo 'pi = '.$d/$r; ?>
<?php echo pi(); ?> result: 3.1415926535898 Пи - константа, и какой смысл изобретать алгоритм для ее обноружения?