pub struct LU<T: ComplexField, R: DimMin<C>, C: Dim>where
DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,{ /* private fields */ }Expand description
LU decomposition with partial (row) pivoting.
Implementations§
source§impl<T: ComplexField, R: DimMin<C>, C: Dim> LU<T, R, C>where
DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,
impl<T: ComplexField, R: DimMin<C>, C: Dim> LU<T, R, C>where DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,
sourcepub fn new(matrix: OMatrix<T, R, C>) -> Self
pub fn new(matrix: OMatrix<T, R, C>) -> Self
Computes the LU decomposition with partial (row) pivoting of matrix.
sourcepub fn l(&self) -> OMatrix<T, R, DimMinimum<R, C>>where
DefaultAllocator: Allocator<T, R, DimMinimum<R, C>>,
pub fn l(&self) -> OMatrix<T, R, DimMinimum<R, C>>where DefaultAllocator: Allocator<T, R, DimMinimum<R, C>>,
The lower triangular matrix of this decomposition.
sourcepub fn l_unpack(self) -> OMatrix<T, R, DimMinimum<R, C>>where
DefaultAllocator: Reallocator<T, R, C, R, DimMinimum<R, C>>,
pub fn l_unpack(self) -> OMatrix<T, R, DimMinimum<R, C>>where DefaultAllocator: Reallocator<T, R, C, R, DimMinimum<R, C>>,
The lower triangular matrix of this decomposition.
sourcepub fn u(&self) -> OMatrix<T, DimMinimum<R, C>, C>where
DefaultAllocator: Allocator<T, DimMinimum<R, C>, C>,
pub fn u(&self) -> OMatrix<T, DimMinimum<R, C>, C>where DefaultAllocator: Allocator<T, DimMinimum<R, C>, C>,
The upper triangular matrix of this decomposition.
sourcepub fn p(&self) -> &PermutationSequence<DimMinimum<R, C>>
pub fn p(&self) -> &PermutationSequence<DimMinimum<R, C>>
The row permutations of this decomposition.
sourcepub fn unpack(
self
) -> (PermutationSequence<DimMinimum<R, C>>, OMatrix<T, R, DimMinimum<R, C>>, OMatrix<T, DimMinimum<R, C>, C>)where
DefaultAllocator: Allocator<T, R, DimMinimum<R, C>> + Allocator<T, DimMinimum<R, C>, C> + Reallocator<T, R, C, R, DimMinimum<R, C>>,
pub fn unpack( self ) -> (PermutationSequence<DimMinimum<R, C>>, OMatrix<T, R, DimMinimum<R, C>>, OMatrix<T, DimMinimum<R, C>, C>)where DefaultAllocator: Allocator<T, R, DimMinimum<R, C>> + Allocator<T, DimMinimum<R, C>, C> + Reallocator<T, R, C, R, DimMinimum<R, C>>,
The row permutations and two triangular matrices of this decomposition: (P, L, U).
source§impl<T: ComplexField, D: DimMin<D, Output = D>> LU<T, D, D>where
DefaultAllocator: Allocator<T, D, D> + Allocator<(usize, usize), D>,
impl<T: ComplexField, D: DimMin<D, Output = D>> LU<T, D, D>where DefaultAllocator: Allocator<T, D, D> + Allocator<(usize, usize), D>,
sourcepub fn solve<R2: Dim, C2: Dim, S2>(
&self,
b: &Matrix<T, R2, C2, S2>
) -> Option<OMatrix<T, R2, C2>>where
S2: Storage<T, R2, C2>,
ShapeConstraint: SameNumberOfRows<R2, D>,
DefaultAllocator: Allocator<T, R2, C2>,
pub fn solve<R2: Dim, C2: Dim, S2>( &self, b: &Matrix<T, R2, C2, S2> ) -> Option<OMatrix<T, R2, C2>>where S2: Storage<T, R2, C2>, ShapeConstraint: SameNumberOfRows<R2, D>, DefaultAllocator: Allocator<T, R2, C2>,
Solves the linear system self * x = b, where x is the unknown to be determined.
Returns None if self is not invertible.
sourcepub fn solve_mut<R2: Dim, C2: Dim, S2>(
&self,
b: &mut Matrix<T, R2, C2, S2>
) -> boolwhere
S2: StorageMut<T, R2, C2>,
ShapeConstraint: SameNumberOfRows<R2, D>,
pub fn solve_mut<R2: Dim, C2: Dim, S2>( &self, b: &mut Matrix<T, R2, C2, S2> ) -> boolwhere S2: StorageMut<T, R2, C2>, ShapeConstraint: SameNumberOfRows<R2, D>,
Solves the linear system self * x = b, where x is the unknown to be determined.
If the decomposed matrix is not invertible, this returns false and its input b may
be overwritten with garbage.
sourcepub fn try_inverse(&self) -> Option<OMatrix<T, D, D>>
pub fn try_inverse(&self) -> Option<OMatrix<T, D, D>>
Computes the inverse of the decomposed matrix.
Returns None if the matrix is not invertible.
sourcepub fn try_inverse_to<S2: StorageMut<T, D, D>>(
&self,
out: &mut Matrix<T, D, D, S2>
) -> bool
pub fn try_inverse_to<S2: StorageMut<T, D, D>>( &self, out: &mut Matrix<T, D, D, S2> ) -> bool
Computes the inverse of the decomposed matrix and outputs the result to out.
If the decomposed matrix is not invertible, this returns false and out may be
overwritten with garbage.
sourcepub fn determinant(&self) -> T
pub fn determinant(&self) -> T
Computes the determinant of the decomposed matrix.
sourcepub fn is_invertible(&self) -> bool
pub fn is_invertible(&self) -> bool
Indicates if the decomposed matrix is invertible.
Trait Implementations§
source§impl<T: Clone + ComplexField, R: Clone + DimMin<C>, C: Clone + Dim> Clone for LU<T, R, C>where
DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,
impl<T: Clone + ComplexField, R: Clone + DimMin<C>, C: Clone + Dim> Clone for LU<T, R, C>where DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,
source§impl<T: Debug + ComplexField, R: Debug + DimMin<C>, C: Debug + Dim> Debug for LU<T, R, C>where
DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,
impl<T: Debug + ComplexField, R: Debug + DimMin<C>, C: Debug + Dim> Debug for LU<T, R, C>where DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,
impl<T: ComplexField, R: DimMin<C>, C: Dim> Copy for LU<T, R, C>where DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>, OMatrix<T, R, C>: Copy, PermutationSequence<DimMinimum<R, C>>: Copy,
Auto Trait Implementations§
impl<T, R, C> !RefUnwindSafe for LU<T, R, C>
impl<T, R, C> !Send for LU<T, R, C>
impl<T, R, C> !Sync for LU<T, R, C>
impl<T, R, C> !Unpin for LU<T, R, C>
impl<T, R, C> !UnwindSafe for LU<T, R, C>
Blanket Implementations§
source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,
source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moresource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.