使用Machin公式计算,并使用百亿进制+末项位数控制,这里可算出数万位(比最简PI快80倍),源代码约40行,在本网页中。
计算公式 PI=16arctg(1/5)-4arctg(1/239),其中arctg(x)=x-x^3/3+x^5/5-x^7/7+x^9/9...
令X=x^2并提取公因式得:arctg(x)=x(1-X(1/3-X(1/5-X(1/7-X(…,只需迭代b=1/(2n+1)-b*X,n=N,…,3,2,1,0,最后算b*x即得arctg(x)要想快速计算几十万位或几百万位,应使用C++或汇编语言,要取得几千万位请使用Ramanujan公式,要算几亿位或几十亿位请用几何算术平均值算法//PI计算javascript程序,Machin+百亿进制优化
//2006.12 许剑伟 莆田十中
function add(a,b,n){ //多精度a对多精度b的相加算法(小学加法)
for(var i=n-1,f=0;i>=0;i--){
a[i]+=b[i]+f;
if(a[i]>=10000000000) a[i]-=10000000000,f=1; else f=0;
}
}
function sub0(a,b,r,n){ //多精度a对多精度b的相减算法(小学减法)
for(var i=n-1,f=0;i>=0;i--){
r[i]=a[i]-b[i]-f;
if(r[i]<0) r[i]+=10000000000,f=1; else f=0;
}
}
function div(a,b,n){ //多精度a与单精度b相除算法(小学除法)
for(var i=0,f=0,c;i<n;i++){
c=a[i]+f*10000000000;
a[i]=Math.floor((c+0.1)/b);
f=c%b;
}
}
function dao(a,f,b,n){ //倒数(f/b)
a[0]=Math.floor(f/b); f=f%b;
for(var i=1,c;i<n;i++){
c=f*10000000000;
a[i]=Math.floor((c+0.1)/b);
f=c%b;
}
}
function set(a,v,n){ for(var i=0;i<n;i++) a[i]=0; a[0]=v; a.length=n;} //给数组置0并给首位置初值v//以下计算圆周率,计算公式:Machin PI=16arctg(1/5)-4arctg(1/239)
var a=new Array(),b=new Array(),c=new Array(); //三个工作数组,a存PI,b存arctg,c是临时数组
function arctg(k,v,zf,N){//求v*arctg(k),zf表示结果累加到a时的正负号
for(var i=Math.round(N*23.1/Math.log(k*k)),n=i,n2;i>=0;i--){
n2=Math.round((n-i)*N/n)+1; //末项计算位数控制
if(n2>N) n2=N;
dao(c,v,2*i+1,n2);
div(b,k*k,n2);
sub0(c,b,b,n2);
}
div(b,k,N);
if(zf>0) add(a,b,N);
else sub0(a,b,a,N);
}
function pi(N){ //N为计算的位数,本程序所得最后5位可能有错
set(a,0,N); set(b,0,N); //PI结果数组及arctg数组,初值为0
arctg(5,16,1,N);
arctg(239,4,-1,N);
for(var i=1;i<N;i++) a[i]=String(10000000000+a[i]).substr(1,10); //补足10位
return a.join("");
}
function js(){ ca.innerHTML="最后5位可能有错:PI="+pi(Nw.value-0+1); } //在网页上输出

链接:http://www.fjptsz.com/xxjs/xjw/rj/112/pi23.htm

转载于:https://www.cnblogs.com/ddw1997/p/3946505.html

使用Machin公式计算相关推荐

  1. 用Machin公式计算圆周率的源程序

    用Machin公式计算圆周率的源程序 /* Program to compute PI, by Jason Chen, May 1999 ** ** Open VC++ IDE, new a win3 ...

  2. Machin(梅钦/马青)公式计算圆周率π

    作为一名计算机的初学者,因为老师作业的要求去完成圆周率的计算,因此突然产生了兴趣,想尝试自己用梅钦公式来完成这个任务.上网找了一些资料,也看见了短短几行就完成任务的代码,实在佩服,不过那样的代码实在对 ...

  3. python用bbp公式计算圆周率_圆周率π现在已经算到多少位了?具体是什么数字?...

    圆周率π现在已经算到多少位了?具体是什么数字? 來源:互聯網  2009-08-12 07:01:36  評論 分類: 人文學科 問題描述: 3.1415926后面是多少? 參考答案: 3.14159 ...

  4. Python利用马青公式计算圆周率Π并写入文件

    一.什么是马青公式         马青公式由英国天文学教授约翰·马青(John Machin ,1686 –1751)于1706年发现,他利用这个公式计算到了100位的圆周率. 马青公式每计算一项可 ...

  5. matlab 流程计算方法,吸波材料LLG公式计算复磁导率的过程及matlab程序

    看到一篇paper,利用Landau-Lifshitz-Gilbert 公式计算片状颗粒的复磁导率.(JAP 107,033913, 2010) http://scitation.aip.org/co ...

  6. c语言根据日期算星期几入门,c语言详解  蔡勒(Zeller)公式计算某一天是星期几  极其方便...

    /* 蔡勒(Zeller)公式计算某一天是星期几 w:星期:c:(年份前两位):y:年(年份后两位):m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1.2月要看作上一年的13.14月 来计 ...

  7. excel公式不自动计算_c++通用面积计算公式_excel 公式计算 c++

    刚刚开通了博客,今天正好有时间来完成自己的第一篇博客文章.希望对有需要的朋友有所帮助. 今天写了一个小代码:计算任意多边形的面积.临近毕业,毕设也忙得很,还好最近完成的差不多了,就差写论文了,今天突然 ...

  8. 中用BBP公式计算_【真课堂】7年级信息技术:数据计算

    教师介绍: 汪小红,一级教师,滨江区科技节scratch项目优秀指导教师,曾获杭州市信息技术优质课二等奖. [教材分析] 数据计算是数据处理过程中的一个重要步骤,数据计算能对数据进行归纳和提炼.学生已 ...

  9. 中用BBP公式计算_散户如何计算庄家的持仓量和持仓成本?

    计算庄家的持仓量和持仓成本,可以帮助散户判断庄家目前的坐庄过程处于何种阶段.如果庄家处于建仓阶段,散户就应该找机会跟进:如果庄家处于出货阶段,散户就应该赶快抛出手中筹码. 一:计算庄家持仓量 在股市交 ...

最新文章

  1. golang中的flag模块小结
  2. NTLDR is missing解决方法
  3. Linux Kobject
  4. Jtopo Demo源码下载方式
  5. 【转】Leopard 安装教程
  6. html鼠标自动点击代码,网上学习鼠标10分钟自动点击 按键精灵使用设置方法 脚本编辑...
  7. 机械制造技术基础【3】
  8. linux 搜狗输入法变繁体字,搜狗输入法变成繁体字怎么办
  9. pandas警告SettingWithCopyWarning: A value is trying to ...原理和解决方案
  10. 谈谈 MVX 中的 Model
  11. 网络编程:网络协议简介
  12. 【DB宝14】在Docker中只需2步即可拥有Oracle 11g企业版环境(11.2.0.4)
  13. 《Learn python3 the hard way》ex42到ex43总结
  14. 二叉树 html模板,用 DOM 与 CSS 展示二叉树
  15. jquery.nicescroll.js 美化滚动条
  16. 三重邪骨手机版怎么登录服务器未响应,三重邪骨锁血版
  17. mysql workbench6.3.7_mysql workbench官方版
  18. 淘宝/天猫邻家好货 API 返回值说明
  19. alter diskgroup <磁盘组名> check all norepair;
  20. 一次网站的性能优化之路 -- 天下武功,唯快不破

热门文章

  1. django celer_Celer招募Zing作为下一代基于Java的交易平台
  2. 用css伪元素制作箭头图标
  3. Type mismatch: inferred type is T but ViewModel was expected
  4. python delta_Python 函数
  5. java criterion_hibernate Criterion和Criteria
  6. 2022-2027中国内科缝合线行业应用形势与需求前景预测报告
  7. Pathon的安装过程
  8. Python网络爬虫:爬取腾讯招聘网职位信息 并做成简单可视化图表
  9. 1号线彭埠站故障已经查明 是积水导致转辙机信号不良
  10. Scrm营销如何自动化打标签