tridiagonal_csc

Function tridiagonal_csc 

Source
pub fn tridiagonal_csc(
    diagonal: &[f64],
    lower: &[f64],
    upper: &[f64],
) -> IterSolverResult<CscMatrix<f64>>
Expand description

Creates a tridiagonal sparse CSC matrix from diagonal, lower diagonal, and upper diagonal vectors.

This function constructs a tridiagonal matrix where:

  • The main diagonal contains elements from the diagonal vector
  • The lower-diagonal (below main) contains elements from the lower vector
  • The upper-diagonal (above main) contains elements from the upper vector

§Arguments

  • diagonal - A slice containing the main diagonal elements
  • lower - A slice containing the lower diagonal elements (lower-diagonal)
  • upper - A slice containing the upper diagonal elements (upper-diagonal)

§Dimension Requirements

For a valid tridiagonal matrix:

  • diagonal.len() must equal lower.len() + 1
  • lower.len() must equal upper.len()

This is because an n×n tridiagonal matrix has:

  • n diagonal elements
  • (n-1) lower-diagonal elements
  • (n-1) upper-diagonal elements

§Examples

use iterative_solvers::utils::sparse::tridiagonal_csr;

let diagonal = vec![2.0, 3.0, 4.0];
let lower = vec![1.0, 1.0];
let upper = vec![1.0, 1.0];

let result = tridiagonal_csr(&diagonal, &lower, &upper).unwrap();
// Creates:
// [2.0, 1.0, 0.0]
// [1.0, 3.0, 1.0]
// [0.0, 1.0, 4.0]

§Errors

Returns IterSolverError::DimensionError if the input vectors have incompatible dimensions.