solve_band_system

Function solve_band_system 

Source
pub fn solve_band_system<T>(
    band_matrix: &BandMatrix<T>,
    rhs: &ArrayView1<'_, T>,
) -> InterpolateResult<Array1<T>>
where T: Float + FromPrimitive + Debug + Add<Output = T> + Sub<Output = T> + Mul<Output = T> + Div<Output = T> + AddAssign + SubAssign + MulAssign + DivAssign + RemAssign + Zero + Copy,
Expand description

Solve a band linear system using optimized LU factorization

Uses the specialized band LU algorithm which is much faster than general LU for band matrices: O(n*b²) vs O(n³) operations.

§Arguments

  • band_matrix - The band matrix A
  • rhs - Right-hand side vector b

§Returns

Solution vector x such that A*x = b

§Examples

use scirs2_core::ndarray::Array1;
use scirs2_interpolate::structured_matrix::{BandMatrix, solve_band_system};

// Create a simple tridiagonal system
let mut matrix = BandMatrix::new(3, 1, 1);
matrix.set_diagonal(0, 2.0);
matrix.set_diagonal(1, 2.0);
matrix.set_diagonal(2, 2.0);
matrix.set_superdiagonal(1, -1.0);
matrix.set_superdiagonal(2, -1.0);
matrix.set_subdiagonal(1, -1.0);
matrix.set_subdiagonal(2, -1.0);

let rhs = Array1::from_vec(vec![1.0, 2.0, 1.0]);
let solution = solve_band_system(&matrix, &rhs.view()).unwrap();