矩形法求函数的定积分Word下载.docx
《矩形法求函数的定积分Word下载.docx》由会员分享,可在线阅读,更多相关《矩形法求函数的定积分Word下载.docx(3页珍藏版)》请在冰豆网上搜索。
Si=b-anf(a+b-ani)
所有小矩形的面积之和为
i=1nSi
实际的定积分的值
abf(x)dx=limn→∞i=1nSi
所以说n值越大,计算越精确。
源代码如下:
#include<
stdio.h>
//矩形法求定积分的算法
math.h>
#defineN1e6
doublef1(doublex)
{
doubley;
y=1.0+x;
returny;
}
doublef2(doublex)
y=2.0*x+3;
doublef3(doublex)
y=exp(x)+1.0;
doublef4(doublex)
y=pow(1.0+x,2);
doublef5(doublex)
y=pow(x,3);
doubleintegral(doublea,doubleb,double(*fun)(double))
inti;
doubled=(b-a)/N;
doublesum=0;
for(i=1;
i<
=N;
i++)
{
sum=sum+d*(*fun)(a+i*d);
//定积分近似计算公式
}//fun是指向函数的指针,该指针所指向的函数带有一个double型的形参,
//同时,该函数的返回值类型为double
returnsum;
voidmain()
doubleS[5];
intj;
S[0]=integral(0,1,f1);
//fun指向f1
S[1]=integral(0,1,f2);
//fun指向f2
S[2]=integral(0,1,f3);
//fun指向f3
S[3]=integral(0,1,f4);
//fun指向f4
S[4]=integral(0,1,f5);
//fun指向f5
printf("
输出各个函数的积分值:
\n"
);
for(j=0;
j<
5;
j++)
printf("
%lf\n"
S[j]);
}
运行结果如图所示:
可以发现,计算值与理论值十分接近,当N取的足够大时,可以获得十分精确的值,但是运算次数也会增加,本函数的时间复杂度为O(n)。
从指针的用法上来讲,本程序使用了“指向函数的指针”。
一个函数的函数名,代表了这个函数的首地址,在主函数中,5次调用integral函数,实现了对5个不同的函数求积分。
integral函数包含了三个参数,前两个参数表示被积函数的上下限。
3