pub struct NewtonRaphson {
pub abs_tol: Tolerances,
pub error_norm: Norm,
pub line_search: LineSearch,
pub max_steps: usize,
pub rel_tol: Option<Scalar>,
pub trust_region: TrustRegion,
}Expand description
The Newton-Raphson method.
Fields§
§abs_tol: TolerancesAbsolute error tolerances.
error_norm: NormNorm type for error evaluation.
line_search: LineSearchLine search algorithm.
max_steps: usizeMaximum number of steps.
rel_tol: Option<Scalar>Relative error tolerance.
trust_region: TrustRegionHow far the step is trusted.
Trait Implementations§
Source§impl Clone for NewtonRaphson
impl Clone for NewtonRaphson
Source§fn clone(&self) -> NewtonRaphson
fn clone(&self) -> NewtonRaphson
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for NewtonRaphson
impl Debug for NewtonRaphson
Source§impl Default for NewtonRaphson
impl Default for NewtonRaphson
Source§impl<F, J, X, E> FirstOrderRootFinding<F, J, X> for NewtonRaphsonwhere
F: Jacobian + Erase<Erased = E>,
for<'a> &'a F: Div<J, Output = X>,
J: Hessian,
X: Erase<Erased = E> + Solution,
E: Tensor,
<X as Tensor>::Unit: UnitDiv<<X as Tensor>::Unit, Output = Dimensionless>,
for<'a> &'a X: Mul<Quantity<Dimensionless>, Output = X> + Mul<Scalar, Output = X>,
for<'a> &'a Matrix: Mul<&'a X, Output = Vector>,
impl<F, J, X, E> FirstOrderRootFinding<F, J, X> for NewtonRaphsonwhere
F: Jacobian + Erase<Erased = E>,
for<'a> &'a F: Div<J, Output = X>,
J: Hessian,
X: Erase<Erased = E> + Solution,
E: Tensor,
<X as Tensor>::Unit: UnitDiv<<X as Tensor>::Unit, Output = Dimensionless>,
for<'a> &'a X: Mul<Quantity<Dimensionless>, Output = X> + Mul<Scalar, Output = X>,
for<'a> &'a Matrix: Mul<&'a X, Output = Vector>,
Source§impl<U, V, Ru, Rv, Kuu, Kvu, Kuv, Kvv> FirstOrderRootFindingBlock<U, V, Ru, Rv, Kuu, Kvu, Kuv, Kvv> for NewtonRaphsonwhere
U: Solution,
V: Solution,
Ru: Jacobian,
Rv: Jacobian,
Kuu: HessianBlock,
Kvu: HessianBlock,
Kuv: HessianBlock,
Kvv: HessianBlock,
for<'a> &'a CscMatrix: Mul<&'a U, Output = Vector> + Mul<&'a V, Output = Vector>,
impl<U, V, Ru, Rv, Kuu, Kvu, Kuv, Kvv> FirstOrderRootFindingBlock<U, V, Ru, Rv, Kuu, Kvu, Kuv, Kvv> for NewtonRaphsonwhere
U: Solution,
V: Solution,
Ru: Jacobian,
Rv: Jacobian,
Kuu: HessianBlock,
Kvu: HessianBlock,
Kuv: HessianBlock,
Kvv: HessianBlock,
for<'a> &'a CscMatrix: Mul<&'a U, Output = Vector> + Mul<&'a V, Output = Vector>,
fn root_block( &self, residual_global: impl FnMut(&U, &V) -> Result<Ru, String>, residual_local: impl FnMut(&U, &V) -> Result<Rv, String>, tangents: impl FnMut(&U, &V) -> Result<(Kuu, Kvu, Kuv, Kvv), String>, initial_guess: (U, V), constraint_global: (CscMatrix, Vector), constraint_local: (CscMatrix, Vector), sparse: Option<SparseSolver>, strategy: SolveStrategy, ) -> Result<(U, V), OptimizationError>
Source§impl<F, J, X, E> FirstOrderRootFindingIncremental<F, J, X> for NewtonRaphsonwhere
F: Jacobian + Erase<Erased = E>,
for<'a> &'a F: Div<J, Output = X>,
J: Hessian,
X: Erase<Erased = E> + Solution,
E: Tensor,
<X as Tensor>::Unit: UnitDiv<<X as Tensor>::Unit, Output = Dimensionless>,
for<'a> &'a X: Mul<Quantity<Dimensionless>, Output = X> + Mul<Scalar, Output = X>,
for<'a> &'a Matrix: Mul<&'a X, Output = Vector>,
impl<F, J, X, E> FirstOrderRootFindingIncremental<F, J, X> for NewtonRaphsonwhere
F: Jacobian + Erase<Erased = E>,
for<'a> &'a F: Div<J, Output = X>,
J: Hessian,
X: Erase<Erased = E> + Solution,
E: Tensor,
<X as Tensor>::Unit: UnitDiv<<X as Tensor>::Unit, Output = Dimensionless>,
for<'a> &'a X: Mul<Quantity<Dimensionless>, Output = X> + Mul<Scalar, Output = X>,
for<'a> &'a Matrix: Mul<&'a X, Output = Vector>,
fn root_incremental( &self, function: impl FnMut(&X) -> Result<F, String>, jacobian: impl FnMut(&X) -> Result<J, String>, update: impl FnMut(&X, &Vector, Scalar, bool) -> Result<(), String>, initial_guess: X, equality_constraint: EqualityConstraint, sparse: Option<SparseSolver>, ) -> Result<X, OptimizationError>
Source§impl<F, J, H, X, E> SecondOrderOptimization<F, J, H, X> for NewtonRaphsonwhere
F: Erase<Erased = Scalar> + Tensor,
<J as Tensor>::Unit: UnitMul<<X as Tensor>::Unit>,
<<J as Tensor>::Unit as UnitMul<<X as Tensor>::Unit>>::Output: UnitSum,
<<<J as Tensor>::Unit as UnitMul<<X as Tensor>::Unit>>::Output as UnitSum>::Output: Is<<F as Tensor>::Unit>,
H: Hessian,
J: Jacobian + Erase<Erased = E>,
for<'a> &'a J: Div<H, Output = X>,
X: Erase<Erased = E> + Solution,
E: Tensor,
<X as Tensor>::Unit: UnitDiv<<X as Tensor>::Unit, Output = Dimensionless>,
for<'a> &'a X: Mul<Quantity<Dimensionless>, Output = X> + Mul<Scalar, Output = X>,
for<'a> &'a Matrix: Mul<&'a X, Output = Vector>,
impl<F, J, H, X, E> SecondOrderOptimization<F, J, H, X> for NewtonRaphsonwhere
F: Erase<Erased = Scalar> + Tensor,
<J as Tensor>::Unit: UnitMul<<X as Tensor>::Unit>,
<<J as Tensor>::Unit as UnitMul<<X as Tensor>::Unit>>::Output: UnitSum,
<<<J as Tensor>::Unit as UnitMul<<X as Tensor>::Unit>>::Output as UnitSum>::Output: Is<<F as Tensor>::Unit>,
H: Hessian,
J: Jacobian + Erase<Erased = E>,
for<'a> &'a J: Div<H, Output = X>,
X: Erase<Erased = E> + Solution,
E: Tensor,
<X as Tensor>::Unit: UnitDiv<<X as Tensor>::Unit, Output = Dimensionless>,
for<'a> &'a X: Mul<Quantity<Dimensionless>, Output = X> + Mul<Scalar, Output = X>,
for<'a> &'a Matrix: Mul<&'a X, Output = Vector>,
Source§impl<F, U, V, Ru, Rv, Kuu, Kvu, Kuv, Kvv> SecondOrderOptimizationBlock<F, U, V, Ru, Rv, Kuu, Kvu, Kuv, Kvv> for NewtonRaphsonwhere
F: Erase<Erased = Scalar> + Tensor,
<Ru as Tensor>::Unit: UnitMul<<U as Tensor>::Unit>,
<<Ru as Tensor>::Unit as UnitMul<<U as Tensor>::Unit>>::Output: UnitSum,
<<<Ru as Tensor>::Unit as UnitMul<<U as Tensor>::Unit>>::Output as UnitSum>::Output: Is<<F as Tensor>::Unit>,
<Rv as Tensor>::Unit: UnitMul<<V as Tensor>::Unit>,
<<Rv as Tensor>::Unit as UnitMul<<V as Tensor>::Unit>>::Output: UnitSum,
<<<Rv as Tensor>::Unit as UnitMul<<V as Tensor>::Unit>>::Output as UnitSum>::Output: Is<<F as Tensor>::Unit>,
U: Solution,
V: Solution,
Ru: Jacobian,
Rv: Jacobian,
Kuu: HessianBlock,
Kvu: HessianBlock,
Kuv: HessianBlock,
Kvv: HessianBlock,
for<'a> &'a CscMatrix: Mul<&'a U, Output = Vector> + Mul<&'a V, Output = Vector>,
impl<F, U, V, Ru, Rv, Kuu, Kvu, Kuv, Kvv> SecondOrderOptimizationBlock<F, U, V, Ru, Rv, Kuu, Kvu, Kuv, Kvv> for NewtonRaphsonwhere
F: Erase<Erased = Scalar> + Tensor,
<Ru as Tensor>::Unit: UnitMul<<U as Tensor>::Unit>,
<<Ru as Tensor>::Unit as UnitMul<<U as Tensor>::Unit>>::Output: UnitSum,
<<<Ru as Tensor>::Unit as UnitMul<<U as Tensor>::Unit>>::Output as UnitSum>::Output: Is<<F as Tensor>::Unit>,
<Rv as Tensor>::Unit: UnitMul<<V as Tensor>::Unit>,
<<Rv as Tensor>::Unit as UnitMul<<V as Tensor>::Unit>>::Output: UnitSum,
<<<Rv as Tensor>::Unit as UnitMul<<V as Tensor>::Unit>>::Output as UnitSum>::Output: Is<<F as Tensor>::Unit>,
U: Solution,
V: Solution,
Ru: Jacobian,
Rv: Jacobian,
Kuu: HessianBlock,
Kvu: HessianBlock,
Kuv: HessianBlock,
Kvv: HessianBlock,
for<'a> &'a CscMatrix: Mul<&'a U, Output = Vector> + Mul<&'a V, Output = Vector>,
fn minimize_block( &self, function: impl FnMut(&U, &V) -> Result<F, String>, residual_global: impl FnMut(&U, &V) -> Result<Ru, String>, residual_local: impl FnMut(&U, &V) -> Result<Rv, String>, tangents: impl FnMut(&U, &V) -> Result<(Kuu, Kvu, Kuv, Kvv), String>, initial_guess: (U, V), constraint_global: (CscMatrix, Vector), constraint_local: (CscMatrix, Vector), sparse: Option<SparseSolver>, strategy: SolveStrategy, ) -> Result<(U, V), OptimizationError>
Source§impl<F, J, H, X, E> SecondOrderOptimizationIncremental<F, J, H, X> for NewtonRaphsonwhere
F: Erase<Erased = Scalar> + Tensor,
<J as Tensor>::Unit: UnitMul<<X as Tensor>::Unit>,
<<J as Tensor>::Unit as UnitMul<<X as Tensor>::Unit>>::Output: UnitSum,
<<<J as Tensor>::Unit as UnitMul<<X as Tensor>::Unit>>::Output as UnitSum>::Output: Is<<F as Tensor>::Unit>,
H: Hessian,
J: Jacobian + Erase<Erased = E>,
for<'a> &'a J: Div<H, Output = X>,
X: Erase<Erased = E> + Solution,
E: Tensor,
<X as Tensor>::Unit: UnitDiv<<X as Tensor>::Unit, Output = Dimensionless>,
for<'a> &'a X: Mul<Quantity<Dimensionless>, Output = X> + Mul<Scalar, Output = X>,
for<'a> &'a Matrix: Mul<&'a X, Output = Vector>,
impl<F, J, H, X, E> SecondOrderOptimizationIncremental<F, J, H, X> for NewtonRaphsonwhere
F: Erase<Erased = Scalar> + Tensor,
<J as Tensor>::Unit: UnitMul<<X as Tensor>::Unit>,
<<J as Tensor>::Unit as UnitMul<<X as Tensor>::Unit>>::Output: UnitSum,
<<<J as Tensor>::Unit as UnitMul<<X as Tensor>::Unit>>::Output as UnitSum>::Output: Is<<F as Tensor>::Unit>,
H: Hessian,
J: Jacobian + Erase<Erased = E>,
for<'a> &'a J: Div<H, Output = X>,
X: Erase<Erased = E> + Solution,
E: Tensor,
<X as Tensor>::Unit: UnitDiv<<X as Tensor>::Unit, Output = Dimensionless>,
for<'a> &'a X: Mul<Quantity<Dimensionless>, Output = X> + Mul<Scalar, Output = X>,
for<'a> &'a Matrix: Mul<&'a X, Output = Vector>,
fn minimize_incremental( &self, function: impl FnMut(&X) -> Result<F, String>, jacobian: impl FnMut(&X) -> Result<J, String>, hessian: impl FnMut(&X) -> Result<H, String>, update: impl FnMut(&X, &Vector, Scalar, bool) -> Result<(), String>, initial_guess: X, equality_constraint: EqualityConstraint, sparse: Option<SparseSolver>, ) -> Result<X, OptimizationError>
Auto Trait Implementations§
impl Freeze for NewtonRaphson
impl RefUnwindSafe for NewtonRaphson
impl Send for NewtonRaphson
impl Sync for NewtonRaphson
impl Unpin for NewtonRaphson
impl UnsafeUnpin for NewtonRaphson
impl UnwindSafe for NewtonRaphson
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