Integral.h
上传用户:weigute
上传日期:2007-03-02
资源大小:1287k
文件大小:2k
源码类别:

数学计算

开发平台:

Visual C++

  1. //////////////////////////////////////////////////////////////////////
  2. // Integral.h
  3. //
  4. // 操作数值积分的类 CIntegral 的声明接口
  5. //
  6. // 周长发编制, 2002/8
  7. //////////////////////////////////////////////////////////////////////
  8. #if !defined(AFX_INTEGRAL_H__21478079_DA0B_4D58_8565_E197C022F2FA__INCLUDED_)
  9. #define AFX_INTEGRAL_H__21478079_DA0B_4D58_8565_E197C022F2FA__INCLUDED_
  10. #if _MSC_VER > 1000
  11. #pragma once
  12. #endif // _MSC_VER > 1000
  13. #include <math.h>
  14. class CIntegral  
  15. {
  16. public:
  17. //
  18. // 构造与析构
  19. //
  20. CIntegral();
  21. virtual ~CIntegral();
  22. //
  23. // 虚函数:计算积分函数值,必须在派生类中覆盖该函数
  24. //
  25. virtual double Func(double x)
  26. {
  27. return 0.0;
  28. }
  29. //
  30. // 数值积分求解算法
  31. //
  32. // 变步长梯形求积法
  33. double GetValueTrapezia(double a, double b, double eps = 0.000001);
  34. // 变步长辛卜生求积法
  35. double GetValueSimpson(double a, double b, double eps = 0.000001);
  36. // 自适应梯形求积法
  37. double GetValueATrapezia(double a, double b, double d, double eps = 0.000001);
  38. // 龙贝格求积法
  39. double GetValueRomberg(double a, double b, double eps = 0.000001);
  40. // 计算一维积分的连分式法
  41. double GetValuePq(double a, double b, double eps = 0.000001);
  42. // 高振荡函数求积法
  43. double GetValuePart(double a, double b, int m, int n, double fa[], double fb[], double s[]);
  44. // 勒让德-高斯求积法
  45. double GetValueLegdGauss(double a, double b, double eps = 0.000001);
  46. // 拉盖尔-高斯求积法
  47. double GetValueLgreGauss();
  48. // 埃尔米特-高斯求积法
  49. double GetValueHermiteGauss();
  50. //
  51. // 内部函数
  52. //
  53. private:
  54. void ppp(double x0, double x1, double h, double f0, double f1, double t0, double eps, double d, double t[]);
  55. };
  56. #endif // !defined(AFX_INTEGRAL_H__21478079_DA0B_4D58_8565_E197C022F2FA__INCLUDED_)