數值積分中,插值求積公式可以近似求積函式。對於插值函式,可以用梯形公式來近似,為了滿足一定的精度,需要將求積區間分成很多個小的區間,分別用於梯形公式,但是由於某些時候步長不能很好的控制,所以需要變步長。本演算法給出變步長求積公式,該演算法的具體形式可以在數值分析的書籍中找到,下面直接給出演算法的c++**;
/*變步長梯形求積法
*該函式double tarp_form(double a,double b,double eps,double (*f)(double)
*double a:積分區間左端點
*double b:幾根區間右端點
*double eps:誤差精度
*double* f(double):積分函式
*函式值返回double型別
*/#include
#include
double trap_form(double a, double b, double eps, double (*f)(double))
t = (t1 + h*s) / 2.0;
p = fabs(t1 - t); //前後積分之差
//繼續增加結點
t1 = t;
n = 2 * n;
h = h / 2.0;
}return t;
} //積分函式y=exp(-x^2)
double func1(double x)
//積分函式y=1/(1+x^2)
double func2(double x)
//func3=sinx/x
double func3(double x)
int main()
下面是運算結果: