【题目】
用矩形法求积分sinx (0,1) cos(-1,1) exp(0,2)
【程序】
#include <iostream>
#include <cmath>
using namespace std;
main()
{
double integral(double (*p)(double),double up_limit,double low_limit);
double (*p) (double); p=sin;
cout<<"∫sin(x) from 0~1 Result is: "<<integral(p,1,0)<<endl;
p=cos;
cout<<"∫cos(x) from -1~1 Result is: "<<integral(p,1,-1)<<endl;
p=exp;
cout<<"∫exp(x) from 0~2 Result is: "<<integral(p,2,0)<<endl;
return 0;
}
double integral(double (*p)(double),double up_limit,double low_limit)//注意是(*p)
{
double j;
double m;
m=(fabs(up_limit)+fabs(low_limit))/1000000;
cout<<"m="<<m<<endl;
double result;
for(result=0,j=1;j<1000000;j++)
{
result+=(*p)(j*m+low_limit)*m;
}
return (result);
}
运行结果:

1.使用指针指向函数时,调用函数时注意是(*p)()而不是p(),这点谭浩强的书上是有错误的;
2.在函数调用指向函数的指针时,注意也是(*p)(double),而不是*p(double),后者是指针函数,不然会报错。
这个也是纠缠了很久,老是提示result那一个有错误
3.上下限注意用绝对值
本文介绍了使用矩形法计算不同函数在特定区间内的积分,包括sin(x), cos(x)和exp(x)的积分,从0到1, -1到1, 0到2。通过代码实现展示了求解过程,并讨论了指针函数调用和积分计算中的注意事项。
3288

被折叠的 条评论
为什么被折叠?



