🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
BrentOptimizer.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstMath/UnaryOptimizer.hpp"
25
26
27AST_NAMESPACE_BEGIN
28
33class AST_MATH_API BrentOptimizer : public UnaryOptimizer
34{
35public:
36 using UnaryOptimizer::UnaryOptimizer;
37 BrentOptimizer() = default;
38 ~BrentOptimizer() = default;
39 using UnaryOptimizer::solve;
40 errc_t solve(UnaryScalarFunc& func, double min, double max, double& result, double* funcValue = nullptr) override;
41};
42
43
55template<typename Func>
56errc_t aBrentMinimize(Func func, double min, double max, double& result,
57 double* funcValue = nullptr,
58 double absTol = kDefaultAbsTol, double relTol = kDefaultRelTol,
59 int maxIter = kDefaultMaxIter)
60{
61 BrentOptimizer solver(relTol, absTol, maxIter);
62 return solver.solve(func, min, max, result, funcValue);
63}
64
75AST_MATH_API errc_t aBrentMinimize(UnaryScalarFunc& func, double min, double max, double& result,
76 double* funcValue = nullptr,
77 double absTol = kDefaultAbsTol, double relTol = kDefaultRelTol,
78 int maxIter = kDefaultMaxIter);
79
80
81AST_NAMESPACE_END
Brent法求解器
定义 BrentOptimizer.hpp:34
errc_t solve(UnaryScalarFunc &func, double min, double max, double &result, double *funcValue=nullptr) override
求解一元函数在区间内的极小值点
定义 BrentOptimizer.cpp:39
一元函数极小值求解器基类
定义 UnaryOptimizer.hpp:53
std::enable_if<!std::is_base_of< UnaryScalarFunc, typenamestd::remove_pointer< Func >::type >::value, errc_t >::type solve(Func func, double min, double max, double &result, double *funcValue=nullptr)
求解一元函数极小值点(支持lambda函数)
定义 UnaryOptimizer.hpp:96
一元标量值函数
定义 UnaryScalarFunc.hpp:31
errc_t aBrentMinimize(UnaryScalarFunc &func, double min, double max, double &result, double *funcValue, double absTol, double relTol, int maxIter)
Brent法自由函数:寻找一元函数在 [min, max] 内的极小值点
定义 BrentOptimizer.cpp:158