# TridiagonalSystemSolver

#### TridiagonalSystemSolver()
Core/TridiagonalSystemSolver.js 18

  Uses the Tridiagonal Matrix Algorithm, also known as the Thomas Algorithm, to solve a system of linear equations where the coefficient matrix is a tridiagonal matrix.

### Methods

#### staticCesium.TridiagonalSystemSolver.solve(diagonal, lower, upper, right) → Array.<Cartesian3>
Core/TridiagonalSystemSolver.js 50

  Solves a tridiagonal system of linear equations.

  ##### Performance:

  Linear time.

  Name | Type | Description
  --- | --- | ---
  `diagonal` | Array.<Number> | An array with length `n` that contains the diagonal of the coefficient matrix.
  `lower` | Array.<Number> | An array with length `n - 1` that contains the lower diagonal of the coefficient matrix.
  `upper` | Array.<Number> | An array with length `n - 1` that contains the upper diagonal of the coefficient matrix.
  `right` | Array.<Cartesian3> | An array of Cartesians with length `n` that is the right side of the system of equations.

  ##### Returns:

  An array of Cartesians with length `n` that is the solution to the tridiagonal system of equations.

  ##### Throws:

  - DeveloperError : diagonal and right must have the same lengths.
  - DeveloperError : lower and upper must have the same lengths.
  - DeveloperError : lower and upper must be one less than the length of diagonal.

  ##### Example:

      var lowerDiagonal = [1.0, 1.0, 1.0, 1.0];
      var diagonal = [2.0, 4.0, 4.0, 4.0, 2.0];
      var upperDiagonal = [1.0, 1.0, 1.0, 1.0];
      var rightHandSide = [
          new Cesium.Cartesian3(410757.0, -1595711.0, 1375302.0),
          new Cesium.Cartesian3(-5986705.0, -2190640.0, 1099600.0),
          new Cesium.Cartesian3(-12593180.0, 288588.0, -1755549.0),
          new Cesium.Cartesian3(-5349898.0, 2457005.0, -2685438.0),
          new Cesium.Cartesian3(845820.0, 1573488.0, -1205591.0)
      ];

      var solution = Cesium.TridiagonalSystemSolver.solve(lowerDiagonal, diagonal, upperDiagonal, rightHandSide);