给你一个示例程序,也是做积分,是y=x*x的[0,2]的定积分。
func(float x)
{
float f;
float a,b,c;
a=1,b=0,c=0;
f=a*x*x+b*x+c;
return f;
}
test_jifen()
{
float dx=0.01;
float bound_a=0,bound_b=2,x,y;
float temp;
int j;
x=bound_a;
y=0;
while(x<bound_b)
{
temp=(func(x))*dx;
y+=temp;
x+=dx;
}
QMessageBox::about(this,"result","y="+QString::number(y,'g'));//这句用于输出结果
}
我用qt测试过,结果是2.68几,把dx的值变成0.001更接近理论值2.66667的无限循环。
仅供参考。
追问[0,2]区间直接取0,1,2不行吗?为啥要取0.001呀???
追答看来你没有深刻理解高数里积分的概念,你自己认真想想吧。
追问晕,数学原函数计算就就是取上限2,下限0吗???你理解你说下嘛。为啥计算机要取0.001呀?
追答其实我真觉得这个问题没什么可说的了。把整个图形面积细分成若干个小矩形面积,对矩形面积累加求和。dx是求每个小面积用的步长,相当于每个小面积的宽度,func(x)就相当与面积的长度。每个小面积越窄,dx就越小,同时小矩形数量就越多,那么累加计算的结果误差就越小,就越接近理论计算值。
本回答被提问者采纳