学以致用——在Excel中使用VBA计算圆周率(傅立叶级数展开法,理论精度30万位)(Caculation of PI with VBA)

“圆周率(Pi)是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数。π也等于圆形之面积与半径平方之比。是精确计算圆周长、圆面积、球体积等几何形状的关键值。 在分析学里,π可以严格地定义为满足sin x = 0的最小正实数x。

圆周率用希腊字母 π表示,是一个常数(约等于3.141592654),是代表圆周长和直径的比值。它是一个无理数,即无限不循环小数。在日常生活中,通常都用3.14代表圆周率去进行近似计算。而用十位小数3.141592654便足以应付一般计算。即使是工程师或物理学家要进行较精密的计算,充其量也只需取值至小数点后几百个位。 

1965年,英国数学家约翰·沃利斯(John Wallis)出版了一本数学专著,其中他推导出一个公式,发现圆周率等于无穷个分数相乘的积。2015年,罗切斯特大学的科学家们在氢原子能级的量子力学计算中发现了圆周率相同的公式 。”


这个圆周率虽然定义简单,可是其计算并不简单。为了提高其计算精度,自古至今耗费了不知多少人的精力。

今天,我们在Excel中完成。

界面:




VBA源码:(代码基于以下文章略作修改以适用于VBA环境)

参考文章:https://blog.csdn.net/northwolves/article/details/775546, VB计算圆周率

'采用普遍的傅立叶级数展开方法 pi=2+1/3*(2+2/5*(2+3/7*(2+4/9*(2+5/11  .....))))))

'输入:需计算的圆周率位数,理论精度约30万位

 'Add a commandbutton and textbox(multine=true,scrollbars=both) to form1

Option Explicit

 

Private Sub Command1_Click()
getpi CLng(InputBox("生成多少位数(1-50000)的PI?", "提示", 30000))
End Sub

 

 

Sub getpi(Optional ByVal nums As Long = 10000)
nums = nums / 5
Dim max As Long, laptime As Single, result() As String

Dim i As Long, j As Long, t, d As Long, g, k As Long, f()
laptime = Timer
max = 18 * nums
ReDim f(0 To max)
ReDim result(nums)
For i = 0 To max
f(i) = 20000
Next
result(0) = "π=" & vbCrLf
g = 20000
For j = max To 1 Step -18
t = 0

For i = j To 1 Step -1
t = t + f(i) * 100000
d = 2 * i + 1

f(i) = t - Int(t / d) * d
t = Int(t / d) * i
Next
k = k + 1
result(k) = Format(Int(g + t / 100000) Mod 100000, "00000")
If k Mod 20 = 0 Then result(k) = result(k) & vbCrLf
If k Mod 200 = 0 Then result(k) = result(k) & "---[" & k * 5 & "]---" & vbCrLf
g = t Mod 100000
Next
UserForm1.Text1.Text = Join(result, " ")
UserForm1.Caption = UserForm1.Caption & "    (计算完毕!总计用时" & Timer - laptime & "秒!)"
End Sub

Sub calculatePI()
UserForm1.Show

End Sub



  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值