学习Excel技术,关注微信公众号: excelperfect
标签:VBA,Python,微积分 这段时间,一直利用晚上的空余时间在学习微积分,想将研究微积分作为自己的一项业余爱好,就好比研究Excel一样,奇怪吧!我自己也觉得很奇怪,但自己就是这样,奇怪的爱好,一个奇怪的人! 学习过微积分的人都知道,下面的定积分: 可以这样手工计算: 也可以编程计算。下面我们分别使用Python和VBA来计算,基本算法就是利用定积分的定义。(注:有兴趣的朋友可以查阅相关资料,了解定积分的定义,从而更好地理解程序) 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社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。 |