Ex6_13.cpp
上传用户:wuzhousb
上传日期:2022-07-12
资源大小:380k
文件大小:1k
源码类别:

书籍源码

开发平台:

Visual C++

  1. //【例6.13】梯形法求积分的函数integer()是通用函数,可求任一函数的定积分。不同的函数有不同的解析式,
  2. //该解析式决定了自变量在每一个小积分区间端点处的函数值。函数 integer()以一个指向函数的指针为参数,
  3. //由该参数调用欲求定积分的函数,另两个参数是积分上下限。
  4. #include <iostream>                                                    
  5. #include <iomanip>
  6. using namespace std;
  7.                                                      
  8. double f1(double x){
  9. return (1+x+2*x*x);
  10. }
  11. double f2(double x){
  12. return (1+x+2*x*x+3*x*x*x);
  13. }
  14. double f3(double x){
  15. return (1+x+2*x*x+3*x*x*x+4*x*x*x*x);
  16. }
  17. double integer (double (*func)(double),float, float);
  18. int main(){
  19. double fixint1, fixint2, fixint3;
  20. fixint1=integer(f1,0.0,3.0);
  21. fixint2=integer(f2,0.0,3.0);
  22. fixint3=integer(f3,0.0,3.0);
  23. cout<<fixint1<<'n'<<fixint2<<'n'<<fixint3<<'n';
  24. return 0;
  25. }
  26. double integer (double (*func)(double),float a,float b){
  27. double result,step;
  28. result=((*func)(a)+(*func)(b))/2;//(*func)亦可用func代替
  29. step=(b-a)/100;
  30. for (int i=1;i<100;i++) result+=(*func)(a+i*step);//亦可用func
  31. result*=step;
  32. return result;
  33. }