前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计算定积分,VBA竟然比Python更准?

计算定积分,VBA竟然比Python更准?

作者头像
fanjy
发布2022-06-04 10:13:57
7850
发布2022-06-04 10:13:57
举报
文章被收录于专栏:完美Excel完美Excel

标签:VBA,Python,微积分

这段时间,一直利用晚上的空余时间在学习微积分,想将研究微积分作为自己的一项业余爱好,就好比研究Excel一样,奇怪吧!我自己也觉得很奇怪,但自己就是这样,奇怪的爱好,一个奇怪的人!

学习过微积分的人都知道,下面的定积分:

可以这样手工计算:

也可以编程计算。下面我们分别使用Python和VBA来计算,基本算法就是利用定积分的定义。(注:有兴趣的朋友可以查阅相关资料,了解定积分的定义,从而更好地理解程序)

Python

编写的程序代码如下:

代码语言:javascript
复制
from numpy import *
a,b = 0, 1
def f(x):
    return x**2
def trape(n):
    h=(b-a)/n
    x1=a
    sum=0
    for i in range(1,n):
        x2=a+i*h
        sum=sum+(f(x1)+f(x2))*h/2
        x1=x2
    return sum

我们假设n=100000,得到的结果如下图1所示。

图1

VBA

下面我们看看VBA代码及其结果。代码如下:

代码语言:javascript
复制
Sub test()
    Debug.Print trape(0, 1, 100000)
End Sub
Function trape(a As Integer, b As Integer, n As Long)
    Dim h As Double
    Dim x1 As Double
    Dim x2 As Double
    Dim sum As Double
    Dim i As Long
    h = (b - a) / n
    x1 = a
    sum = 0
    For i = 1 To n
        x2 = a + i * h
        sum = sum + (f(x1) + f(x2)) * h / 2
        x1 = x2
    Next i
    trape = sum
End Function
Function f(x As Double)
    f = x * x
End Function

运行代码后的结果如下图2所示。

图2

竟然更精确些!

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档