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

数学计算

开发平台:

Visual C++

  1. //////////////////////////////////////////////////////////////////////
  2. // Interpolate.h
  3. //
  4. // 插值类 CInterpolate 的声明接口
  5. //
  6. // 周长发编制, 2002/8
  7. //////////////////////////////////////////////////////////////////////
  8. #if !defined(AFX_INTERPOLATE_H__0AF22CA4_A4AA_486B_9D68_E074FABDAF85__INCLUDED_)
  9. #define AFX_INTERPOLATE_H__0AF22CA4_A4AA_486B_9D68_E074FABDAF85__INCLUDED_
  10. #if _MSC_VER > 1000
  11. #pragma once
  12. #endif // _MSC_VER > 1000
  13. #include "Matrix.h"
  14. #include <math.h>
  15. class CInterpolate  
  16. {
  17. public:
  18. //
  19. // 构造与析构
  20. //
  21. CInterpolate();
  22. virtual ~CInterpolate();
  23. //
  24. // 将字符串转换成结点值
  25. //
  26. static int GetNodesFromString(CString s, int n, double dblNodes[], const CString& sDelim = " ");
  27. //
  28. // 插值算法函数
  29. //
  30. // 一元全区间不等距插值
  31. static double GetValueLagrange(int n, double x[], double y[], double t);
  32. // 一元全区间等距插值
  33. static double GetValueLagrange(int n, double x0, double xStep, double y[], double t);
  34. // 一元三点不等距插值
  35. static double GetValueLagrange3(int n, double x[], double y[], double t);
  36. // 一元三点等距插值
  37. static double GetValueLagrange3(int n, double x0, double xStep, double y[], double t);
  38. // 连分式不等距插值
  39. static double GetValuePqs(int n, double x[], double y[], double t);
  40. // 连分式等距插值
  41. static double GetValuePqs(int n, double x0, double xStep, double y[], double t);
  42. // 埃尔米特不等距插值
  43. static double GetValueHermite(int n, double x[], double y[], double dy[], double t);
  44. // 埃尔米特等距插值
  45. static double GetValueHermite(int n, double x0, double xStep, double y[], double dy[], double t);
  46. // 埃特金不等距逐步插值
  47. static double GetValueAitken(int n, double x[], double y[], double t, double eps = 0.000001);
  48. // 埃特金等距逐步插值
  49. static double GetValueAitken(int n, double x0, double xStep, double y[], double t, double eps = 0.000001);
  50. // 光滑不等距插值
  51. static double GetValueAkima(int n, double x[], double y[], double t, double s[], int k = -1);
  52. // 光滑等距插值
  53. static double GetValueAkima(int n, double x0, double xStep, double y[], double t, double s[], int k = -1);
  54. // 第一种边界条件的三次样条函数插值、微商与积分
  55. static double GetValueSpline1(int n, double x[], double y[], double dy[], double ddy[], 
  56.   int m, double t[], double z[], double dz[], double ddz[]);
  57. // 第二种边界条件的三次样条函数插值、微商与积分
  58. static double GetValueSpline2(int n, double x[], double y[], double dy[], double ddy[], 
  59.   int m, double t[], double z[], double dz[], double ddz[]);
  60. // 第三种边界条件的三次样条函数插值、微商与积分
  61. static double GetValueSpline3(int n, double x[], double y[], double dy[], double ddy[], 
  62.   int m, double t[], double z[], double dz[], double ddz[]);
  63. // 二元三点插值
  64. static double GetValueTqip(int n, double x[], int m, double y[], double z[], double u, double v);
  65. // 二元全区间插值
  66. static double GetValueLagrange2(int n, double x[], int m, double y[], double z[], double u, double v);
  67. };
  68. #endif // !defined(AFX_INTERPOLATE_H__0AF22CA4_A4AA_486B_9D68_E074FABDAF85__INCLUDED_)