🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
GoldenSectionOptimizer.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstMath/UnaryOptimizer.hpp"
25
26
27AST_NAMESPACE_BEGIN
28
32class AST_MATH_API GoldenSectionOptimizer : public UnaryOptimizer
33{
34public:
35 using UnaryOptimizer::UnaryOptimizer;
36 GoldenSectionOptimizer() = default;
37 ~GoldenSectionOptimizer() = default;
38 using UnaryOptimizer::solve;
39 errc_t solve(UnaryScalarFunc& func, double min, double max, double& result, double* funcValue = nullptr) override;
40};
41
42
54template<typename Func>
55errc_t aGoldenSectionMinimize(Func func, double min, double max, double& result,
56 double* funcValue = nullptr,
57 double absTol = kDefaultAbsTol, double relTol = kDefaultRelTol,
58 int maxIter = kDefaultMaxIter)
59{
60 GoldenSectionOptimizer solver(relTol, absTol, maxIter);
61 return solver.solve(func, min, max, result, funcValue);
62}
63
74AST_MATH_API errc_t aGoldenSectionMinimize(UnaryScalarFunc& func, double min, double max, double& result,
75 double* funcValue = nullptr,
76 double absTol = kDefaultAbsTol, double relTol = kDefaultRelTol,
77 int maxIter = kDefaultMaxIter);
78
79
80AST_NAMESPACE_END
黄金分割法求解器
定义 GoldenSectionOptimizer.hpp:33
errc_t solve(UnaryScalarFunc &func, double min, double max, double &result, double *funcValue=nullptr) override
求解一元函数在区间内的极小值点
定义 GoldenSectionOptimizer.cpp:38
一元函数极小值求解器基类
定义 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 aGoldenSectionMinimize(UnaryScalarFunc &func, double min, double max, double &result, double *funcValue, double absTol, double relTol, int maxIter)
黄金分割法自由函数:寻找一元函数在 [min, max] 内的极小值点
定义 GoldenSectionOptimizer.cpp:95