pub trait LeastSquaresProblem<F, M, N> where
F: ComplexField + Copy,
N: Dim,
M: Dim, {
type ResidualStorage: RawStorageMut<F, M> + Storage<F, M> + IsContiguous;
type JacobianStorage: RawStorageMut<F, M, N> + Storage<F, M, N> + IsContiguous;
type ParameterStorage: RawStorageMut<F, N> + Storage<F, N> + IsContiguous + Clone;
fn set_params(&mut self, x: &Vector<F, N, Self::ParameterStorage>);
fn params(&self) -> Vector<F, N, Self::ParameterStorage>;
fn residuals(&self) -> Option<Vector<F, M, Self::ResidualStorage>>;
fn jacobian(&self) -> Option<Matrix<F, M, N, Self::JacobianStorage>>;
}
Expand description
A least squares minimization problem.
This is what LevenbergMarquardt
needs
to compute the residuals and the Jacobian. See the module documentation
for a usage example.
Associated Types
type ResidualStorage: RawStorageMut<F, M> + Storage<F, M> + IsContiguous
type ResidualStorage: RawStorageMut<F, M> + Storage<F, M> + IsContiguous
Storage type used for the residuals. Use nalgebra::storage::Owned<F, M>
if you want to use VectorN
or MatrixMN
.
type JacobianStorage: RawStorageMut<F, M, N> + Storage<F, M, N> + IsContiguous
type ParameterStorage: RawStorageMut<F, N> + Storage<F, N> + IsContiguous + Clone
Required methods
fn set_params(&mut self, x: &Vector<F, N, Self::ParameterStorage>)
fn set_params(&mut self, x: &Vector<F, N, Self::ParameterStorage>)
Set the stored parameters $\vec{x}$
.
fn params(&self) -> Vector<F, N, Self::ParameterStorage>
fn params(&self) -> Vector<F, N, Self::ParameterStorage>
Get the current parameter vector $\vec{x}$
.
fn residuals(&self) -> Option<Vector<F, M, Self::ResidualStorage>>
fn residuals(&self) -> Option<Vector<F, M, Self::ResidualStorage>>
Compute the residual vector.
fn jacobian(&self) -> Option<Matrix<F, M, N, Self::JacobianStorage>>
fn jacobian(&self) -> Option<Matrix<F, M, N, Self::JacobianStorage>>
Compute the Jacobian of the residual vector.