首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

梯形法求订积分,值为负

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

梯形法求定积分,值为负?
题目是用梯形法求定积分的值,我的代码如下,请大家帮忙分析下,为什么输出结果是-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);
}

热点排行