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
diagonalvector - The lower-diagonal (below main) contains elements from the
lowervector - The upper-diagonal (above main) contains elements from the
uppervector
§Arguments
diagonal- A slice containing the main diagonal elementslower- 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 equallower.len() + 1lower.len()must equalupper.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.