復(fù)化梯形公式
|
|
在區(qū)間 不大時(shí) , 用梯形公式、辛卜生公式計(jì)算定積分是簡(jiǎn)單實(shí)用的 , 但當(dāng)區(qū)間 較大時(shí) , 用梯形公式、辛卜生公式計(jì)算定積分達(dá)不到精確度要求 . 為了提高計(jì)算的精確度,我們將 [a,b] 區(qū)間n等分,在每個(gè)小區(qū)間上應(yīng)用梯形公式、辛卜生公式計(jì)算定積分,然后將其結(jié)果相加,這樣就得到了復(fù)化梯形公式和復(fù)化辛卜生公式。
1. 復(fù)化梯形公式
將積分區(qū)間  等分 , 設(shè) , 則節(jié)點(diǎn)為 
對(duì)每個(gè)小區(qū)間上應(yīng)用梯形公式 , 然后將其結(jié)果相加,則得
(3.14)
稱(chēng) (3.14) 式為復(fù)化梯形公式 .
當(dāng) 在 [a,b] 上有連續(xù)的二階導(dǎo)數(shù)時(shí),則復(fù)化梯形公式 (3.14) 的余項(xiàng)推導(dǎo)如下:
因?yàn)?

所以在區(qū)間 [a,b] 上公式 (3.14) 的誤差為

又因?yàn)? 在區(qū)間 [a,b] 上連續(xù),由連續(xù)函數(shù)的性質(zhì)知,在區(qū)間 [a,b] 上存在一點(diǎn) ,

于是
( 3.15 )
|
復(fù)化梯形公式,復(fù)化拋物線(xiàn)公式和Romberg求積法的算法程序:
以下程序均定義誤差限為1*10^-5;
1)復(fù)化梯形公式:
#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))) //被積函數(shù)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); //復(fù)化梯形公式 n*=2; h/=2; } while (fabs(t-t0)>e); //自定義誤差限e printf("%.8lf",t); |