题目:按如下函数原型,采用梯形法编程实现,在积分区间[a,b]内计算函数y1=∫10(1+x2)dx和y2=∫30x1+x2dx的定积分。其中,指向函数的指针变量f用于接收被积函数的入口地址。
Integral(float (*f)(float), float a, float b);
**输出格式要求:"y1=%f\ny2=%f\n"
我的答案:请问哪里错了?
#include
#define n 10000
float y1(float x)
{
float y;
y = x*x + 1;
return y;
}
float y2(float x)
{
float y;
y = x/(x*x + 1);
return y;
}
Integral(float (*f)(float), float a, float b)
{
int i;
float w;
float h = (b-a)/n;
float s = f(a)+f(b);
for(i = 1;i < n; i++)
{
s += f(a + i*h);
}
w = s*h /2;
return w;
}
main()
{
float y11;
y11 = Integral( y1 , 0, 1);
float y22;
y22 = Integral( y2 , 0, 3);
printf("y1=%f\ny2=%f\n",y11,y22);
return 0;
}