找回密码
 加入慢享
猜你喜欢
旅行常客论坛

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

[复制链接]
发表于 2022-5-27 05:50:00 | 显示全部楼层 |阅读模式

学习Excel技术,关注微信公众号:

excelperfect


标签:VBAPython微积分

 

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

 

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

 

可以这样手工计算:

 

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

 

Python

编写的程序代码如下:

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代码及其结果。代码如下:

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

 

竟然更精确些!

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

欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。

回复

使用道具 举报

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