|
Metis 2.0.0
High-performance C++20 dual-mode numerical framework
|
Nonlinear root finding and implicit function solvers. More...
#include "metis/core/Function.hpp"#include "metis/core/MetisConcepts.hpp"#include "metis/core/MetisError.hpp"#include <casadi/casadi.hpp>#include <algorithm>#include <atomic>#include <cmath>#include <cstdint>#include <iostream>#include <limits>#include <string>#include <vector>

Go to the source code of this file.
Classes | |
| struct | metis::RootFinderOptions |
| Options for root finding algorithms. More... | |
| struct | metis::ImplicitFunctionOptions |
| Options for building differentiable implicit solve wrappers. More... | |
| struct | metis::RootResult< Scalar > |
| Result of a root finding operation. More... | |
| struct | metis::detail::NumericState |
| struct | metis::detail::StageOutcome |
| class | metis::NewtonSolver |
| Persistent nonlinear root solver. More... | |
Namespaces | |
| namespace | metis |
| namespace | metis::detail |
| Smooth approximation of ReLU function: softplus(x) = (1/beta) * log(1 + exp(beta * x)). | |
Enumerations | |
| enum class | metis::RootSolveStrategy { metis::Auto , metis::TrustRegionNewton , metis::LineSearchNewton , metis::QuasiNewtonBroyden , metis::PseudoTransientContinuation } |
| Numeric nonlinear solver strategy selection. More... | |
| enum class | metis::RootSolveMethod { metis::None , metis::TrustRegionNewton , metis::LineSearchNewton , metis::QuasiNewtonBroyden , metis::PseudoTransientContinuation } |
| Numeric nonlinear solver method actually used. More... | |
Functions | |
| std::string | metis::detail::method_name (RootSolveMethod method) |
| RootSolveMethod | metis::detail::strategy_to_method (RootSolveStrategy strategy) |
| std::string | metis::detail::unique_name (const std::string &prefix) |
| void | metis::detail::validate_root_options (const RootFinderOptions &opts, const std::string &context) |
| void | metis::detail::validate_root_problem (const casadi::Function &f_casadi, const std::string &context) |
| casadi::Dict | metis::detail::opts_to_dict (const RootFinderOptions &opts) |
| casadi::DM | metis::detail::vector_to_dm (const Eigen::VectorXd &x) |
| Eigen::VectorXd | metis::detail::dm_to_vector (const casadi::DM &x) |
| Eigen::MatrixXd | metis::detail::dm_to_matrix (const casadi::DM &x) |
| std::string | metis::detail::implicit_function_name (const casadi::Function &g_casadi) |
| void | metis::detail::validate_implicit_problem (const casadi::Function &g_casadi, const Eigen::VectorXd &x_guess, const ImplicitFunctionOptions &implicit_opts) |
| Eigen::VectorXd | metis::detail::solve_linear_system (const Eigen::MatrixXd &A, const Eigen::VectorXd &b) |
| bool | metis::detail::all_finite (const Eigen::VectorXd &x) |
| bool | metis::detail::all_finite (const Eigen::MatrixXd &x) |
| Eigen::VectorXd | metis::detail::evaluate_residual_only (const casadi::Function &residual_fn, const Eigen::VectorXd &x) |
| NumericState | metis::detail::evaluate_state (const casadi::Function &residual_fn, const casadi::Function &jacobian_fn, const Eigen::VectorXd &x, const std::string &context) |
| void | metis::detail::maybe_log (const RootFinderOptions &opts, const std::string &message) |
| bool | metis::detail::is_converged (const NumericState &state, const RootFinderOptions &opts) |
| StageOutcome | metis::detail::solve_trust_region (const casadi::Function &residual_fn, const casadi::Function &jacobian_fn, const NumericState &start, const RootFinderOptions &opts, int max_iterations) |
| StageOutcome | metis::detail::solve_line_search (const casadi::Function &residual_fn, const casadi::Function &jacobian_fn, const NumericState &start, const RootFinderOptions &opts, int max_iterations) |
| StageOutcome | metis::detail::solve_broyden (const casadi::Function &residual_fn, const casadi::Function &jacobian_fn, const NumericState &start, const RootFinderOptions &opts, int max_iterations) |
| StageOutcome | metis::detail::solve_pseudo_transient (const casadi::Function &residual_fn, const casadi::Function &jacobian_fn, const NumericState &start, const RootFinderOptions &opts, int max_iterations) |
| template<typename Scalar> | |
| RootResult< Scalar > | metis::rootfinder (const metis::Function &F, const Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > &x0, const RootFinderOptions &opts={}) |
| Solve F(x) = 0 for x given an initial guess. | |
| metis::Function | metis::create_implicit_function (const metis::Function &G, const Eigen::VectorXd &x_guess, const RootFinderOptions &opts={}, const ImplicitFunctionOptions &implicit_opts={}) |
| Create a differentiable implicit solve wrapper for G(...) = 0. | |
Nonlinear root finding and implicit function solvers.