| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Пи |
| Автор: __vi 23.1.2004, 11:28 |
| Извините может быть за глупый вопрос, но мне интересны алгоритмы вычесления пи. Вот есть такой который позволяет вычислять пи с любой точностью? |
| Автор: MuToGeN 23.1.2004, 11:38 |
| Хм... Да, тоже интересно |
| Автор: shedon 23.1.2004, 12:11 |
| http://mathc.chat.ru/hist/pihist.htm |
| Автор: __vi 23.1.2004, 13:27 |
| Спасибо! |
| Автор: PROme 23.1.2004, 14:11 |
| Очень-очень-очень советую разыскать №3 за Март 2002 журнал Hard'n'Soft (UA) Там на 88-й странице начинается отличная статья "Пиратская тропинка к Пи"... в ней описыватся не только алгоритм поиска, но и возможности (что с помощью данного эдиного числа при достаточных вычислительных можностях можно закодировать (заархивировать) любую информацию любого размера)... вобще советую всем кто интересуются всяким таким программно-математическим почитать выпуски тех времен - было очень много отличнейших статей... А вобще, в двух словах, насколько помню, ищется вписыванием многоугольника в круг - чем больше сторон у многоугольника - тем точнее получим значение Пи |
| Автор: MuToGeN 23.1.2004, 14:14 |
| PROme Это дело через пределы прогнать случайно нельзя? Изи я чего-то непонимаю... |
| Автор: shedon 23.1.2004, 14:16 | ||
http://arbuz.ferghana.ru/z_pi.html |
| Автор: Chingachguk 23.1.2004, 15:04 | ||
Ну вот число e можно записать: limit (N->беск) (1+(1/N))^N. А теперь запиши через предел отношение длины окружности (сумму сторон вписанного или описанного N-угольника) к радиусу. |
| Автор: asmworm 24.1.2004, 14:29 | ||
| Вот что-то откопал: ===================================== THE TEN BILLIONTH HEXADECIMAL DIGIT of Pi is 9 By: Simon Plouffe, Peter Borwein and David Bailey. The following is part of a paper titled "On The Rapid Computation of Various Polylogarithmic Constants". The full text, as well as Fortran code, is available in http://www.cecm.sfu.ca/~pborwein/ as P123 under the link "Computing Pi and Related Matters". ABSTRACT: We give algorithms for the computation of the d-th digit of certain transcendental numbers in various bases. These algorithms can be easily implemented (multiple precision arithmetic is not needed), require virtually no memory, and feature run times that scale nearly linearly with the order of the digit desired. They make it feasible to compute, for example, the billionth binary digit of log(2) or pi on a modest work station in a few days run time. Indeed we computed the 10 billionth hexadeximal digit of pi as well as the billionth hexadecimal digits of pi^2, log(2) and log^2(2), the billionth decimal digit of log (9/10) and the five billionth decimal digit of log(1 - 10^{-96}). These calculations rest on three observations. First, the d-th digit of 1/n is "easy" to compute. Secondly, this scheme extends to certain polylogarithm and arctangent series. Thirdly, very special types of identities exist for certain numbers like pi, pi^2, log(2) and log^2(2). These are essentially polylogarithmic ladders in an integer base. A number of these identities that we derive in this work appear to be new, for example the critical identity for the binary digits of pi is:
===cut=== Теперь может кто-то кинет реализацию вышесказанного? Я что-то в матеиатике не очень. |
| Автор: acp 24.1.2004, 19:03 |
| А что тут сложного в реализации? Обычный ряд. Вычисляется в цикле. |
| Автор: asmworm 24.1.2004, 21:33 | ||
Хотел бы я узнать как ты вычислишь 10000000000000000000000000000000 знак |
| Автор: shedon 24.1.2004, 21:48 | ||
Создай динамический массив и делай знак до каторого у тебя хватит памяти |
| Автор: Chingachguk 24.1.2004, 22:35 |
| По поводу приведеннной asmworm заметки. Я не очень хорошо знаю язык (позже со словарем посмотрю), но я не уверен, что эта формула описывает ПИ в смысле его "определения" или же результатом аналитических выкладок и скорее является чем-то вроде результата приближения ~"полиномами" вычисленных результатов или их части. |
| Автор: __vi 25.1.2004, 12:30 |
| Я вот дома нашел сорс какой-то ужасно написанной проги (видно писал математик), но пи вычисляет, алгоритм понять не возможно, после некоторых модификаций смог заставить её вычеслять очень далеко (100 000 знаков после запятой за... 90 минут (у меня машина в 970bogomips)) очень медлено. Протестирую все вышепредложенные алгоритмы и скажу какой быстрее. (Я так же хотел 10^6 после запятой но за 4 часа не было результата так я выключил) Кстати если кто-нибудь может проверить достоверность вычисленний пишите мне личное сообщение, я пришлю. |
| Автор: asmworm 25.1.2004, 18:21 |
| __vi В принципе можно с помощью Mathematica 5 проверить, если у тебя её нет то пришли мне на мыло результат или лучше всего его CRC32(только скажи в какой системе счисления) или что-то в этом роде(чтоб не слать много кб) |
| Автор: maxim1000 25.1.2004, 22:54 | ||||
если посчитать этот ряд аналитически, получится рациональная функция от sqrt(2), а так число ПИ точно выразить нельзя возможно, этот ряд действительно приближает число ПИ (по крайней мере первое слагаемое дает 3.2711111111...) но зато для вычисления любой цифры этого ряда описанным методом нужно количество операций порядка d*log(d) и памяти почти не нужно
а он большой? если не очень, может, его сюда выложишь? |
| Автор: maxim1000 25.1.2004, 23:18 | ||
упс... ошибочка вышла... алгоритм в таком виде, в котором я его понял требует d*d операций |
| Автор: __vi 26.1.2004, 11:16 |
| Да я уже проверил... с какова-то знака идёт ошибка аж до конца. |
| Автор: __vi 27.1.2004, 11:14 |
| Сорс я завтра вылажу а то он у меня дома, а в интерете я нашел ещё две программы, но они крупные. Поищи pi_c50.c и pi_c50f.c. Дома попробовал разные подходы всё фигня по сравнению с формулой Chudnovskys. Как это на русский перевести? Да ну и как формулу реализовать алгоритмически я пока не понял. Как найду ссылку на формулу - поставлю. |
| Автор: MuToGeN 27.1.2004, 11:26 |
| > аж до конца какого конца? |
| Автор: __vi 27.1.2004, 11:26 |
| Вот: http://numbers.computation.free.fr/Constants/PiProgram/pifast.html что-то такое и я хочу написать. |
| Автор: __vi 27.1.2004, 11:29 | ||
|
| Автор: __vi 27.1.2004, 15:05 |
| И если кто будет заниматься этим делом то http://www.swox.com/gmp/ |
| Автор: __vi 27.1.2004, 15:26 |
| PiFast уже 4 часа не может 10^6 знаков вычислить. И это на 2GHz. |
| Автор: shedon 27.1.2004, 15:29 |
| Этот пифаст сожрал у меня всю память, а за это Windows ему сказал, что память не может быть read и выкинул его нафиг. |
| Автор: __vi 27.1.2004, 18:35 |
| А у меня не сожрал, потому что я запустил на компе девушки тут одной, она вроде работает |
| Автор: B0POH 6.4.2004, 22:56 | ||
А зачем тебе такой знак? Во всех расчётах обычно оставляют первые 4 знака после запятой остальное ненадо. Можно так сделать. Берём любую тригонометрическую функцию например cos(х), sin(х), tg(х), и т.д. Раскладываем её в ряд Sin(x)=x-x³/3! +x³*x²/5!-x³*x²*x²/7!+… или Arctg(x)=x-x³/3+x³*x²/5-x³*x²*x²/7+… Затем в случае арктангенса записываем x=tg(pi/4)=1 Получаем Pi/4=1-1/3+1/5-1/7+… Отсюда выражаем pi. Чем больше слагаемых сложим, тем точнее найдём pi. А ещё можно через цепные дроби сделать тока это слишком хлопотно. |
| Автор: Vit 6.4.2004, 23:18 |
| Если кому-то надо, вот Pi до миллиона знаков и e до 5ти миллионов знаков http://chicago.lastplanet.com/soft/Pi-1000000.zip http://chicago.lastplanet.com/soft/e-5000000.zip PS. может их в наш файловый архив поместить? |
| Автор: Elfet 29.12.2007, 15:16 |
| Забавно: 392699/125000 = 3.14159 |
| Автор: SoWa 29.12.2007, 17:47 |
| Внизу странички тема "Вычисление числа Пи на калькуляторе" Как его вычислить, мы вроде не нашли, но кучу интересного понаписали. |