Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Nick Gorinov                         2:5038/8.24    02 Jun 2002  11:29:18
 To : Stas Rasovsky
 Subject : Число Pi
 -------------------------------------------------------------------------------- 
 
 
 28 May 02 12:14, Stas Rasovsky wrote to All:
 
  SR> Вопpос конечно ламмеpский, но все же.
  SR> Подскажите оптимальный алгоpитм нахождения числа pi.
 
 как-то в ru.math накопал и объединил в некое подобие faq
 
 === Cut ===
 Д новая конфа (2:5038/14.101) ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД RU.MATH Д
  Msg  : 124 of 2037 -120 *147
  From : ega@fian.smr.ru                     2:5020/400      25 Sep 01  20:23:20## To   : Lisetsky Mykola                                     26 Sep 01  03:11:05
  Subj : Re: Calculation Pi
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 From: ega@fian.smr.ru
 Reply-To: ega@fian.smr.ru
 
 From: Eugeny Abramochkin <ega@fian.smr.ru>
 Посмотри http://www.cecm.sfu.ca/organics/papers/borwein/index.html
 
 --
 Regards.
 Отправлено через сервер Talk.Ru - http://www.talk.ru
 -+- ifmail v.2.15dev5
  + Origin: Talk.ru (2:5020/400)
 
 Д новая конфа (2:5038/14.101) ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД RU.MATH Д
  Msg  : 193 of 2037 -161 +207
  From : Pavel Vasilyev                      2:5020/3003.19  03 Oct 01  10:15:39## To   : Ilya Chernyh                                        04 Oct 01  05:23:07
  Subj : Calculation Pi
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Привет Ilya!
 
 30 Сентябрь 2001 года (а было тогда 00:52)
 Ilya Chernyh в своем письме к Lisetsky Mykola писал:
 
 LM>>     Подскажите алгоритм вычисления числа ПИ с большой точностью
 LM>> (например, 100 или больше десятичных разрядов). Или дайте наводки.
 JS>> Писал я как-то программку она вычисляет e до 20000 знаков. Подсчет
 JS>> с помощью ряда. Правда когда пыталься ее переделывать по число пи
 JS>> не фига не получилось. Там правда ряд посложнее. Hаписано на С++.
 JS>> Могу поделиться. Может глюк мой отловишь/
 
 IC> Если получится, пришли мне.
 
 Pi = 24*arctg(1/8)+8*arctg(1/57)+4*arctg(1/239)
 
 и соответствено значения аpктангенсов вычесляют с помощью pяда Маклоpена:
 
 arctg(x)=x-(x^3/3)+(x^5/5)-(x^7/7)+ . . .
 
 P.S.
 Говоpят что точность составляет 100000 знаков
 С уважением, Pavel                           03 Октябрь 2001 года
 
 -+- ...........
  + Origin: --------------------------------------------------- (2:5020/3003.19)
 
 Д новая конфа (2:5038/14.101) ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД RU.MATH Д
  Msg  : 230 of 2037 -219 *239
  From : Max Alekseyev                       2:5015/60       06 Oct 01  16:28:20## To   : Egorov Pavel                                        07 Oct 01  23:37:44
  Subj : Calculation Pi
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 ЫЫЫЫ OS/2        Hi, Egorov !
 
 Replying to a message of Egorov Pavel to Lisetsky Mykola:
 
  EP> Взято из FAQ по Demo&Design. Как работает - Черт его разберет, но
  EP> работает!
 
  EP> ===================
  EP> long d;
  EP> int b=0,a=10000,c=2800,g,e,f[2801];
  EP> main()
  EP> {
  EP>    for(;b-c;) f[b++]=a/5;
  EP>    for(; d=0,g=c*2; c-=14,printf("%.4d",e+d/a),e=d%a) {
  EP>        for(b=c; d+=f[b]*(long)a, f[b]=d%--g,d/=g--,--b; d*=b);
  EP>    }
  EP> }
  EP> ===================
 
 Замечу, что автором приведенной программы на C является Dik T. Winter из CWI.
 Кстати, в оригинале ее текст состоит ровно из 160 символов.
 
 Вот эквивалентная (более прозрачная) программа на паскале:
 
 ===cut===
 var b,g:integer;
     f:array[1..2800] of integer;
 
 const e:integer=0;
       d:longint=0;
       a=10000;
       c:integer=2800;
 
 procedure print4(x:integer);
 var s:string;
 begin
   Str(x:4,s); while pos(' ',s)>0 do s[pos(' ',s)]:='0';
   write(s);
 end;
 
 begin
 for b:=1 to c do f[b]:=a div 5;
 while c>=0 do
 begin
   d:=0;
   for b:=c downto 2 do
   begin
     inc(d,f[b]*a); g:=2*b-1; f[b]:=d mod g; d:=d div g;
     d:=d*b;
   end;
 dec(c,14); print4(e+d div a); e:=d mod a;
 end;
 end.
 ===cut===
 
 Из нее следует, что Pi здесь считается по формуле
 
          oo     i!
 Pi = 2 * Sum --------
          i=2 (2i-1)!!
 
 Сходимость у нее - геометрическая, что довольно неплохо.
 
 Regards,      ш.ш
         Max    ~
 
 -+- FleetStreet 1.27.3.6
  + Origin:  (2:5015/60)
 
 Д новая конфа (2:5038/14.101) ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД RU.MATH Д
  Msg  : 243 of 2037 -239
  From : Egorov Pavel                        2:5080/169.35   07 Oct 01  23:22:42## To   : Lisetsky Mykola                                     08 Oct 01  03:12:56
  Subj : Calculation Pi
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Приветик, Lisetsky!
 
 On Sunday October 07 2001 you wrote to Egorov Pavel:
 
  LM> From: "Lisetsky Mykola" <lis@mksat.net>
  >> Взято из FAQ по Demo&Design. Как работает - Черт его разберет, но
  LM> работает!
 
  LM>     Подскажите, где найти этот FAQ по Demo&Design?
 
  www.enlight.ru
 это огромная свалка всего всего всего....
 Только тот, кто это там запостил сам признался, что не знает как это работает.
 
  >> long d;
  >> int b=0,a=10000,c=2800,g,e,f[2801];
  >> main()
  >> {
  >> for(;b-c;) f[b++]=a/5;
  >> for(; d=0,g=c*2; c-=14,printf("%.4d",e+d/a),e=d%a) {
  >> for(b=c; d+=f[b]*(long)a, f[b]=d%--g,d/=g--,--b; d*=b);
  >> }
  >> }
 
  LM>     Видимо, в этой программе есть какая-то неточность, т.к.
  LM> переменная е
  LM> не инициализирована. Поэтому первые цифры результата - неправильные.
  LM> Hо начиная со второй итерации программа работает нормально (вроде).
 
 BC++ работает правильно. Видимо использует свойство компилятора
 инициализировать переменные нулем.
 
 Hу, Все! Пока Lisetsky.
 
 -+- GoldED/386 3.00.Alpha3+
  + Origin: 2+2=4 это не тождество, а выражение равное TRUE (2:5080/169.35)
 
 Д новая конфа (2:5038/14.101) ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД RU.MATH Д
  Msg  : 264 of 2037 -120
  From : gold@ems.ru                         2:5020/400      09 Oct 01  12:17:14## To   : Lisetsky Mykola                                     10 Oct 01  00:54:52
  Subj : Re: Calculation Pi
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 From: gold@ems.ru
 Reply-To: gold@ems.ru
 
 From: "Dmitriy Goldobin" <gold@ems.ru>
 
 Hi!
 
 Еще до кучи:
 
 1. AGM Если верить ссылкам это сейчас самый быстрый, но и самый сложный в
 программировании (корень от произведения длинных чисел) способ. Удваивает
 (!) число правильных бит на каждой итерации:
 
 c = sqrt(0.125);
 a = 1 + 3 * c;
 b = sqrt(a);
 e = b - 0.625;
 b = 2 * b;
 c = e - c;
 a = a + e;
 npow = 4;
 do {
     npow = 2 * npow;
     e = (a + b) / 2;
     b = sqrt(a * b);
     e = e - b;
     b = 2 * b;
     c = c - e;
     a = e + b;
   } while (e > SQRT_SQRT_EPSILON);
 e = e * e / 4;
 a = a + b;
 pi = (a * a - e - e / 2) / (a * c - e) / npow;
 
 2. Приемлемый по скорости (14 десятичных знаков за итерацию) - на итерациях
 операции деления и умножения только между большим и 32-битным числами, а не
 между двумя большими.
 
 k_1 = 545140134; k_2 = 13591409; k_3 = 640320; k_4 = 100100025; k_5 =
 327843840; k_6 = 53360;
 S = sum(n = 0..oo) (-1)^n * ((6n)!(k_2 + nk_1))/(n!^3(3n)!(8k_4k_5)^n)
 pi = (k_6 sqrt(k_3))/(S)
 
 3. Способ сравнимый по скорости с 16*atn(1/5)-4*atn(1/239), но сходится
 _ровно_ на 4 бита за итерацию, что позволят без больших затрат памяти
 посчитать конкретный бит (4 бита) числа пи.
 
 pi = sum(n=0..oo) (1/16^n)*((4/(8n+1) - 2/(8n+4) - 1/(8n+5) - 1/(8n+6))
 
 Bye.
 -+- ifmail v.2.15dev5
  + Origin: Demos online service (2:5020/400)
 
 === Cut ===
 
 С уважением, Nick!
 np: кулеры, винты, уличный шум, etc.
 
 --- GoldED/386 3.00.Beta5+
  * Origin: ловись коннект большой и маленький! (2:5038/8.24)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Число Pi   Stas Rasovsky   28 May 2002 12:14:46 
 Re: Число Pi   Ivan Kayutin   31 May 2002 06:31:24 
 Re: Число Pi   Alexey Moiseev   31 May 2002 21:59:56 
 Число Pi   Oleg Chubaryov   02 Jun 2002 00:49:40 
 Число Pi   Alexey Moiseev   02 Jun 2002 17:31:25 
 Число Pi   Kest   03 Jun 2002 20:11:20 
 Число Pi   Evgeny Sharandin   08 Jun 2002 20:54:00 
 Число Pi   Kest   01 Jun 2002 11:32:17 
 Число Pi   Kirill Pshinnik   02 Jun 2002 13:15:02 
 Число Pi   Max Chernichkin   02 Jun 2002 23:36:00 
 Число Pi   Alex Astafiev   03 Jun 2002 11:04:35 
 Число Pi   Nick Gorinov   02 Jun 2002 11:29:18 
Архивное /ru.algorithms/28043cfa0191.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional