问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

圆周率(PI)的多种计算方式,并且用代码实现圆周率的计算过程,完全开源

创作时间:
作者:
@小白创作中心

圆周率(PI)的多种计算方式,并且用代码实现圆周率的计算过程,完全开源

引用
CSDN
1.
https://blog.csdn.net/FakerS3S5S6/article/details/139797202

圆周率(π)是数学和物理学中一个极其重要的常数,它不仅出现在几何学中,还在概率论、傅里叶分析等多个领域有着广泛的应用。本文将介绍几种经典的圆周率计算方法,并通过C#代码实现这些算法,帮助读者理解圆周率的计算原理。

1. 圆周率的简介

圆周率(Pi)是一个在数学及物理学中普遍存在的常数,一般定义为圆的周长与其直径之比,记作π。它是一个无理数,即无法表示为两个整数的比,且其小数部分无限不循环。圆周率π的前几位小数通常写作3.141。

2. 目前常见的求解圆周率的计算方法

2.1 割圆术

割圆术是由魏晋时期的数学家刘徽首创的,它通过不断倍增圆内接正多边形的边数来逼近圆面积,从而求取圆周率。割圆术的数学意义在于通过“圆内接正多边形的面积”来无限逼近“圆面积“。

2.2 无穷级数法

数学家莱布尼茨提出圆周率pi满足无穷级数关系公式(证明过程省略,我们只要会使用公式即可)。

2.3 积分法计算法

牛顿和莱布尼茨共同创建微积分后,在微积分创建后很少有人再使用割圆法求解圆周率,因为割圆法求解圆周率的迭代速度太慢。

我们都知道圆的面积计算公式为
如下图所示是方程为
圆在二维坐标系下的图像形状

那么根据圆的面积公式可以得到
那么如果我们将圆取第一象限的面积,那么圆的面积是不是可以表示整个圆的四分之一

那我们根据微积分来计算pi的值是不是可以表示为
我们都知道,微积分就是表示图像的面积,那么我们是不是可以将图像进行分割成若干个小长方形求解圆的面积。
可得圆周率的计算公式为

3 代码求解过程

3.1 莱布尼茨无穷奇数法求解圆周率代码

编程语言采用C#的控制台模块进行编程,其全部代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace 莱布尼茨公式求解积分
{
    class Program
    {
        /// <summary>
        /// 莱布尼茨公式求解方程
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            double pi = 0;
            double sum = 300000;
            for (int i=0;i<sum;i++)
            {
                // 莱布尼茨级数的第i项 相加
                pi =pi+ 4 * (Math.Pow(-1, i) / (2*i + 1));
                Console.WriteLine("级数计算到第{0}项,目前求得pi的值为{1}",i+1,pi);
            }
            Console.ReadKey();
        }
    }
}  

代码演示效果如下图所示,计算pi的结果为3.1415

3.2 积分法求解圆周率代码

积分代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 积分法求解圆周率pi
{
    class Program
    {
        static void Main(string[] args)
        {
            // 划分小长方形的个数
            double n = 300000;
            // 定义pi的初始值
            double pi = 0;
            for(int i=0;i<n;i++)
            {
                pi = pi + 4 * (1 / n) * Math.Sqrt(1 - Math.Pow(i / n, 2));
                Console.WriteLine("迭代运算第{0}次,计算结果为{1}",i+1,pi);
            }
            Console.ReadKey();
        }
    }
}  

演示结果如下,计算结果为3.14159

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号