pub struct ExponentialFit<V = Vec<f64>> {
pub t: Vec<f64>,
pub y: Vec<f64>,
/* private fields */
}Available on crate feature
problems only.Expand description
Exponential data-fitting problem min_{a,b} ½ Σ (a·exp(b·tᵢ) − yᵢ)².
Carries the data (t, y) on the struct; the generic parameter V
pins the parameter-vector backend. Construct with new.
Jacobian is implemented for the feature-gated backends (nalgebra
DVector<f64>, faer Col<f64>, and ndarray Array1<f64>); the
default Vec<f64> backend supplies CostFunction
and Residual but not Jacobian.
Fields§
§t: Vec<f64>Sample abscissae tᵢ.
y: Vec<f64>Observed values yᵢ.
Implementations§
Trait Implementations§
Source§impl CostFunction for ExponentialFit<Vec<f64>>
impl CostFunction for ExponentialFit<Vec<f64>>
Source§type Output = f64
type Output = f64
Scalar cost type. In practice
f64 (see CONTRIBUTING.md’s
provisional choices).Source§type Error = Infallible
type Error = Infallible
User-chosen hard-abort error. Pick
std::convert::Infallible when the cost cannot fail: its
niche optimization keeps Result<f64, Infallible> the same
layout as bare f64 on the happy path.Source§impl CostFunction for ExponentialFit<DVector<f64>>
Available on crate feature nalgebra only.
impl CostFunction for ExponentialFit<DVector<f64>>
Available on crate feature
nalgebra only.Source§type Param = Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>
type Param = Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>
The parameter type the objective is defined over.
Source§type Output = f64
type Output = f64
Scalar cost type. In practice
f64 (see CONTRIBUTING.md’s
provisional choices).Source§type Error = Infallible
type Error = Infallible
User-chosen hard-abort error. Pick
std::convert::Infallible when the cost cannot fail: its
niche optimization keeps Result<f64, Infallible> the same
layout as bare f64 on the happy path.Source§impl CostFunction for ExponentialFit<Array1<f64>>
Available on crate feature ndarray only.
impl CostFunction for ExponentialFit<Array1<f64>>
Available on crate feature
ndarray only.Source§type Param = ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>
type Param = ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>
The parameter type the objective is defined over.
Source§type Output = f64
type Output = f64
Scalar cost type. In practice
f64 (see CONTRIBUTING.md’s
provisional choices).Source§type Error = Infallible
type Error = Infallible
User-chosen hard-abort error. Pick
std::convert::Infallible when the cost cannot fail: its
niche optimization keeps Result<f64, Infallible> the same
layout as bare f64 on the happy path.Source§impl CostFunction for ExponentialFit<Col<f64>>
Available on crate feature faer only.
impl CostFunction for ExponentialFit<Col<f64>>
Available on crate feature
faer only.Source§type Output = f64
type Output = f64
Scalar cost type. In practice
f64 (see CONTRIBUTING.md’s
provisional choices).Source§type Error = Infallible
type Error = Infallible
User-chosen hard-abort error. Pick
std::convert::Infallible when the cost cannot fail: its
niche optimization keeps Result<f64, Infallible> the same
layout as bare f64 on the happy path.Source§impl<V> HasSpec for ExponentialFit<V>
impl<V> HasSpec for ExponentialFit<V>
Source§const SPEC: &'static ProblemSpec
const SPEC: &'static ProblemSpec
The catalog entry for this problem type.
Source§impl Jacobian for ExponentialFit<DVector<f64>>
Available on crate feature nalgebra only.
impl Jacobian for ExponentialFit<DVector<f64>>
Available on crate feature
nalgebra only.Source§type Jacobian = Matrix<f64, Dyn, Dyn, VecStorage<f64, Dyn, Dyn>>
type Jacobian = Matrix<f64, Dyn, Dyn, VecStorage<f64, Dyn, Dyn>>
The Jacobian matrix type, shape
m × n.Source§fn jacobian(&self, x: &DVector<f64>) -> Result<DMatrix<f64>, Infallible>
fn jacobian(&self, x: &DVector<f64>) -> Result<DMatrix<f64>, Infallible>
Evaluate the Jacobian at
param.Source§fn residual_and_jacobian(
&self,
param: &Self::Param,
) -> Result<(<Self as Residual>::Output, Self::Jacobian), <Self as Residual>::Error>
fn residual_and_jacobian( &self, param: &Self::Param, ) -> Result<(<Self as Residual>::Output, Self::Jacobian), <Self as Residual>::Error>
Evaluate residual and Jacobian at
param in one call. The
default body delegates to Residual::residual and
Jacobian::jacobian; override when shared intermediate work
can be amortized across the two, common in NLLS where r(x)
reuses forward-mode AD state that J(x) continues from. Read moreSource§impl Jacobian for ExponentialFit<Array1<f64>>
Available on crate feature ndarray only.
impl Jacobian for ExponentialFit<Array1<f64>>
Available on crate feature
ndarray only.Source§type Jacobian = ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>
type Jacobian = ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>
The Jacobian matrix type, shape
m × n.Source§fn jacobian(&self, x: &Array1<f64>) -> Result<Array2<f64>, Infallible>
fn jacobian(&self, x: &Array1<f64>) -> Result<Array2<f64>, Infallible>
Evaluate the Jacobian at
param.Source§fn residual_and_jacobian(
&self,
param: &Self::Param,
) -> Result<(<Self as Residual>::Output, Self::Jacobian), <Self as Residual>::Error>
fn residual_and_jacobian( &self, param: &Self::Param, ) -> Result<(<Self as Residual>::Output, Self::Jacobian), <Self as Residual>::Error>
Evaluate residual and Jacobian at
param in one call. The
default body delegates to Residual::residual and
Jacobian::jacobian; override when shared intermediate work
can be amortized across the two, common in NLLS where r(x)
reuses forward-mode AD state that J(x) continues from. Read moreSource§impl Jacobian for ExponentialFit<Col<f64>>
Available on crate feature faer only.
impl Jacobian for ExponentialFit<Col<f64>>
Available on crate feature
faer only.Source§fn jacobian(&self, x: &Col<f64>) -> Result<Mat<f64>, Infallible>
fn jacobian(&self, x: &Col<f64>) -> Result<Mat<f64>, Infallible>
Evaluate the Jacobian at
param.Source§fn residual_and_jacobian(
&self,
param: &Self::Param,
) -> Result<(<Self as Residual>::Output, Self::Jacobian), <Self as Residual>::Error>
fn residual_and_jacobian( &self, param: &Self::Param, ) -> Result<(<Self as Residual>::Output, Self::Jacobian), <Self as Residual>::Error>
Evaluate residual and Jacobian at
param in one call. The
default body delegates to Residual::residual and
Jacobian::jacobian; override when shared intermediate work
can be amortized across the two, common in NLLS where r(x)
reuses forward-mode AD state that J(x) continues from. Read moreSource§impl Residual for ExponentialFit<Vec<f64>>
impl Residual for ExponentialFit<Vec<f64>>
Source§type Param = Vec<f64>
type Param = Vec<f64>
The parameter type the residual is defined over (matches
CostFunction::Param).Source§type Output = Vec<f64>
type Output = Vec<f64>
The residual vector type. Length is the number of residuals
m,
independent of param.len() = n.Source§type Error = Infallible
type Error = Infallible
User-chosen hard-abort error. Independent of
CostFunction::Error: the trait families are orthogonal
(NLLS solvers bind on Residual + Jacobian; first-order
solvers bind on CostFunction + Gradient).Source§impl Residual for ExponentialFit<DVector<f64>>
Available on crate feature nalgebra only.
impl Residual for ExponentialFit<DVector<f64>>
Available on crate feature
nalgebra only.Source§type Param = Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>
type Param = Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>
The parameter type the residual is defined over (matches
CostFunction::Param).Source§type Output = Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>
type Output = Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>
The residual vector type. Length is the number of residuals
m,
independent of param.len() = n.Source§type Error = Infallible
type Error = Infallible
User-chosen hard-abort error. Independent of
CostFunction::Error: the trait families are orthogonal
(NLLS solvers bind on Residual + Jacobian; first-order
solvers bind on CostFunction + Gradient).Source§impl Residual for ExponentialFit<Array1<f64>>
Available on crate feature ndarray only.
impl Residual for ExponentialFit<Array1<f64>>
Available on crate feature
ndarray only.Source§type Param = ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>
type Param = ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>
The parameter type the residual is defined over (matches
CostFunction::Param).Source§type Output = ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>
type Output = ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>
The residual vector type. Length is the number of residuals
m,
independent of param.len() = n.Source§type Error = Infallible
type Error = Infallible
User-chosen hard-abort error. Independent of
CostFunction::Error: the trait families are orthogonal
(NLLS solvers bind on Residual + Jacobian; first-order
solvers bind on CostFunction + Gradient).Source§impl Residual for ExponentialFit<Col<f64>>
Available on crate feature faer only.
impl Residual for ExponentialFit<Col<f64>>
Available on crate feature
faer only.Source§type Param = Col<Own<f64>>
type Param = Col<Own<f64>>
The parameter type the residual is defined over (matches
CostFunction::Param).Source§type Output = Col<Own<f64>>
type Output = Col<Own<f64>>
The residual vector type. Length is the number of residuals
m,
independent of param.len() = n.Source§type Error = Infallible
type Error = Infallible
User-chosen hard-abort error. Independent of
CostFunction::Error: the trait families are orthogonal
(NLLS solvers bind on Residual + Jacobian; first-order
solvers bind on CostFunction + Gradient).Auto Trait Implementations§
impl<V> Freeze for ExponentialFit<V>
impl<V> RefUnwindSafe for ExponentialFit<V>
impl<V> Send for ExponentialFit<V>
impl<V> Sync for ExponentialFit<V>
impl<V> Unpin for ExponentialFit<V>
impl<V> UnsafeUnpin for ExponentialFit<V>
impl<V> UnwindSafe for ExponentialFit<V>
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T, U> Imply<T> for U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn 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 moreSource§fn 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).Source§fn 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.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.