程序填空题:求定积分通用函数 - C/C++ 函数与抽象
![image.png](~/f8467b94-c9a9-45a7-854d-ef48a6ab3753.png)
下述程序用于求解上述定积分。
【问题分析】
根据数学知识,求定积分的问题实际上就是求函数f(x)当x在区间[a,b]时由x=a、x=b、y=0和y=f(x)围成的曲边四边形的面积。使用计算机解决这类问题的常用方法有矩形法、梯形法、辛普生法等。以梯形法为例,求定积分有如下几个步骤,如图1所示。
(1) 将区间[a,b]划分为若干等分,等分数取决于要求的精度;
(2) 计算出所有等分点的函数值f(xi);
(3) 连接相邻两个等分点的函数值,将所求曲边四边形区域用若干个小的梯形代替。此时相邻两等分点函数值之间的曲线和连接的直线之间的区域即为误差;
(4) 按平面几何公式求出所有小梯形的面积,然后求和得到曲边四边形面积的近似值。当积分区间的等分数趋近于无穷等分时,梯形面积之和无限趋近于真实的积分值。注意用计算机求解时只能求出满足精度要求的近似值。
![image.png](~/f72043c4-01ac-4ebe-8196-44cf636124da.png)
图1
请将下述程序补充完整,使其可以正常运行。
提示:integrate()的第1个参数应为函数指针,代表了被积分的函数;a,b分别为积分下界及上界,N为细分数。
c++
#include <stdio.h>
double f1(double x){
return 1+x;
}
double f2(double x){
return
}
double integrate(, double a, double b, int N){
double h = (b-a)/N;
double area = ;
for (int i=0;i<N;i++)
area += ((f(a+i*h)+)*h/2.0);
return ;
}
int main()
{
printf("integrate(f1,0,2,100)=%.2f\n",integrate(f1,0,2,100));
printf("integrate(f2,-1,1,100)=%.2f\n",integrate(f2,-1,1,100));
return 0;
}
【提示】
程序的执行结果应为:
integrate(f1,0,2,100)=4.00
integrate(f2,-1,1,100)=1.11
### 感觉不会? 那试着听听**免费的B站网课**
[简洁的C和C++ - 重庆大学在线课程](https://www.bilibili.com/video/BV1it411d7zx/)
[Python编程基础及应用 - 重庆大学在线课程](https://www.bilibili.com/video/BV1kt411R7uW/)
![image.png](~/6e79c9e3-cb7f-486d-ab78-36b5a8f655c0.png)
答案:
第1空:1.0/(1.0+4.0*x*x);
第2空:double (*f)(double)
第3空:0.0
第4空:f(a+(i+1)*h)
第5空:area