pub struct Svd<T: Scalar> { /* private fields */ }Expand description
The singular value decomposition A = U·Σ·V* of an m × n matrix, k = min(m, n): U of
m × k and V of n × k with orthonormal columns, Σ the diagonal of the singular values,
real, not negative, in descending order. From Matrix::svd.
§Examples
use a::math::matrix::Matrix;
let a: Matrix<f64> = Matrix::from_rows(&[[3.0, 0.0], [4.0, 5.0]]);
let svd = a.svd();
let s = svd.singular_values();
assert!((s[0] - 45f64.sqrt()).abs() < 1e-14 && (s[1] - 5f64.sqrt()).abs() < 1e-14);
let sigma = Matrix::from_diagonal(s);
let back = &(&svd.u() * &sigma) * &svd.v().transpose();
assert!((&back - &a).as_slice().iter().all(|x| x.abs() < 1e-14));Implementations§
Trait Implementations§
Auto Trait Implementations§
impl<T> Freeze for Svd<T>
impl<T> RefUnwindSafe for Svd<T>
impl<T> Send for Svd<T>
impl<T> Sync for Svd<T>
impl<T> Unpin for Svd<T>
impl<T> UnsafeUnpin for Svd<T>
impl<T> UnwindSafe for Svd<T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more