變步長梯形求數值積分

2021-07-25 14:43:31 字數 986 閱讀 5935

數值積分中,插值求積公式可以近似求積函式。對於插值函式,可以用梯形公式來近似,為了滿足一定的精度,需要將求積區間分成很多個小的區間,分別用於梯形公式,但是由於某些時候步長不能很好的控制,所以需要變步長。本演算法給出變步長求積公式,該演算法的具體形式可以在數值分析的書籍中找到,下面直接給出演算法的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()

下面是運算結果: