c语言编写下面定积分计算?

如题所述

第1个回答  2014-07-14
给你一个示例程序,也是做积分,是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就越小,同时小矩形数量就越多,那么累加计算的结果误差就越小,就越接近理论计算值。

本回答被提问者采纳
第2个回答  2014-07-14
亲,建议用MATLAB吧