pub fn tridiagonal<T>(
diag: ArrayView<'_, T, Ix1>,
lower_diag: ArrayView<'_, T, Ix1>,
upper_diag: ArrayView<'_, T, Ix1>,
) -> Result<Array<T, Ix2>, &'static str>
Expand description
Create a tri-diagonal matrix from the three diagonals
§Arguments
diag
- Main diagonallower_diag
- Lower diagonalupper_diag
- Upper diagonal
§Returns
A tri-diagonal matrix with the specified diagonals
§Examples
use ndarray::array;
use scirs2_core::ndarray_ext::matrix::tridiagonal;
let diag = array![1, 2, 3];
let lower = array![4, 5];
let upper = array![6, 7];
let result = tridiagonal(diag.view(), lower.view(), upper.view()).unwrap();
assert_eq!(result.shape(), &[3, 3]);
assert_eq!(result, array![
[1, 6, 0],
[4, 2, 7],
[0, 5, 3]
]);