标签: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
竟然更精确些!
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。