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

数学计算

开发平台:

Visual C++

  1. //////////////////////////////////////////////////////////////////////
  2. // LEquations.h
  3. //
  4. // 求解线性方程组的类 CLEquations 的声明接口
  5. //
  6. // 周长发编制, 2002/8
  7. //////////////////////////////////////////////////////////////////////
  8. #if !defined(AFX_LEQUATIONS_H__89A63160_719C_440D_9DFC_953F79BD4C4D__INCLUDED_)
  9. #define AFX_LEQUATIONS_H__89A63160_719C_440D_9DFC_953F79BD4C4D__INCLUDED_
  10. #if _MSC_VER > 1000
  11. #pragma once
  12. #endif // _MSC_VER > 1000
  13. // 需要调用矩阵操作类
  14. #include "Matrix.h"
  15. // 类声明
  16. class CLEquations  
  17. {
  18. //
  19. // 公有接口函数
  20. //
  21. public:
  22. //
  23. // 构造与析构
  24. //
  25. CLEquations(); // 默认构造函数
  26. // 指定系数和常数构造函数
  27. CLEquations(const CMatrix& mtxCoef, const CMatrix& mtxConst);
  28. virtual ~CLEquations(); // 析构函数
  29. // 初始化
  30. BOOL Init(const CMatrix& mtxCoef, const CMatrix& mtxConst);
  31. //
  32. // 属性
  33. //
  34. CMatrix GetCoefMatrix() const; // 获取系数矩阵
  35. CMatrix GetConstMatrix() const; // 获取常数矩阵
  36. int GetNumEquations() const; // 获取方程个数
  37. int GetNumUnknowns() const; // 获取未知数个数
  38. //
  39. // 线性方程组求解算法
  40. //
  41. // 全选主元高斯消去法
  42. BOOL GetRootsetGauss(CMatrix& mtxResult);
  43. // 全选主元高斯-约当消去法
  44. BOOL GetRootsetGaussJordan(CMatrix& mtxResult);
  45. // 复系数方程组的全选主元高斯消去法
  46. BOOL GetRootsetGauss(const CMatrix& mtxCoefImag, const CMatrix& mtxConstImag, CMatrix& mtxResult, CMatrix& mtxResultImag);
  47. // 复系数方程组的全选主元高斯-约当消去法
  48. BOOL GetRootsetGaussJordan(const CMatrix& mtxCoefImag, const CMatrix& mtxConstImag, CMatrix& mtxResult, CMatrix& mtxResultImag);
  49. // 求解三对角线方程组的追赶法
  50. BOOL GetRootsetTriDiagonal(CMatrix& mtxResult);
  51. // 一般带型方程组的求解
  52. BOOL GetRootsetBand(int nBandWidth, CMatrix& mtxResult);
  53. // 求解对称方程组的分解法
  54. BOOL GetRootsetDjn(CMatrix& mtxResult);
  55. // 求解对称正定方程组的平方根法
  56. BOOL GetRootsetCholesky(CMatrix& mtxResult);
  57. // 求解大型稀疏方程组的全选主元高斯-约去消去法
  58. BOOL GetRootsetGgje(CMatrix& mtxResult);
  59. // 求解托伯利兹方程组的列文逊方法
  60. BOOL GetRootsetTlvs(CMatrix& mtxResult);
  61. // 高斯-赛德尔迭代法
  62. BOOL GetRootsetGaussSeidel(CMatrix& mtxResult, double eps = 0.000001);
  63. // 求解对称正定方程组的共轭梯度法
  64. void GetRootsetGrad(CMatrix& mtxResult, double eps = 0.000001);
  65. // 求解线性最小二乘问题的豪斯荷尔德变换法
  66. BOOL GetRootsetMqr(CMatrix& mtxResult, CMatrix& mtxQ, CMatrix& mtxR);
  67. // 求解线性最小二乘问题的广义逆法
  68. BOOL GetRootsetGinv(CMatrix& mtxResult, CMatrix& mtxAP, CMatrix& mtxU, CMatrix& mtxV, double eps = 0.000001);
  69. // 病态方程组的求解
  70. BOOL GetRootsetMorbid(CMatrix& mtxResult, int nMaxIt = 60, double eps = 0.000001);
  71. //
  72. // 保护性数据成员
  73. //
  74. protected:
  75. CMatrix m_mtxCoef; // 系数矩阵
  76. CMatrix m_mtxConst; // 常数矩阵
  77. };
  78. #endif // !defined(AFX_LEQUATIONS_H__89A63160_719C_440D_9DFC_953F79BD4C4D__INCLUDED_)