pub struct ExpOverLinear;Expand description
Exponential decay divided by a line.
y = exp(−rate·x) / (lin_const + lin_slope·x)Parameters (in order): [rate, lin_const, lin_slope]
This is the NIST StRD Chwirut model, shared by two datasets: Chwirut1 (214 observations) and Chwirut2 (54), which differ only in the data.
Domain guard: the denominator must be non-zero. Unlike a quadratic
denominator this one has a single root at x = −lin_const/lin_slope, which a
solver can walk onto during search even when the certified parameters keep it
clear of the data, so D = 0 returns f64::NAN.
Analytic Jacobian (let E = exp(−rate·x), D = lin_const + lin_slope·x):
- ∂y/∂rate = −x·E / D
- ∂y/∂lin_const = −E / D²
- ∂y/∂lin_slope = −x·E / D²
Trait Implementations§
Source§impl Model for ExpOverLinear
impl Model for ExpOverLinear
Source§fn jacobian_into(&self, x: &[f64], p: &[f64], out: &mut [f64])
fn jacobian_into(&self, x: &[f64], p: &[f64], out: &mut [f64])
Fill a pre-allocated slice with Jacobian values (one entry per parameter). Read more
Source§fn jacobian(&self, x: &[f64], p: &[f64]) -> Vec<f64>
fn jacobian(&self, x: &[f64], p: &[f64]) -> Vec<f64>
Jacobian — one derivative per parameter, in the same order as
param_names(). Read moreSource§fn eval_slice_into(&self, xs: &[f64], params: &[f64], out: &mut [f64])
fn eval_slice_into(&self, xs: &[f64], params: &[f64], out: &mut [f64])
Batch evaluation of a 1-D model: fill
out[i] = eval([xs[i]], params). Read moreAuto Trait Implementations§
impl Freeze for ExpOverLinear
impl RefUnwindSafe for ExpOverLinear
impl Send for ExpOverLinear
impl Sync for ExpOverLinear
impl Unpin for ExpOverLinear
impl UnsafeUnpin for ExpOverLinear
impl UnwindSafe for ExpOverLinear
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