Skip to main content

RootFinding

Trait RootFinding 

Source
pub trait RootFinding<F, J, X> {
    // Required method
    fn root(
        &self,
        function: impl FnMut(&X) -> Result<F, String>,
        jacobian: impl FnMut(&X) -> Result<J, String>,
        initial_guess: X,
        equality_constraint: EqualityConstraints,
        sparse: Option<SparseSolver>,
    ) -> Result<X, OptimizationError>;
}
Expand description

Root-finding algorithms, where a tangent of () is one the solver does not use.

Required Methods§

Source

fn root( &self, function: impl FnMut(&X) -> Result<F, String>, jacobian: impl FnMut(&X) -> Result<J, String>, initial_guess: X, equality_constraint: EqualityConstraints, sparse: Option<SparseSolver>, ) -> Result<X, OptimizationError>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl<L, S, F, J, X, E> RootFinding<F, J, X> for NewtonRaphson<L, S>
where S: ResidualMerit, L: LinearSolver<Tangent = J>, F: Jacobian + Erase<Erased = E>, X: Erase<Erased = E> + Solution, E: Tensor, <X as Tensor>::Unit: UnitRatio, for<'a> &'a X: Mul<StepSize<X, X>, Output = X>,

Source§

impl<Q, F, X, E> RootFinding<F, (), X> for GradientDescent<NoSearch, Q>
where Q: StepEstimator, F: Erase<Erased = E> + Jacobian + Mul<StepSize<F, X>, Output = X>, for<'a> &'a F: Mul<StepSize<F, X>, Output = X>, X: Erase<Erased = E> + Jacobian + Solution, <X as Tensor>::Unit: UnitDiv<<F as Tensor>::Unit>, E: Tensor, for<'a> &'a Matrix: Mul<&'a X, Output = Vector>,

Source§

impl<S, F, J, X, E> RootFinding<F, J, X> for NewtonRaphson<Direct, S>
where S: ResidualMerit, 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: UnitRatio, for<'a> &'a X: Mul<StepSize<X, X>, Output = X> + Mul<Scalar, Output = X>, for<'a> &'a Matrix: Mul<&'a X, Output = Vector>, for<'a> &'a CscMatrix: Mul<&'a X, Output = Vector>,