[php] Алгоритм получения числа Пи

Discussion in 'PHP' started by acdel, 27 Nov 2009.

  1. acdel

    acdel Elder - Старейшина

    Joined:
    7 Jan 2008
    Messages:
    131
    Likes Received:
    57
    Reputations:
    3
    Собственно заинтересовала тема связанная с числом Пи.
    Возможно выбрал не самый подходящий язык, а именно php. Собственно возникла проблема с выбором оптимального алгоритма для получения числа Пи, скажем с точночтью до 10^100 знаков после запятой. Может кто сталкивался с такими вычеслениями, буду признателен за любую инфу в этом направлении.
     
    2 people like this.
  2. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Для начала тебе понадобится вселенная побольше. В этой не хватит места, чтобы их записать.
     
  3. Adekvatnyj

    Adekvatnyj Member

    Joined:
    28 Oct 2009
    Messages:
    18
    Likes Received:
    25
    Reputations:
    -3
    Число пи?) А что это ?)))
    А если серьезно 2(Pi)r квадрат
     
  4. wildshaman

    wildshaman Elder - Старейшина

    Joined:
    16 Apr 2008
    Messages:
    477
    Likes Received:
    483
    Reputations:
    99
    В школе новую формулу выучили? Поздравляю.

    Тс, дели 22 на 7
     
  5. Adekvatnyj

    Adekvatnyj Member

    Joined:
    28 Oct 2009
    Messages:
    18
    Likes Received:
    25
    Reputations:
    -3
    нет вроде в школе уже давно ничему не учили.
    А ты вижу гуглишь норм.
     
  6. acdel

    acdel Elder - Старейшина

    Joined:
    7 Jan 2008
    Messages:
    131
    Likes Received:
    57
    Reputations:
    3
    22/7=3,142857

    Увы. но это не подходит ибо не соответствие уже в 3 знаке, а речь идет о точности 10^100 знаков. Интересует реализация в коде, пусть в общем виде, главное получить результат в виде массива n*m.
     
  7. wildshaman

    wildshaman Elder - Старейшина

    Joined:
    16 Apr 2008
    Messages:
    477
    Likes Received:
    483
    Reputations:
    99
    Да, 22\7 -не самая точная рациональная дрбь.
    На вики рапсисано много алогритмов получения - http://ru.wikipedia.org/wiki/Pi
     
  8. Kusto

    Kusto Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    886
    Likes Received:
    678
    Reputations:
    510
    а ничего что (выдержка из мануала по php)размер целого зависит от платформы, хотя максимум, как правило, ~1.8e308 с точностью около 14 десятичных цифр (это 64-битный IEEE-формат).
     
    #8 Kusto, 27 Nov 2009
    Last edited: 27 Nov 2009
  9. [QwyZ]

    [QwyZ] Banned

    Joined:
    7 Jul 2009
    Messages:
    71
    Likes Received:
    27
    Reputations:
    5
    <?php
    $numb=22/7;
    sprintf("%.1000000000000f",$numb);
    ?>
     
  10. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    Парси это =)
    http://pi314.narod.ru/pi314.htm
    -
    А вообще почитай может интересно будет
    http://algolist.manual.ru/maths/count_fast/pi.php
     
  11. GenTao

    GenTao New Member

    Joined:
    10 Oct 2009
    Messages:
    123
    Likes Received:
    2
    Reputations:
    -3
    precision в php.ini не забудьте поменять )).
     
  12. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Цитаты с вики
    ТС, а сколько, простите, у вас суперкомпьютеров в наличие, если вы замахиваетесь на такую точность?
     
  13. vp$

    vp$ Elder - Старейшина

    Joined:
    22 Oct 2007
    Messages:
    65
    Likes Received:
    68
    Reputations:
    19
    на пэхе врядли точнее 7-8 символов получится

    [​IMG]

    алгоритм взят из вики

    PHP:
    <?php

    $pi 
    0;
    for(
    $i=0;$i<99999999999999999;$i=$i+4)
    {

    $pi $pi 1/($i+1)-1/($i+3);
    echo 
    $pi*;
    echo 
    "\n" ;

    }

    ?>
     
  14. Forcer

    Forcer Elder - Старейшина

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    Что, классов для работы с большими числами не существует?
     
  15. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    bcmath
     
  16. acdel

    acdel Elder - Старейшина

    Joined:
    7 Jan 2008
    Messages:
    131
    Likes Received:
    57
    Reputations:
    3
    Один. Но изначально я ошибся в плане php, залез в этот раздел потому как он более живой, а в алгоритме поправтье если это не так, главное не язык на котором кодить, а сам алгоритм . Цель не брать "железом", а совершенствовать, (оптимизировать) сам алгоритм вычислений числа Pi. Зачем супержелезо если например взять нейронные сети или как вариант ботнет для распределенных вычислений, ну или ..... Вот собственно поэтому и создал тему так как надеюсь услышать советы в данном направлении с компетентных уст.
     
  17. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    кмк, лучше комбинации C + Asm вы вряд ли найдете по скорости работы. PHP для таких расчетов не годится, имхо. Он не для этого создавался.
    ЗЫ. Никто не мешает реализовать один и тот же алгоритм с фиксированным числом итераций на разных ЯП и сравнить
     
  18. Root-access

    Root-access Elder - Старейшина

    Joined:
    18 Jun 2008
    Messages:
    193
    Likes Received:
    195
    Reputations:
    91


    Думаю, что для высоконагруженных математических расчётов больше подходит функциональное программирование.
    Рекомендую Erlang - он очень хорош для распределённого программирования, и в нём нет ограничений на величину чисел.
     
  19. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    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;
    ?>
     
  20. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    <?php
    echo pi();
    ?>
    result: 3.1415926535898
    Пи - константа, и какой смысл изобретать алгоритм для ее обноружения?