复化梯形公式(Composite Trapezoidal Quadrature)
区间[a,b]划分为n等分,分点为x_k=a+kh, h=\frac{b-a}{n}, k=0,1,2,\dots,n。对于每个子区间[x_k, x_{k+1}]利用公式
I=\int_{a}^{b}f(x)dx = \sum_{k=0}^{n-1}\int_{x+k}^{x_{k+1}}f(x)dx=\frac{h}{2}\sum_{k=0}^{n-1}[f(x_k)+f(x_{k+1})]+R_n(f)
复化梯形公式也就是其中的主要部分T_n=\frac{h}{2}\sum_{k=0}^{n-1}[f(x_k)+f(x_{k+1})]=\frac{h}{2}[f(a)+2\sum_{k=1}^{n-1}f(x_k)+f(b)]
知道这个代码就很容易了
double compositeTrapedoizalQuasdrature(double x[], double y[], int len) { double a = x[0]; double b = x[len - 1]; double result = function(a) + function(b); double h = (b - a) / (len - 1); for (int i = 1; i < len-1;i++) { result += 2 * function(x[i]); printf("i=%d\n", i); } result *= h * 0.5; return result; }
原文:https://www.cnblogs.com/zhaoke271828/p/13958109.html