类 BracketingNthOrderBrentSolver
java.lang.Object
org.hipparchus.analysis.solvers.BaseAbstractUnivariateSolver<UnivariateFunction>
org.hipparchus.analysis.solvers.AbstractUnivariateSolver
org.hipparchus.analysis.solvers.BracketingNthOrderBrentSolver
- 所有已实现的接口:
-
BaseUnivariateSolver<UnivariateFunction>
,BracketedUnivariateSolver<UnivariateFunction>
,UnivariateSolver
public class BracketingNthOrderBrentSolver extends AbstractUnivariateSolver implements BracketedUnivariateSolver<UnivariateFunction>
该类实现了对Brent算法的修改。
相对于原始的Brent算法,修改包括:
- 根据用户指定的
AllowedSolution
在当前区间中选择返回值, - 反转多项式根搜索的最大阶数是用户指定的,而不仅仅是反转二次方程。
给定区间必须包含根。
-
嵌套类概要
从接口继承的嵌套类/接口 org.hipparchus.analysis.solvers.BracketedUnivariateSolver
BracketedUnivariateSolver.Interval
-
构造器概要
构造器说明使用默认精度和最大阶数(分别为1e-6和5)构造求解器BracketingNthOrderBrentSolver
(double relativeAccuracy, double absoluteAccuracy, double functionValueAccuracy, int maximalOrder) 构造求解器。BracketingNthOrderBrentSolver
(double relativeAccuracy, double absoluteAccuracy, int maximalOrder) 构造求解器。BracketingNthOrderBrentSolver
(double absoluteAccuracy, int maximalOrder) 构造求解器。 -
方法概要
修饰符和类型方法说明protected double
doSolve()
在派生类中实现实际优化算法的方法。protected BracketedUnivariateSolver.Interval
寻找根并返回包含根的区间。int
获取最大阶数。double
solve
(int maxEval, UnivariateFunction f, double min, double max, double startValue, AllowedSolution allowedSolution) 在给定区间中解决零点,从startValue
开始。double
solve
(int maxEval, UnivariateFunction f, double min, double max, AllowedSolution allowedSolution) 在给定区间中解决零点。solveInterval
(int maxEval, UnivariateFunction f, double min, double max, double startValue) 在给定区间中解决零点并返回围绕根的容差区间。从类继承的方法 org.hipparchus.analysis.solvers.BaseAbstractUnivariateSolver
computeObjectiveValue, getAbsoluteAccuracy, getEvaluations, getFunctionValueAccuracy, getMax, getMin, getRelativeAccuracy, getStartValue, incrementEvaluationCount, isBracketing, isSequence, setup, solve, solve, solve, verifyBracketing, verifyInterval, verifySequence
从类继承的方法 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
从接口继承的方法 org.hipparchus.analysis.solvers.BaseUnivariateSolver
getAbsoluteAccuracy, getEvaluations, getFunctionValueAccuracy, getRelativeAccuracy, solve, solve, solve
从接口继承的方法 org.hipparchus.analysis.solvers.BracketedUnivariateSolver
solveInterval
-
构造器详细资料
-
BracketingNthOrderBrentSolver
public BracketingNthOrderBrentSolver()使用默认精度和最大阶数(分别为1e-6和5)构造求解器 -
BracketingNthOrderBrentSolver
public BracketingNthOrderBrentSolver(double absoluteAccuracy, int maximalOrder) throws MathIllegalArgumentException 构造求解器。- 参数:
-
absoluteAccuracy
- 绝对精度。 -
maximalOrder
- 最大阶数。 - 抛出:
-
MathIllegalArgumentException
- 如果最大阶数低于2
-
BracketingNthOrderBrentSolver
public BracketingNthOrderBrentSolver(double relativeAccuracy, double absoluteAccuracy, int maximalOrder) throws MathIllegalArgumentException 构造求解器。- 参数:
-
relativeAccuracy
- 相对精度。 -
absoluteAccuracy
- 绝对精度。 -
maximalOrder
- 最大阶数。 - 抛出:
-
MathIllegalArgumentException
- 如果最大阶数低于2
-
BracketingNthOrderBrentSolver
public BracketingNthOrderBrentSolver(double relativeAccuracy, double absoluteAccuracy, double functionValueAccuracy, int maximalOrder) throws MathIllegalArgumentException 构造求解器。- 参数:
-
relativeAccuracy
- 相对精度。 -
absoluteAccuracy
- 绝对精度。 -
functionValueAccuracy
- 函数值精度。 -
maximalOrder
- 最大阶数。 - 抛出:
-
MathIllegalArgumentException
- 如果最大阶数低于2
-
-
方法详细资料
-
getMaximalOrder
public int getMaximalOrder()获取最大阶数。- 返回:
- 最大阶数
-
doSolve
protected double doSolve()在派生类中实现实际优化算法的方法。- 指定者:
-
doSolve
在类中BaseAbstractUnivariateSolver<UnivariateFunction>
- 返回:
- 根。
-
doSolveInterval
寻找根并返回包含根的区间。- 返回:
- 一个包含根的区间,使得两个端点都满足收敛标准。
-
solve
public double solve(int maxEval, UnivariateFunction f, double min, double max, AllowedSolution allowedSolution) throws MathIllegalArgumentException, MathIllegalStateException 在给定区间中解决零点。求解器可能要求区间包围单个零点根。那些需要区间包围的求解器应该能够处理其中一个端点本身就是根的情况。- 指定者:
-
solve
在接口中BracketedUnivariateSolver<UnivariateFunction>
- 参数:
-
maxEval
- 最大评估次数。 -
f
- 要解决的函数。 -
min
- 区间的下界。 -
max
- 区间的上界。 -
allowedSolution
- 根查找算法可能接受的解的类型。 - 返回:
- 函数为零的值。
- 抛出:
-
MathIllegalArgumentException
- 如果参数不满足求解器指定的要求。 -
MathIllegalStateException
- 如果超过允许的评估次数。
-
solve
public double solve(int maxEval, UnivariateFunction f, double min, double max, double startValue, AllowedSolution allowedSolution) throws MathIllegalArgumentException, MathIllegalStateException 在给定区间中解决零点,从startValue
开始。求解器可能要求区间包围单个零点根。那些需要区间包围的求解器应该能够处理其中一个端点本身就是根的情况。- 指定者:
-
solve
在接口中BracketedUnivariateSolver<UnivariateFunction>
- 参数:
-
maxEval
- 最大评估次数。 -
f
- 要解决的函数。 -
min
- 区间的下界。 -
max
- 区间的上界。 -
startValue
- 要使用的起始值。 -
allowedSolution
- 根查找算法可能接受的解的类型。 - 返回:
- 函数为零的值。
- 抛出:
-
MathIllegalArgumentException
- 如果参数不满足求解器指定的要求。 -
MathIllegalStateException
- 如果超过允许的评估次数。
-
solveInterval
public BracketedUnivariateSolver.Interval solveInterval(int maxEval, UnivariateFunction f, double min, double max, double startValue) throws MathIllegalArgumentException, MathIllegalStateException 在给定区间中解决零点并返回围绕根的容差区间。要求起始区间包围根,或者其中一个端点的函数值为0.0。
- 指定者:
-
solveInterval
在接口中BracketedUnivariateSolver<UnivariateFunction>
- 参数:
-
maxEval
- 最大评估次数。 -
f
- 要解决的函数。 -
min
- 区间的下界。 -
max
- 区间的上界。必须大于min
。 -
startValue
- 要使用的起始值。必须在区间[min, max]内。 - 返回:
-
一个区间[ta, tb],使得存在某个t在[ta, tb]范围内满足f(t) == 0.0或具有跨越零点的阶梯不连续性。两个端点也满足收敛标准,因此任何一个都可以用作根。也就是说,该区间满足条件(| tb - ta | <=
absolute
精度 + max(ta, tb) *relative
精度)或(max(|f(ta)|, |f(tb)|) <=BaseUnivariateSolver.getFunctionValueAccuracy()
)或ta和tb之间没有浮点数。区间的宽度(tb - ta)可能为零。 - 抛出:
-
MathIllegalArgumentException
- 如果参数不满足求解器指定的要求。 -
MathIllegalStateException
- 如果超过允许的评估次数。
-