Module ndarray_linalg::solve
source · [−]Expand description
Solve systems of linear equations and invert matrices
Examples
Solve A * x = b
:
use ndarray::prelude::*;
use ndarray_linalg::Solve;
let a: Array2<f64> = array![[3., 2., -1.], [2., -2., 4.], [-2., 1., -2.]];
let b: Array1<f64> = array![1., -2., 0.];
let x = a.solve_into(b).unwrap();
assert!(x.abs_diff_eq(&array![1., -2., -2.], 1e-9));
There are also special functions for solving A^T * x = b
and
A^H * x = b
.
If you are solving multiple systems of linear equations with the same
coefficient matrix A
, it’s faster to compute the LU factorization once at
the beginning than solving directly using A
:
use ndarray::prelude::*;
use ndarray_linalg::*;
/// Use fixed algorithm and seed of PRNG for reproducible test
let mut rng = rand_pcg::Mcg128Xsl64::new(0xcafef00dd15ea5e5);
let a: Array2<f64> = random_using((3, 3), &mut rng);
let f = a.factorize_into().unwrap(); // LU factorize A (A is consumed)
for _ in 0..10 {
let b: Array1<f64> = random_using(3, &mut rng);
let x = f.solve_into(b).unwrap(); // Solve A * x = b using factorized L, U
}
Structs
Represents the LU factorization of a matrix
A
as A = P*L*U
.Enums
Traits
An interface for calculating determinants of matrix refs.
An interface for calculating determinants of matrices.
An interface for computing LU factorizations of matrix refs.
An interface for computing LU factorizations of matrices.
An interface for inverting matrix refs.
An interface for inverting matrices.
An interface for estimating the reciprocal condition number of matrix refs.
An interface for estimating the reciprocal condition number of matrices.
An interface for solving systems of linear equations.