#include<stdio.h>
#include<stdlib.h>
#include<math.h>
double fx(double x)//被积函数
{
if(x==0)return 1;
return sin(x)/x;
}
double getS(double a,double b,double h)
{
double res=0.0;
double i;
for(i=a+h/2.0; i<b; i+=h)
res+=fx(i);
return res;
}
double Romberg(double a,double b,double e) //龙贝格积分,在区间[a,b]上积分,误差为e
{
int k=1,counter=0;
double T1,T2,S1,S2,C1,C2,R1,R2;
double h=b-a;
double s;
T1=(fx(a)+fx(b))*h/2.0;
while(1)
{
counter++;
s=getS(a,b,h);
T2=(T1+h*s)/2.0;
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余2页未读,立即下载