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
sourceimpl<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).
sourceimpl<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>
) -> bool where
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>
) -> bool where
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
sourceimpl<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>>,
sourceimpl<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>>,
sourceimpl<'de, T: ComplexField, R: DimMin<C>, C: Dim> Deserialize<'de> for LU<T, R, C> where
DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,
DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,
OMatrix<T, R, C>: Deserialize<'de>,
PermutationSequence<DimMinimum<R, C>>: Deserialize<'de>,
impl<'de, T: ComplexField, R: DimMin<C>, C: Dim> Deserialize<'de> for LU<T, R, C> where
DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,
DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,
OMatrix<T, R, C>: Deserialize<'de>,
PermutationSequence<DimMinimum<R, C>>: Deserialize<'de>,
sourcefn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl<T: ComplexField, R: DimMin<C>, C: Dim> Serialize for LU<T, R, C> where
DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,
DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,
OMatrix<T, R, C>: Serialize,
PermutationSequence<DimMinimum<R, C>>: Serialize,
impl<T: ComplexField, R: DimMin<C>, C: Dim> Serialize for LU<T, R, C> where
DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,
DefaultAllocator: Allocator<T, R, C> + Allocator<(usize, usize), DimMinimum<R, C>>,
OMatrix<T, R, C>: Serialize,
PermutationSequence<DimMinimum<R, C>>: Serialize,
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
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
sourcefn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct self from the equivalent element of its
superset. Read more
sourcefn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if self is actually part of its subset T (and can be converted to it).
sourcefn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as self.to_subset but without any property checks. Always succeeds.
sourcefn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts self to the equivalent element of its superset.