回 帖 发 新 帖 刷新版面

主题:新手求教一个求定积分的问题  谢谢各位了

请问下  我只是想求 0到π这个范围下sinx的定积分  这是我的算法 
 double integral(double a,double b,double (*fun)(double))
{
const double n=1000.0;
double l,sum=0.0;
l=(b-a)/n;
for(int i=1;i<=n;i++)
sum+=l*fun(a+i*l);
return sum;
}   请问错在哪   谢谢了   a是函数的下限 b是函数的上限 l是分成1000等分 每一等分的长度  我是把图形分成1000个矩形 然后算矩形的面积和的方式求解的

回复列表 (共26个回复)

21 楼

晕 不好意思啊...我只回复一次不知道为什么这么多....

22 楼

我这运行没错..
输入 0 3.1415926
得出的结果是2
正确...

23 楼

我用VC6.0试了,好用,结果为2

24 楼

你们输入0到6.28就是错的  只有这个是错的 ~~!!!! 真的

25 楼

不等于0是正常的,除非你做个判断,当小于某个数时就判定为0.

26 楼

即使输入0 6.283185307
显示是-5.65666e-13
而不是0,是因为你求sin 的intergral,是用riemann sum来求..是用右值来求..况且你是分成1000个方形...当方形的数量趋向于无限大的时候, 结果才是0...

我来回复

您尚未登录,请登录后再回复。点此登录或注册