源代码W-tc调试成功,却结果错误?
说明:这是为一个计算方法编写的程序:ps:这是为一道题编写的两个程序:
请问这两个程序中的f(x)有什么不同?
——————————————————————————
#include<stdio.h>
#include<math.h>
#define a 2
#define b 3
#define e 0.00005
#define f(x) 1/(x*x-1)
double T(int N)
{
int i,n;
double h,x[20]={0},y[20]={0},result=0;
n=N;
h=(b-a)/n;
for(i=1;i<n;i++)
{
x[i]=a+h*i;
y[i]=f(x[i]);
}
for(i=1;i<n;i++)
result+=y[i];
result+=f(a)/2+f(b)/2;
result*=h;
return result;
}
int main()
{
int i=2;
double tmp;
do{
tmp=T(i)-T(i-1);
if(tmp>e)
i++;
else
{
printf("\nT(%d)=%f,T(%d)=%f",i,T(i),(i-1),T(i-1));
printf("\n复化梯形公式求得的结果:T(%d)=%f",i,T(i));
return ;
}
}
while(1);
getch();
}
——————————————————————————————
#include<stdio.h>
#include<math.h>
#define a 2
#define b 3
#define e 0.00005
f(x)
double f(int x) {
return 1/(x*x-1);
}
double T(int N)
{
int i,n;
double h,x[20]={0},y[20]={0},result=0;
n=N;
h=(b-a)/n;
for(i=1;i<n;i++)
{
x[i]=a+h*i;
y[i]=f(x[i]);
printf("\t y[%d]=%lf",i,y[i]);
}
for(i=1;i<n;i++)
result+=y[i];
result+=f(a)/2+f(b)/2;
result*=h;
return result;
}
int main()
{
int i=2;
double tmp;
do{
tmp=T(i)-T(i-1);
if(tmp>e)
i++;
else
{
printf("\nT(%d)=%f,T(%d)=%f",i,T(i),(i-1),T(i-1));
printf("\n复化梯形公式求得的结果:T(%d)=%f",i,T(i));
return ;
}
}
while(1);
getch();
}