|
楼主 |
发表于 2019-6-20 21:54
|
显示全部楼层
- Sub getpi()
- Rows("2:65535").ClearContents
- Dim k0, nums, max As Long, f(), g, i As Long, j As Long
- nums = [d1]
- k0 = [b1]
- max = 18 * nums
- ReDim f(0 To max)
- g = k0 / 5
- For i = 0 To max
- f(i) = g
- Next
- 'Stop
- '''''''''''''''
- Dim nRow, t, d As Long, k As Long, arr()
- ReDim arr(0 To Int(nums / 20), 1 To 20)
- For j = max To 1 Step -18
- '采用普遍的傅立叶级数展开方法 pi=2+1/3*(2+2/5*(2+3/7*(2+4/9*(2+5/11 .....))))))
- t = 0
- For i = j To 1 Step -1
- t = t + f(i) * k0
- d = 2 * i + 1
- f(i) = t - Int(t / d) * d
- t = Int(t / d) * i
- Next i
- k = k + 1
- If k = 21 Then k = 1: nRow = nRow + 1
- arr(nRow, k) = Int(g + t / k0) Mod k0
- g = t Mod k0
- Next j
- [a2].Resize(Int(nums / 20) + 1, 20) = arr
- [a2].Resize(Int(nums / 20) + 1, 20).NumberFormatLocal = Right(k0, Len(k0) - 1)
- End Sub
复制代码
|
|