分享

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

 hercules028 2022-05-27 发布于四川

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

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

Image

可以这样手工计算:

Image

也可以编程计算。下面我们分别使用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所示。

Image

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所示。

Image

2

竟然更精确些!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多