第一章 基本语法-9循环(do while)根据公式求Pi的值
2015-10-23 19:00
357 查看
Leibniz定理:
根据上面公式,求出pi的近似值,精确到 0.0001(万分位)。
分析:仔细观察各项可看出分母是奇数,符号一正一负,
假设An是公式中的第n项,可以得出:
An=(-1)^(n-1) * 1/(2n-1)
在程序中,(-1)^(n-1) 符号一整一负,可以通过下面方法实现:
(1)sign=-sign
(2)数学法cos(n pi) (-1)^n 等。
在这里,我们使用sign=-sign
方法来实现符号。
精确度怎样处理呢?只需判断An是否达到要求即可,即第n项An<0.000001即可(这里要多一位,因为最后的结果还要乘以4)
上代码:
根据上面公式,求出pi的近似值,精确到 0.0001(万分位)。
分析:仔细观察各项可看出分母是奇数,符号一正一负,
假设An是公式中的第n项,可以得出:
An=(-1)^(n-1) * 1/(2n-1)
在程序中,(-1)^(n-1) 符号一整一负,可以通过下面方法实现:
(1)sign=-sign
(2)数学法cos(n pi) (-1)^n 等。
在这里,我们使用sign=-sign
方法来实现符号。
精确度怎样处理呢?只需判断An是否达到要求即可,即第n项An<0.000001即可(这里要多一位,因为最后的结果还要乘以4)
上代码:
#include <iostream> #include<math.h> using namespace std; int main() { double pi = 0;//记录pi的值 double sign = 1;//符号 double ai;//表示公式中的第i项 int i = 1;//项数 do { //注意 ai = 1 / (2 * i - 1); 这样的写法是不对的,因为ai是double,右边是int ai = 1.0 / (2 * i - 1); pi = pi + sign * ai; sign = -sign; i++; } while (ai >= 0.000001); //do while 会先执行里面的内容,然后再做判断 pi=4*pi; cout<<pi<<endl; return 0; }
相关文章推荐
- 黑马程序员——图形化界面
- 求完全数(C实现)
- UE3 基本的分析及优化技术
- 搭建nginx+tomcat+Java的负载均衡环境
- android访问数据库时报runtiameException,和空指针异常
- 程序员必备知识——fork和exec函数详解
- 学习笔记
- HDU 1846 Brave Game(巴什博奕)
- I2C从驱动到应用(下篇)
- 黑马程序员——反射
- Java异常体系结构
- ASP代码开发规范
- iOS UIlabel sizeToFit失效的问题
- 通过时间戳防止scroll 反复触发
- Exception in thread "main" org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to co
- 4.Swift初探-2048小游戏中的问题
- GCD code block
- UVALive 7147 World Cup
- [Unity]关于多角色自由切换主操作角色的问题
- Git命令总结