|
在区间 1. 复化梯形公式 将积分区间 对每个小区间上应用梯形公式 , 然后将其结果相加,则得 称 (3.14) 式为复化梯形公式 . 当 因为 所以在区间 [a,b] 上公式 (3.14) 的误差为 又因为 于是 |
复化梯形公式,复化抛物线公式和Romberg求积法的算法程序:
以下程序均定义误差限为1*10^-5;
1)复化梯形公式:
#include <stdio.h>
#include <math.h>
#define e 1e-5
#define a 0
#define b 1
#define f(x) (4/(1+(x*x)))
int main()
{
return 0;
}
2)复化抛物线公式:
#include <stdio.h>
#include <math.h>
#define e 1e-5
#define a 0
#define b 1
#define f(x) (4/(1+(x*x)))
int main()
{
}
3)Romberg求积法:
#include <stdio.h>
#include <math.h>
#define e 1e-5
#define a 0
#define b 1
#define f(x) (4/(1+(x*x)))
double t[100][100];
int main()
{
}
给定精度,定义误差限为1*10^-5,分别求出步长的先验估计值:用复化梯形公式计算,要求h<0. 007746。用复化抛物线公式计算,要求h<0.131607。而实际上,在运用后验估计的程序中,以相同的精度,得到的复化梯形步长为h= 0.003906,得到的复化抛物线步长为h=0.0625,它们大致上分别为先验估计值的一半,符合要求。
在实践中比较上体三种算法的计算量,当取相同精度1*10^-5时,复化梯形调用函数f257次,孵化抛物线公式调用函数f17次,Romberg算法调用函数 f17次,从计算量上看,后两者较小。