Trait linxal::least_squares::LeastSquares [] [src]

pub trait LeastSquares: Sized + Clone {
    fn compute_multi_full_into<D1, D2>(a: ArrayBase<D1, Ix2>, b: ArrayBase<D2, Ix2>) -> Result<LeastSquaresSolution<Self, Ix2>, LeastSquaresError> where D1: DataMut<Elem=Self> + DataOwned<Elem=Self>, D2: DataMut<Elem=Self> + DataOwned<Elem=Self>;
    fn compute_multi_degenerate_into<D1, D2>(a: ArrayBase<D1, Ix2>, b: ArrayBase<D2, Ix2>) -> Result<LeastSquaresSolution<Self, Ix2>, LeastSquaresError> where D1: DataMut<Elem=Self> + DataOwned<Elem=Self>, D2: DataMut<Elem=Self> + DataOwned<Elem=Self>;

    fn compute_multi_full<D1, D2>(a: &ArrayBase<D1, Ix2>, b: &ArrayBase<D2, Ix2>) -> Result<LeastSquaresSolution<Self, Ix2>, LeastSquaresError> where D1: Data<Elem=Self>, D2: Data<Elem=Self> { ... }
    fn compute_multi_degenerate<D1, D2>(a: &ArrayBase<D1, Ix2>, b: &ArrayBase<D2, Ix2>) -> Result<LeastSquaresSolution<Self, Ix2>, LeastSquaresError> where D1: Data<Elem=Self>, D2: Data<Elem=Self> { ... }
    fn compute_multi<D1, D2>(a: &ArrayBase<D1, Ix2>, b: &ArrayBase<D2, Ix2>) -> Result<LeastSquaresSolution<Self, Ix2>, LeastSquaresError> where D1: Data<Elem=Self>, D2: Data<Elem=Self> { ... }
    fn compute<D1, D2>(a: &ArrayBase<D1, Ix2>, b: &ArrayBase<D2, Ix1>) -> Result<LeastSquaresSolution<Self, Ix1>, LeastSquaresError> where D1: Data<Elem=Self>, D2: Data<Elem=Self> { ... }
}

Multivariable least squares problem.

Find solutions to the following optimization;

min ||Ax - b||2

for an m by n matrix A. The solution is unique when the matrix A is overdetermined, or of full rank. When A is underdtermined, the solution returned is one of minimum norm.

The compute_multi_* functions compute independents solutions x_i to min(||A*x_i - b_i||) for each column b_i of b. They do not compute the solution X of min(||A*X - b||).

Required Methods

Returns the solution x to the least squares problem min(||A*x - b||), for a non-degenerate A.

Errors

Returns LeastSquaresError::Degenerate when the coefficient matrix a is not of full rank (rank(a) < min(m, n)).

Similar to compute_multi_degenerate_into, but doesn't modify the inputs.

Provided Methods

Similar to compute_multi_full_into, but doesn't modify the inputs.

See compute_multi_full_into.

Returns the solution x to the least squares problem min(||A*x - b||), for any A.

The matrix a can possibly be degenerate.

Returns the solution x to the least squares problem min(||A*x - b||) for any A.

This method first assumes that the coefficent matrix a is non-degenerate and calls compute_multi_full. If the matrix is found to be degenerate, compute_multi_degenerate is called instead.

Remarks

If you know that your matrix is degenerate ahead of time, it is more effiecient to instead call compute_multi_degenerate instead. If you want to know that your matrix is non-degenerate and want to do something else in that case, you should use compute_multi_full instead, which will return a Degenerate error.

This method will never return LeastSquaresError::Degenerate.

Returns the solution x to the least squares problem min(||A*x - b||) for any A and a single column b.

This method first assumes that the coefficent matrix a is non-degenerate and calls compute_multi_full. If the matrix is found to be degenerate, compute_multi_degenerate is called instead.

Remarks

If you know that your matrix is degenerate ahead of time, it is more effiecient to instead call compute_multi_degenerate instead. If you want to know that your matrix is non-degenerate and want to do something else in that case, you should use compute_multi_full instead, which will return a Degenerate error.

This method will never return LeastSquaresError::Degenerate.

Implementors