산술 기하 평균을 이용한 원주율의 계산

수학노트
http://bomber0.myid.net/ (토론)님의 2010년 3월 17일 (수) 20:11 판
둘러보기로 가기 검색하러 가기
이 항목의 스프링노트 원문주소

 

 

개요
  • 산술기하평균함수(AGM, arithmetic-geometric mean)을 활용하여 파이값을 빠르게 계산할 수 알고리즘

 

 

타원적분

\(K(k) = \int_0^{\frac{\pi}{2}} \frac{d\theta}{\sqrt{1-k^2 \sin^2\theta}}\)

 

\(E(k) = \int_0^{\frac{\pi}{2}} \sqrt{1-k^2 \sin^2\theta}}d\theta}{\)

\(q=e^{2\pi i \tau}\)

\(\theta_{2}(\tau)= \sum_{n=-\infty}^\infty q^{(n+\frac{1}{2})^2/2}\)

\(\theta_3(\tau)=\sum_{n=-\infty}^\infty q^{n^2/2}\)

\(\theta_{4}(\tau)= \sum_{n=-\infty}^\infty (-1)^n q^{n^2/2}\)

\(k=k(\tau)=\frac{\theta_2^2(\tau)}{\theta_3^2(\tau)}\)

\(K(k) = \int_0^{\frac{\pi}{2}} \frac{d\theta}{\sqrt{1-k^2 \sin^2\theta}}\)

\(E(k) = \int_0^{\frac{\pi}{2}} \sqrt{1-k^2 \sin^2\theta}}d\theta}{\)

\(k'=\sqrt{1-k^2}=\frac{\theta_4^2(\tau)}{\theta_3^2(\tau)}\)

\(K'(k) = K(k')\)

\(E'(k) = E(k')\)

 

 

타원적분에 대한 르장드르 항등식
  • 르장드르 항등식

\(E(k)K'(k)+E'(k)K(k)-K(k)K'(k)=\frac{\pi}{2}\)

  • 특별히 다음과 같은 관계가 성립함

\(2K(\frac{1}{\sqrt{2}})E(\frac{1}{\sqrt{2}})-K(\frac{1}{\sqrt{2}})^2=\frac{\pi}{2}\)

 

 

렘니스케이트 곡선과 파이

 

 

타원적분과 AGM의 관계

\(K(k)=\frac{\pi}{2M(1,\sqrt{1-k^2})}\)

특별히, \(K(\frac{1}{\sqrt2})=\frac{\pi}{2M(1,\frac{1}{\sqrt2})}\)

  • AGM 수열과 타원적분
     \(a_{n+1}={a_n+b_n \over 2}\),  \(b_{n+1}=\sqrt{a_n b_n}\) , \(a_0=1\), \(b_0=\sqrt{1-k^2}\) ,  \(c_n=\sqrt{a_n^2-b_n^2}\)

\(\sum_{i=0}^{\infty} 2^{i-1} c_i^2 = 1 - \frac{E(k)}{K(k)}\)

 

 

가우스-살라민 알고리즘

[/pages/1939326/attachments/1341696 Salamin.jpg]

\(a_0=1\), \(b_0=\frac{1}{\sqrt{2}}\)

\(c_n=\sqrt{a_n^2-b_n^2}=\frac{c_{n-1}^2}{4a_n}\)

\(\pi_n=\frac{2a_{n+1}^2}{1-\sum_{k=0}^{n} 2^kc_k^2}\)

(증명)

\(M=M(1,1/\sqrt{2})\), \(K=K(1/\sqrt{2})\), \(E=E(1/\sqrt{2})\)로 두면,

\(2KE-K^2=\frac{\pi}{2}\)

\(2MK=\pi\)

\(\sum_{i=0}^{\infty} 2^{i-1} c_i^2 = 1 - \frac{E}{K}\)이다.

따라서

\(\pi_n=\frac{2a_{n+1}^2}{1-\sum_{k=0}^{n} 2^kc_k^2}\)

 

 

 

.■

  • 수열 \(\pi_n\)의 처음 여섯항을 계산한 결과
    3.1405792505221682483113312689758233117734402375129
    3.1415926462135422821493444319826957743144372233456
    3.1415926535897932382795127748018639743812255048354
    3.1415926535897932384626433832795028841971146782836
    3.1415926535897932384626433832795028841971693993751
    3.1415926535897932384626433832795028841971693993751
  • 매쓰매티카 코드
  1. a[0]:=1
    b[0]:=1/Sqrt[2]
    a[n_]:=(a[n-1]+b[n-1])/2
    b[n_]:=Sqrt[a[n-1]*b[n-1]]
    c[n_]:=Sqrt[a[n]^2-b[n]^2]
    p[n_]:=2a[n+1]^2/(1-Sum[2^k*c[k]^2,{k,0,n}])
    Table[N[p[i],50],{i,1,10}]//TableForm

 

 

 

또다른 알고리즘

\(x_0=\sqrt{2}\) ,\(\pi_0=2+\sqrt{2}}\), \(y_1=\sqrt[4]{2}\)
\(x_n=\frac{1}{2}(\sqrt{x_n}+\frac{1}{\sqrt{x_n}})}, n\geq0\) , \(y_n=\frac{y_{n+1}\sqrt{x_n}+\frac{1}{\sqrt{x_{n}}}}{y_n+1}}, n\geq1\) , \(\pi_n=\pi_{n-1}\frac{x_n+1}{y_n+1}}, n\geq1\)

  • 위에 정의된 수열 \(\pi_n\)은 파이로 수렴하게 된다. 다음은 처음 여섯개의 항을 계산한 결과.

3.1426067539416226007907198236183018919713562462772
3.1415926609660442304977522351203396906792842568645
3.1415926535897932386457739917571417940347896238675
3.1415926535897932384626433832795028841972241204666
3.1415926535897932384626433832795028841971693993751
3.1415926535897932384626433832795028841971693993751

  • 한번씩 계산할 때마다, 대략 두 배 정도 정확한 자리수
  • 9번째까지 계산한다면, 1000자리 이상의 파이값을 계산
  • 매쓰매티카 코드
    1. x[0]:=Sqrt[2]
      p[0]:=2+Sqrt[2]
      y[1]:=Power[2,(4)^-1]
      x[n_]:=1/2 (Sqrt[x[n-1]]+1/Sqrt[x[n-1]])
      y[n_]:=(y[n-1] Sqrt[x[n-1]]+1/Sqrt[x[n-1]])/(y[n-1]+1)
      p[n_]:=p[n-1] (x[n]+1)/(y[n]+1)
      Table[N[p[i],50],{i,1,10}]//TableForm 
       

 

 

 

관련된 학부 과목과 미리 알고 있으면 좋은 것들

 

관련된 대학원 과목

 

 

관련된 항목들

 

 

관련도서

 

 

위키링크

 

 

관련논문