ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 273|回复: 7

[原创] 如何计算圆周率PI

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-7-20 22:37 | 显示全部楼层 |阅读模式
如何计算圆周率PI

如何计算PI.zip

12.94 KB, 下载次数: 23

TA的精华主题

TA的得分主题

发表于 2024-7-20 23:15 | 显示全部楼层
莱布尼茨创
  1. Sub GetPi() '莱布尼茨无穷级数
  2.     k = 0: Pi = 0
  3.     While k < 99999999
  4.          Pi = Pi + 4 * ((-1) ^ k / (k * 2 + 1))
  5.          k = k + 1
  6.     Wend
  7.     Debug.Print Pi
  8. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2024-7-21 13:02 | 显示全部楼层
这个我肯定不会,问了一下AI,回复如下,供楼主参考一下吧。
在VBA中计算圆周率PI,有多种方法可以实现。以下是一些常用的方法:

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-7-21 13:04 | 显示全部楼层
1. 蒙特卡罗方法(随机抽样法) 蒙特卡罗方法是通过随机抽样来近似计算圆周率的值。以下是使用蒙特卡罗方法在Excel VBA中计算圆周率的一个简单示例:
Function CalculatePiMonteCarlo(iterations As Long) As Double
    Dim insideCircle As Long
    Dim i As Long
    Dim x As Double
    Dim y As Double
    Dim pi As Double
   
    insideCircle = 0
   
    For i = 1 To iterations
        x = Rnd()
        y = Rnd()
        If x * x + y * y <= 1 Then
            insideCircle = insideCircle + 1
        End If
    Next i
   
    pi = 4 * insideCircle / iterations
    CalculatePiMonteCarlo = pi
End Function

Sub TestCalculatePi()
    Dim iterations As Long
    iterations = 1000000 ' 迭代次数,数值越大,结果越精确
   
    ' 使用蒙特卡罗方法计算PI
    Dim piMonteCarlo As Double
    piMonteCarlo = CalculatePiMonteCarlo(iterations)
    MsgBox "Monte Carlo Method: " & piMonteCarlo
end sub

TA的精华主题

TA的得分主题

发表于 2024-7-21 13:07 | 显示全部楼层
2. 傅立叶级数展开法 傅立叶级数展开法是使用数学级数来计算圆周率。以下是一个使用傅立叶级数在VBA中计算π的示例:
Function CalculatePiFourierSeries(iterations As Long) As Double
    Dim pi As Double
    Dim i As Long
   
    pi = 0
   
    For i = 0 To iterations - 1
        pi = pi + (1 / (2 * i + 1)) * Math.Pow(-1, i)
    Next i
   
    pi = 4 * pi
    CalculatePiFourierSeries = pi
End Function
Sub TestCalculatePi()
    Dim iterations As Long
    iterations = 1000000 ' 迭代次数,数值越大,结果越精确
   
    ' 使用傅立叶级数方法计算PI
    Dim piFourierSeries As Double
    piFourierSeries = CalculatePiFourierSeries(iterations)
    MsgBox "Fourier Series Method: " & piFourierSeries

End Sub

TA的精华主题

TA的得分主题

发表于 2024-7-21 13:08 | 显示全部楼层
3. 迭代公式法 迭代公式是另一种数学方法来计算π。以下是一个使用迭代公式在VBA中计算π的示例:
Function CalculatePiIteration(iterations As Long) As Double
    Dim pi As Double
    Dim i As Long
   
    pi = 2
    For i = 1 To iterations
        pi = pi * (1 - 1 / (2 * i))
    Next i
   
    CalculatePiIteration = pi
End Function
Sub TestCalculatePi()
    Dim iterations As Long
    iterations = 1000000 ' 迭代次数,数值越大,结果越精确
   
    ' 使用迭代方法计算PI
    Dim piIteration As Double
    piIteration = CalculatePiIteration(iterations)
    MsgBox "Iteration Method: " & piIteration
End Sub

TA的精华主题

TA的得分主题

发表于 2024-7-21 14:45 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-24 00:06 来自手机 | 显示全部楼层
perfect131 发表于 2024-7-21 14:45
https://club.excelhome.net/thread-678051-1-1.html?_dsign=fa230dd4

强++++++++++
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-21 11:17 , Processed in 0.044693 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表