老规矩,数学原理什么的就不写了。
直接贴代码和实例演示,以下代码基于python和numpy。
在这里,我将用代码实现复化梯形算法、复化 Simpson 算法、Romberg 积分算法和三点 Gauss-Legendre求积算法。
往期博客:
复化梯形算法
复化梯形公式如下图所示:
首先
import numpy as np
定义函数
以下便是我定义的函数:
def tx_fh(x0,f,n):
a=x0[0]
b=x0[1]
x=np.linspace(a,b,n+1)
y=2*np.sum(f(x))-f(a)-f(b)
tn=((b-a)/n)*y/2
return tn
参数说明
“x0”指的是自变量的定义域。
“f”指的是函数(以后再实现不是函数,而是确定值的)。
“n”指的是将定义域分为n等份。
实例运行
x=np.array([0,1])
f=lambda x:4/(1+x**2)
tx_fh(x,f,2**3)
得出以下结果:
3.1389884944910893
复化 Simpson 算法
复化 Simpson 公式如下图所示:
定义函数
以下便是我定义的函数: