主题:一个关于变步长求梯形的程序,附程序代码,程序的答案为0.9460831
/* Note:Your choice is C IDE */
#include "stdio.h"
#include "math.h"
double f(double x)
{
double y;
if(x==0) y=1;
else y=sin(x)/x;
return(y);
}
main()
{
double a,b,e,h,k,s,n,m=0,t[100];
printf("please input a,b,e\n");
scanf("%lf%lf%lf",&a,&b,&e);
n=1;
t[1]=(b-a)*(f(a)+f(b))/2;
do
{
h=(b-a)/n;
s=0;
for(k=0;k<n;k++)
{
s+=f(a+(k+1/2)*h);
}
t[2*n]=t[n]/2+h/2*s;
n=n*2;
m=m+1;
}
while(fabs(t[n/2]-t[n/4])>=e);
printf("%lf",m);
printf("f(x)*dx=%lf",t[n/2]);
}
#include "stdio.h"
#include "math.h"
double f(double x)
{
double y;
if(x==0) y=1;
else y=sin(x)/x;
return(y);
}
main()
{
double a,b,e,h,k,s,n,m=0,t[100];
printf("please input a,b,e\n");
scanf("%lf%lf%lf",&a,&b,&e);
n=1;
t[1]=(b-a)*(f(a)+f(b))/2;
do
{
h=(b-a)/n;
s=0;
for(k=0;k<n;k++)
{
s+=f(a+(k+1/2)*h);
}
t[2*n]=t[n]/2+h/2*s;
n=n*2;
m=m+1;
}
while(fabs(t[n/2]-t[n/4])>=e);
printf("%lf",m);
printf("f(x)*dx=%lf",t[n/2]);
}