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>>,
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 · sourcepub fn borrow_mut(&mut self) -> &mut T
pub 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>,
sourcepub fn to_subset(&self) -> Option<SS>
pub fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct self from the equivalent element of its
superset. Read more
sourcepub fn is_in_subset(&self) -> bool
pub fn is_in_subset(&self) -> bool
Checks if self is actually part of its subset T (and can be converted to it).
sourcepub fn to_subset_unchecked(&self) -> SS
pub fn to_subset_unchecked(&self) -> SS
Use with care! Same as self.to_subset but without any property checks. Always succeeds.
sourcepub fn from_subset(element: &SS) -> SP
pub fn from_subset(element: &SS) -> SP
The inclusion map: converts self to the equivalent element of its superset.
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into)Uses borrowed data to replace owned data, usually by cloning. Read more