用格雷戈里公式求π的近似值(含有python,C,C++).pdf
格雷戈里-莱布尼茨公式是数学中一个经典的无穷级数,用于近似计算圆周率π。这个公式由17世纪的数学家詹姆斯·格雷戈里和戈特弗里德·莱布尼茨独立发现,表达式如下: \[ \pi = 4 \sum_{n=0}^{\infty} \frac{(-1)^n}{2n+1} = 4 \left( \frac{1}{1} - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} + \cdots \right) \] 这个公式通过交替正负项的级数和来逐渐逼近π的值。在实际编程中,我们通常会设定一个误差阈值,比如10的-6次方,当连续两项的差的绝对值小于这个阈值时停止计算。以下是使用Python、C语言和C++实现该公式的代码示例。 ### Python 实现 ```python t = 1.0 pi = 0 n = 1.0 s = 1 while abs(t) >= 1e-6: pi = pi + t n += 2.0 s = -s t = s / n pi = pi * 4 print("pi={}".format(pi)) ``` 在这个Python程序中,我们初始化`t`为1.0,`pi`为0,`n`为1.0,`s`为1。然后在循环中,我们不断更新π的近似值,直到`t`的绝对值小于10的-6次方。每次迭代,我们增加`n`的值,改变`s`的符号,然后更新`t`为`s`除以`n`的新值。最后乘以4得到π的近似值。 ### C 语言实现 ```c #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int s; float n, t, pi; t = 1.0; pi = 0; n = 1.0; s = 1; while (fabs(t) >= 1e-6) { pi = pi + t; n += 2.0; s = -s; t = s / n; } pi = pi * 4; printf("pi=%f\n", pi); } ``` C语言版本与Python类似,但需要注意类型转换和使用`fabs`函数处理浮点数的绝对值。 ### C++ 实现 C++有两种不同的实现方式,一种是基于原始C风格的实现,类似于C语言版本,另一种是使用C++的`iostream`库进行输入输出。 **C风格的C++实现** ```cpp #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int s; float n, t, pi; t = 1.0; pi = 0; n = 1.0; s = 1; while (fabs(t) >= 1e-6) { pi = pi + t; n += 2.0; s = -s; t = s / n; } pi = pi * 4; printf("pi=%f\n", pi); } ``` **C++ iostream 库实现** ```cpp #include <iostream> int main() { int Operator = 1; double x, sum = 0; for (int i = 1; 1.0 / i > 1e-6; i += 2, Operator *= -1) { x = Operator * 1.0 / i; sum += x; } std::cout << sum * 4 << std::endl; return 0; } ``` 在这个C++版本中,我们使用了C++的`iostream`库来处理输入输出,`for`循环取代了`while`循环,并且没有使用中间变量`s`。同样,当连续项的分母大于10的-6次方时,计算停止。 以上三个程序都是利用格雷戈里-莱布尼茨公式计算π的近似值,根据设定的精度阈值,可以得到不同精度的结果。在实际应用中,还可以优化这些代码,例如使用递归或其他数值方法来提高效率。





























- 粉丝: 2950
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 四川师范大学c语言实验报告.docx
- 计算机专业大学生自我鉴定(12篇)(1).doc
- spss软件在delphi法数据统计中的应用PPT课件.ppt
- 高铁四电接口工程现场观摩会会议指南.doc
- 2022年老师信息化培训心得体会(1).docx
- ppt模板5G互联网渐变工作汇报PPT模板(1).pptx
- 探讨房产档案信息化管理(1).docx
- 基于单片机的恒压供水系统的设计方案.doc
- 课程设计报告书数据库原理及应用(1).docx
- linux系统实验报告.doc
- 通信管道线路施工安全注意事项及风险防范(1).docx
- 自动化员工个人总结(1).doc
- WEB第二次实验报告.doc
- 基于大数据背景的信息技术教学策略谈(1).docx
- [PLC毕业论文]基于PLC的交通灯控制.doc
- Java课程设计.doc


