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