複製鏈接
請複製以下鏈接發送給好友

梅欽類公式

鎖定
梅欽類公式(英語:Machin-like formula)是數學中計算圓周率的一個常用技巧,它是梅欽公式的推廣。
中文名
梅欽類公式
外文名
Machin-like formula
分    類
數理科學

梅欽類公式形式

梅欽公式的形式為
梅欽依據此公式,把圓周率計算到一百多位小數。
梅欽類公式的形式為:
其中,
正整數,且
為非零整數,且
為正整數。
梅欽類公式的應用可結合反正切函數的泰勒級數展開 [1] 

梅欽類公式導出

根據角的和差公式
反覆應用這一方程,可得到所有的梅欽類公式,比如最初的梅欽公式:

梅欽類公式用梅欽公式編程計算圓周率(C++)

#include<cstdio>
#include<iostream>
using namespace std;

/* 本程序每四位數輸出,如果請求計算的位數不是4的整數倍,最後輸出可能會少1~3位數 */
int main(void)
{
    long a[2]={956,80},b[2]={57121,25},i=0,j,k,p,q,r,s=2,t,u,v,N,M=10000;
    printf("%9cMachin%6cpi=16arctan(1/5)-4arctan(1/239)" \
        "\nPlease input a number.\n",32,32);
    cin>>N,N=N/4+3;
    long *pi=new long[N],*e=new long[N];
    while(i<N)
        pi[i++]=0;
    while(--s+1)
    {
        for(*e=a[k=s],i=N;--i;)
            e[i]=0;
        for(q=1;j=i-1,i<N;e[i]?0:++i,q+=2,k=!k)
        for(r=v=0;++j<N;pi[j]+=k?u:-u)
            u=(t=v*M+(e[j]=(p=r*M+e[j])/b[s]))/q,r=p%b[s],v=t%q;
    }
    while(--i)
        (pi[i]=(t=pi[i]+s)%M)<0?pi[i]+=M,s=t/M-1:s=t/M;
    for(cout<<"3.";++i<N-2;)printf("%04ld",pi[i]);
    delete []pi,delete []e,cin.ignore(),cin.ignore();
    return 0;
}
參考資料
  • 1.    渡部隆隆, 胡復. 泰勒展開[M]. 科學普及出版社, 1980.