复化梯形公式
|
在区间 不大时 , 用梯形公式、辛卜生公式计算定积分是简单实用的 , 但当区间 较大时 , 用梯形公式、辛卜生公式计算定积分达不到精确度要求 . 为了提高计算的精确度,我们将 [a,b] 区间n等分,在每个小区间上应用梯形公式、辛卜生公式计算定积分,然后将其结果相加,这样就得到了复化梯形公式和复化辛卜生公式。
1. 复化梯形公式
将积分区间  等分 , 设 , 则节点为 
对每个小区间上应用梯形公式 , 然后将其结果相加,则得
(3.14)
称 (3.14) 式为复化梯形公式 .
当 在 [a,b] 上有连续的二阶导数时,则复化梯形公式 (3.14) 的余项推导如下:
因为

所以在区间 [a,b] 上公式 (3.14) 的误差为

又因为 在区间 [a,b] 上连续,由连续函数的性质知,在区间 [a,b] 上存在一点 ,

于是
( 3.15 )
|
复化梯形公式,复化抛物线公式和Romberg求积法的算法程序:
以下程序均定义误差限为1*10^-5;
1)复化梯形公式:
#include <stdio.h> #include <math.h> #define e 1e-5 #define a 0 //积分下限a #define b 1 //积分上限b #define f(x) (4/(1+(x*x))) //被积函数f(x) int main() { int i,n; double h,t0,t,g; n=1; //赋初值 h=(double)(b-a)/2; t=h*(f(a)+f(b)); do { t0=t; g=0; for (i=1;i<=n;i++) g+=f((a+(2*i-1)*h)); t=(t0/2)+(h*g); //复化梯形公式 n*=2; h/=2; } while (fabs(t-t0)>e); //自定义误差限e printf("%.8lf",t); |