读书人

梯形法求订积分值为负

发布时间: 2013-01-05 15:20:40 作者: rapoo

梯形法求定积分,值为负?
题目是用梯形法求定积分的值,我的代码如下,请大家帮忙分析下,为什么输出结果是-337326

纠结啊~~~


#include <iostream>
#include <math.h>
#define PI 3.1415926
using namespace std;
float f(float x)
{
float y;
y=sin(x);
return y;
}
float area(float (*f)(float),float a,float b,int n)
{
float h,s;
int i;
h=(b-a)/n;
for(i=1;i<=n-1;i++)
s+=f(a+i*h);
s+=(f(a)+f(b))/2;
return (s*h);
}
int main()
{
float ar;
ar=area(f,0,PI,1000);
cout<<ar<<endl;
return 0;
}


输出结果:-337326
[解决办法]
s你没有赋初值,很好改:
float area(float (*f)(float),float a,float b,int n)
{
float h,s;
int i;
h=(b-a)/n;
s = 0.0;
for(i=1;i<=n-1;i++)
s+=f(a+i*h);
s+=(f(a)+f(b))/2;
return (s*h);
}

读书人网 >C++

热点推荐