圆周率是一个很神奇的数字,看似毫无规律,但却是确确实实存在并且唯一的,圆周率的计算有很多种方法,现在我们假设已知圆的面积公式 s=πr2 s=\pi r^2 ,看能不能据此来反推得到 π \pi 。

已知条件
- 圆的面积公式: s=πr2 s=\pi r^2 ;
- 正六边形是由6个完全相同的等边三角形组成;

所用工具
- 数学推导
- C语言编程

*注意:不能使用三角函数公式计算

推导过程
如图

设圆的半径r=1,圆内接 6∗2n 6*2^n 边形的边长为 an a_n 。由图可知:

AC2=AB2+BC2=AB2+(r−OB)2=AB2+(1−1−AB2−−−−−−−√)2 AC^2=AB^2+BC^2=AB^2+(r-OB)^2=AB^2+(1-\sqrt{1-AB^2})^2 ,

因此:

  • an+12=(an/2)2+(1−1−(an/2)2−−−−−−−−−√)2=2−4−an2−−−−−−√−−−−−−−−−−−√ {a_{n+1}}^2=(a_n/2)^2+(1-\sqrt{1-(a_n/2)^2})^2=\sqrt{2-\sqrt{4-{a_n}^2}} ,

至此,我们可以由圆内接正 6∗2n 6*2^n 边形的边长计算得到内接正 6∗2n+1 6*2^{n+1} 边形的边长。圆的面积可近似看作其内接正多边形的面积,边数越多,近似的结果越准确。

  • s=πr2≈sn+1=6∗2n+1∗(1/2∗1∗an/2)=3an∗2n s=\pi r^2 \approx s_{n+1}=6*2^{n+1}*(1/2*1*a_n/2)=3a_n*2^n

因此:

  • π=s/r2=s=3an∗2n \pi=s/r^2=s=3a_n*2^n ,

由于 a1=1 a_1=1 是已知的,便可以联立以上带有项目符号的公式,通过迭代得到 π \pi 的估计值。

C代码实现

#include<stdio.h>
#include<math.h>
main()
{int n=1;double a=1.0,s1=0.0,s2,ds;do{a=sqrt(2-sqrt(4-a*a));s2=3*a*pow(2,n);ds=s2-s1;s1=s2;n+=1;} while(ds>0.00001);//精确至小数点后第5位printf("pi=%f",s1);
}

根据圆的面积公式计算圆周率相关推荐

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

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

  2. 根据公式计算圆周率Π的值

    根据公式计算圆周率的值 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 根据公式计算圆周率的值 前言 一.如何计算? 二.计算步骤 1.代码及注释 总结 前言 计算圆周率Π的近似值 ...

  3. html中圆的面积怎么计算,圆的面积怎么算 圆的计算公式是什么

    圆面积是指圆形所占的平面空间大小,常用S表示.圆是一种规则的平面几何图形,其计算办法有许多种.圆的面积便是圆的半径r的平方乘以π,即S=πr2. 圆面积计算公式 公式:圆周率乘以半径的平方 用字母能够 ...

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

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

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

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

  6. LQBv16-Python:用莱布尼兹公式计算圆周率π

    2014-/Province_Java_A/2/ 历史上有许多计算圆周率pai的公式,其中,格雷戈里和莱布尼茨发现了下面的公式:pai = 4*(1-1/3+1/5-1/7 ....)参见[图1.pn ...

  7. 根据公式计算圆周率PI

    C语言根据公式计算PI## for循环的简单运用 #include <stdio.h> #include <stdlib.h> #include <math.h> ...

  8. python怎么算圆的面积公式_【Python】计算圆的面积

    React学习系列一 系列学习react 翻译地址 https://scotch.io/tutorials/learning-react-getting-started-and-concepts 我是 ...

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

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

最新文章

  1. python中的逻辑运算符and和or
  2. 1142 CREATE VIEW command denied to user 'blog'@'XXX.XXX.XXX.XXX' for table 'Articles'
  3. linux查看内存、cpu等硬件信息
  4. 二叉搜索树的插入与删除(C语言)
  5. 4152. [AMPPZ2014]The Captain(稠密图最短路)
  6. Mysql8.0可以使用解压版 这个比较快 好像现在都是解压版了
  7. aix vnc oracle,请问如何配置AIX上的vnc
  8. Android中ListView分页加载数据
  9. stm32定时器编码器模式原理及配置
  10. java query dsl_java – QueryDsl – 具有字符串值的case表达式
  11. java+微博上传图片_GitHub - lkshuihua/webpic: 轻量级Java 上传图片 到微博图床小工具...
  12. 分析11年21部漫威电影,一览导演、主演、口碑票房最佳......
  13. oracle升序和降序同时存在,oracle升序排序 oracle升序和降序
  14. 解除当前设置不允许下载该文件
  15. B站CEO陈睿:我们活跃用户仍维持高增长 动能是独特优质内容
  16. 回顾过去,才能展望未来
  17. 武大地理信息科学本科生的专业相关网站总结分享(包括制图、专业课、自学复习等)
  18. 2017年南海区青少年信息学奥林匹克竞赛(小学甲组)
  19. 用邻接表dfs和bfs图
  20. 马云的故事:缔造阿里巴巴帝国秘诀

热门文章

  1. ZigBee学习之11——MAC层API解读2
  2. PAT.A1010 Radix
  3. 西门子PCS7系统NTP网络时钟同步(NTP时钟发生器)介绍
  4. hive分区表之insert overwrite 注意事项
  5. vm磁盘映射 不能启动_iOS 启动优化之Clang插桩实现二进制重排
  6. 【Vue开发实战课后题】子组件为何不可以修改父组件传递的props?
  7. 测试温度时共模电压的考虑
  8. C++分数简单的加减法
  9. VAR-MVGARCH-BEKK模型的winrats实现
  10. 交换机基础命令(理解交换机基本工作原理)