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. public:
  19. // 构造与析构
  20. CLEquations();
  21. CLEquations(const CMatrix& mtxCoef, const CMatrix& mtxConst);
  22. virtual ~CLEquations();
  23. // 初始化
  24. BOOL Init(const CMatrix& mtxCoef, const CMatrix& mtxConst);
  25. // 获取基本属性
  26. CMatrix GetCoefMatrix() const
  27. {
  28. return m_mtxCoef;
  29. }
  30. CMatrix GetConstMatrix() const
  31. {
  32. return m_mtxConst;
  33. }
  34. int GetNumEquations() const
  35. {
  36. return GetCoefMatrix().GetNumRows();
  37. }
  38. int GetNumUnknowns() const
  39. {
  40. return GetCoefMatrix().GetNumColumns();
  41. }
  42. // 线性方程组求解算法
  43. // 全选主元高斯消去法
  44. BOOL GetRootsetGauss(CMatrix& mtxResult);
  45. // 全选主元高斯-约当消去法
  46. BOOL GetRootsetGaussJordan(CMatrix& mtxResult);
  47. // 复系数方程组的全选主元高斯消去法
  48. BOOL GetRootsetGauss(CMatrix mtxCoefImag, CMatrix mtxConstImag, CMatrix& mtxResult, CMatrix& mtxResultImag);
  49. // 复系数方程组的全选主元高斯-约当消去法
  50. BOOL GetRootsetGaussJordan(CMatrix mtxCoefImag, CMatrix mtxConstImag, CMatrix& mtxResult, CMatrix& mtxResultImag);
  51. // 求解三对角线方程组的追赶法
  52. BOOL GetRootsetTriDiagonal(CMatrix& mtxResult);
  53. // 一般带型方程组的求解
  54. BOOL GetRootsetBand(int nBandWidth, CMatrix& mtxResult);
  55. // 求解对称方程组的分解法
  56. BOOL GetRootsetDjn(CMatrix& mtxResult);
  57. // 求解对称正定方程组的平方根法
  58. BOOL GetRootsetCholesky(CMatrix& mtxResult);
  59. // 求解大型稀疏方程组的全选主元高斯-约去消去法
  60. BOOL GetRootsetGgje(CMatrix& mtxResult);
  61. // 求解托伯利兹方程组的列文逊方法
  62. BOOL GetRootsetTlvs(CMatrix& mtxResult);
  63. // 高斯-赛德尔迭代法
  64. BOOL GetRootsetGaussSeidel(CMatrix& mtxResult, double eps = 0.000001);
  65. // 求解对称正定方程组的共轭梯度法
  66. void GetRootsetGrad(CMatrix& mtxResult, double eps = 0.000001);
  67. // 求解线性最小二乘问题的豪斯荷尔德变换法
  68. BOOL GetRootsetMqr(CMatrix& mtxResult, CMatrix& mtxQ, CMatrix& mtxR);
  69. // 求解线性最小二乘问题的广义逆法
  70. BOOL GetRootsetGinv(CMatrix& mtxResult, CMatrix& mtxAP, CMatrix& mtxU, CMatrix& mtxV, double eps = 0.000001);
  71. // 病态方程组的求解
  72. BOOL GetRootsetMorbid(CMatrix& mtxResult, int nMaxIt = 60, double eps = 0.000001);
  73. // 保护性数据成员
  74. protected:
  75. CMatrix m_mtxCoef; // 系数矩阵
  76. CMatrix m_mtxConst; // 常数矩阵
  77. };
  78. #endif // !defined(AFX_LEQUATIONS_H__89A63160_719C_440D_9DFC_953F79BD4C4D__INCLUDED_)