博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
古中国数学家的计算力真是惊人
阅读量:6603 次
发布时间:2019-06-24

本文共 1539 字,大约阅读时间需要 5 分钟。

  版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖。如要转贴,必须注明原文网址  http://www.cnblogs.com/Colin-Cai/p/8367610.html   作者:窗户  QQ:6679072  E-mail:6679072@qq.com

  现代数学是建立在公理化的体系之上,可以认为是形而上学。公理化是数学的本质所在,古代中国人建立过数学的辉煌,但是却似乎并没有去思考数学的本质,而古希腊的《几何原本》是人类有史以来记载的最早数学往公理化方向努力,尽管《几何原本》中存在着公理的不完备,证明过程中依然有”想当然“的成分,比如直线上除某点之外的一点(几何原本中并没有公理支持直线上除了某点之外还可以取一点),但是往公理化运行的这个历史意义巨大。

  很长时间,我都不太认为古代数学有哪些惊人,只是还知道勾股定理,杨辉三角,以及祖冲之算圆周率等。

  今天老婆问我圆周率怎么算的,我就想了想。虽然圆周率可以有一堆无穷级数或者无穷乘积可以表示,我还是选择了用最简单的方式来回答,于是就直接行动起来吧。

  选择一个单位圆,x2+y2=1,它的面积就是pi,于是用微积分逼近的方法来做,分成n等分,然后用上和或者下和逼近。当然要考虑精度问题,所以还是用上bc这个任意精度计算器,这个计算器我一直很喜欢使用,一边跟老婆解释一边写程序,程序很快写完。

scale = 12;/*所有计算精度小数点后12位*/n = 10^6;/*单位圆切200万刀,y轴左右各100万刀*/pi = 0;/*上和累计初始值为0*/for(i=0;i

  用bc运行一下,我的虚拟机24秒后有了结果。

# time bc <2pi = 3.141594151717real    0m24.015suser    0m24.006ssys     0m0.008s

  结果并不是很理想,计算精度12位其实只是影响了一点点累和时的精度问题,完全不是祖冲之的3.14159265级别的问题。

  于是换条路吧,祖冲之的割圆术应该是对周长的,于是我就分它个215=32768份,成为一个32768边形,边长其实是2*sin(2*pi/32768),我们就来算这个值吧。sin(2x)=2sin(x)*cos(x),因为是锐角,可算出sin(x)=sqrt((1-sqrt(1-cos(2x)*cos(2x)))/2)。

  继续用bc来写,

n=13;/*从圆的内接正方形开始,开始对切13次*/scale=20;/*纪念20位足够*/s=sqrt(2)/2;/*sin(pi/4)*/for(i=0;i

  运行一下,这次对于计算机就很快了,长度法比面积法靠谱,

# time bc <3p = 3.14159264877598965760real    0m0.007suser    0m0.004ssys     0m0.004s

  可是,精度还差那么一点,看来应该多切一刀,把程序中的n改成14,精度符合要求。

# time bc <3p = 3.14159265238350561280real    0m0.005suser    0m0.000ssys     0m0.004s

  

  这样的开平方运算用手算是很复杂的,参考我的博文,我无法想像祖冲之如何面对这么复杂的运算的。中国古人虽然可能对于数学的基本原理没有做深层次的考虑(不排除以前考虑过,但资料丢失的可能,毕竟经过了嬴政和刘彻和那么多的朝代),但至少古人的计算能力真的是很让人震撼。

 

转载于:https://www.cnblogs.com/Colin-Cai/p/8367610.html

你可能感兴趣的文章
Google C++ Style Guide在C++11普及后的变化
查看>>
服务器重启后如何开启由docker部署的redmine
查看>>
Shader中ColorMask的使用
查看>>
[转] ubuntu 下mongodb的安装-----这篇文章也不错
查看>>
maven打jar包 没有主属性清单
查看>>
运行时与动态
查看>>
C#.Net Mvc运营监控,计算方法/接口/action/页面执行时间
查看>>
jboss中控制台jmx-console 登录的用户名和密码设置
查看>>
git-bisect last updated in 2.19.1【转】
查看>>
javascript面向对象技术基础(五)
查看>>
于ssh端口转发的深入实例[转 - 当当 - 51CTO技术博客
查看>>
cocos2d-x win8 Metro风格设计第一版
查看>>
VCL组件之TScrollBar
查看>>
JProfiler 7.1现在可以分析Hibernate了
查看>>
TIB自动化测试快讯 -- 自动化测试空间一周精选(2012-2-6)
查看>>
[zz]OpenStack Compute(Nova)功能分析
查看>>
模拟某些网站的开关灯案例
查看>>
使用ATL开发ActiveX控件
查看>>
Listview 选项按下去黑了所有按钮的解决方法 ——android:cacheColorHint=“#00000000”...
查看>>
Struts2 注解
查看>>