ndarray_linalg

Module solve

Source
Expand description

Solve systems of linear equations and invert matrices

§Examples

Solve A * x = b:

#[macro_use]
extern crate ndarray;
extern crate ndarray_linalg;

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::*;

let a: Array2<f64> = random((3, 3));
let f = a.factorize_into().unwrap(); // LU factorize A (A is consumed)
for _ in 0..10 {
    let b: Array1<f64> = random(3);
    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.

Type Aliases§