# eryar

posts - 490, comments - 590, trackbacks - 0, articles - 0

### Use Math Utilities in the OpenCASCADE

• Module FoundationClasses; 基础类；
• Module ModelingData; 造型数据；
• Module ModelingAlgorihtms; 造型算法；
• Module Visualization; 可视化；
• Module ApplicationFramework; 程序框架；
• Module DataExchange; 数据交换；
• Module Draw;

• Toolkit TKMath; 数学工具箱；
• Toolkit TKernel; 核心工具箱；

This class implements the Gauss LU decomposition (Crout algorithm) with partial pivoting (rows interchange) of a square matrix and the different possible derived calculation :

• Solution of a set of linear equations.
• Inverse of a matrix.
• Determinant of a matrix.

• 线性方程组的求解；
• 矩阵的逆；
• 矩阵的行列式；

`   1:  //------------------------------------------------------------------------------`
`   2:  //    Copyright (c) 2012 eryar All Rights Reserved.`
`   3:  //`
`   4:  //        File    : Main.cpp`
`   5:  //        Author  : eryar@163.com`
`   6:  //        Date    : 2012-6-20 20:06`
`   7:  //        Version : 1.0v`
`   8:  //`
`   9:  //    Description : Learn to use OpenCASCADE Math Utilities.`
`  10:  //`
`  11:  //==============================================================================`
`  12:   `
`  13:  #include <math_Gauss.hxx>`
`  14:   `
`  15:  int main(int argc, char* argv[])`
`  16:  {`
`  17:      math_Matrix aMatrix(1, 3, 1, 3);`
`  18:      math_Vector b1(1, 3);`
`  22:   `
`  23:      //aMatrix, b1 and b2 are set here to the appropriate values`
`  24:      aMatrix(1, 1)   = 10;`
`  25:      aMatrix(2, 2)   = 2;`
`  26:      aMatrix(3, 3)   = 8;`
`  27:   `
`  28:      b1.Init(1);`
`  29:   `
`  30:      // Use Gause method`
`  31:      math_Gauss  sol(aMatrix);`
`  32:   `
`  33:      // LU decomposition of A`
`  34:      if (sol.IsDone())`
`  35:      {`
`  36:          sol.Solve(b1, x1);`
`  37:      }`
`  38:      else`
`  39:      {`
`  40:          // Fix up`
`  41:          try `
`  42:          {`
`  43:              sol.Solve(b1, x1);`
`  44:          }`
`  45:          catch (Standard_Failure)`
`  46:          {`
`  47:              Handle(Standard_Failure) error = Standard_Failure::Caught();`
`  48:              cout<<error<<endl;`
`  49:          }`
`  50:      }`
`  51:   `
`  52:      cout<<aMatrix;`
`  53:      cout<<b1;`
`  54:      cout<<x1;`
`  55:   `
`  56:      return 0;`
`  57:  }`

`   1:  math_Matrix of RowNumber = 3 and ColNumber = 3`
`   2:  math_Matrix ( 1, 1 ) = 10`
`   3:  math_Matrix ( 1, 2 ) = 0`
`   4:  math_Matrix ( 1, 3 ) = 0`
`   5:  math_Matrix ( 2, 1 ) = 0`
`   6:  math_Matrix ( 2, 2 ) = 2`
`   7:  math_Matrix ( 2, 3 ) = 0`
`   8:  math_Matrix ( 3, 1 ) = 0`
`   9:  math_Matrix ( 3, 2 ) = 0`
`  10:  math_Matrix ( 3, 3 ) = 8`
`  11:  math_Vector of Length = 3`
`  12:  math_Vector(1) = 1`
`  13:  math_Vector(2) = 1`
`  14:  math_Vector(3) = 1`
`  15:  math_Vector of Length = 3`
`  16:  math_Vector(1) = 0.1`
`  17:  math_Vector(2) = 0.5`
`  18:  math_Vector(3) = 0.125`
`  19:  Press any key to continue . . .`

### Feedback

@liangquan

X1是什么类型，也是VECTOR么？怎么定义了X1结果也不对。。。