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

书籍源码

开发平台:

Visual C++

  1. //【例6.12】设计梯形法求积分的函数模板,梯形法求积分的函数为独立的非成员函数。该方法更简洁。
  2. #include <iostream>                                                    
  3. #include <iomanip>
  4. using namespace std;
  5. class F1 {
  6. public:
  7. double fun(double x){return (1+x+2*x*x);}
  8. };
  9. class F2 {
  10. public:
  11. double fun(double x){return (1+x+2*x*x+3*x*x*x);}
  12. };
  13. class F3 {
  14. public:
  15. double fun(double x){return (1+x+2*x*x+3*x*x*x+4*x*x*x*x);}
  16. };
  17. template<typename T>double integer (T cf,float a, float b,int n){
  18. double result,step;
  19. result=(cf.fun(a)+cf.fun(b))/2;
  20. step=(b-a)/n;
  21. for (int i=1;i<n;i++) result+=cf.fun(a+i*step);
  22. result*=step;
  23. return result;
  24. }
  25. int main(){
  26. F1 f1;F2 f2;F3 f3;
  27. double fixint1, fixint2, fixint3;
  28. int n=1000;
  29. fixint1=integer(f1,0.0,3.0,n);
  30. fixint2=integer(f2,0.0,3.0,n);
  31. fixint3=integer(f3,0.0,3.0,n);
  32. cout<<fixint1<<'n'<<fixint2<<'n'<<fixint3<<'n';
  33. return 0;
  34. }