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.