类 BaseSecantSolver
java.lang.Object
org.hipparchus.analysis.solvers.BaseAbstractUnivariateSolver<UnivariateFunction>
org.hipparchus.analysis.solvers.AbstractUnivariateSolver
org.hipparchus.analysis.solvers.BaseSecantSolver
- 所有已实现的接口:
-
BaseUnivariateSolver<UnivariateFunction>
,BracketedUnivariateSolver<UnivariateFunction>
,UnivariateSolver
- 直接已知子类:
-
IllinoisSolver
,PegasusSolver
,RegulaFalsiSolver
public abstract class BaseSecantSolver extends AbstractUnivariateSolver implements BracketedUnivariateSolver<UnivariateFunction>
所有括号法根查找(逼近单变量实函数零点)的基类。
基于以下文章实现了Regula Falsi
和Illinois
方法:M. Dowell and P. Jarratt,计算方程根的修改的拟牛顿法,BIT数值数学,卷11,号2,页168-174,Springer,1971年。
基于以下文章实现了Pegasus
方法:M. Dowell and P. Jarratt,计算方程根的“飞马”方法,BIT数值数学,卷12,号4,页503-508,Springer,1972年。
Secant
方法不是一个括号法,因此这里没有实现。它有一个单独的实现。
-
嵌套类概要
从接口继承的嵌套类/接口 org.hipparchus.analysis.solvers.BracketedUnivariateSolver
BracketedUnivariateSolver.Interval
-
字段概要
-
构造器概要
限定符构造器说明protected
BaseSecantSolver
(double relativeAccuracy, double absoluteAccuracy, double functionValueAccuracy, BaseSecantSolver.Method method) 构造一个求解器。protected
BaseSecantSolver
(double relativeAccuracy, double absoluteAccuracy, BaseSecantSolver.Method method) 构造一个求解器。protected
BaseSecantSolver
(double absoluteAccuracy, BaseSecantSolver.Method method) 构造一个求解器。 -
方法概要
修饰符和类型方法说明protected final double
doSolve()
在派生类中实现实际优化算法的方法。protected final BracketedUnivariateSolver.Interval
查找根并返回包含根的区间。double
solve
(int maxEval, UnivariateFunction f, double min, double max, double startValue) 在给定区间中求解零点,从startValue
开始。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, 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
从接口继承的方法 org.hipparchus.analysis.solvers.BracketedUnivariateSolver
solveInterval
-
字段详细资料
-
DEFAULT_ABSOLUTE_ACCURACY
protected static final double DEFAULT_ABSOLUTE_ACCURACY默认绝对精度。- 另请参阅:
-
-
构造器详细资料
-
BaseSecantSolver
构造一个求解器。- 参数:
-
absoluteAccuracy
- 绝对精度。 -
method
- 使用的基于拟牛顿法的根查找方法。
-
BaseSecantSolver
protected BaseSecantSolver(double relativeAccuracy, double absoluteAccuracy, BaseSecantSolver.Method method) 构造一个求解器。- 参数:
-
relativeAccuracy
- 相对精度。 -
absoluteAccuracy
- 绝对精度。 -
method
- 使用的基于拟牛顿法的根查找方法。
-
BaseSecantSolver
protected BaseSecantSolver(double relativeAccuracy, double absoluteAccuracy, double functionValueAccuracy, BaseSecantSolver.Method method) 构造一个求解器。- 参数:
-
relativeAccuracy
- 最大相对误差。 -
absoluteAccuracy
- 最大绝对误差。 -
functionValueAccuracy
- 最大函数值误差。 -
method
- 使用的基于拟牛顿法的根查找方法。
-
-
方法详细资料
-
solve
public double solve(int maxEval, UnivariateFunction f, double min, double max, AllowedSolution allowedSolution) 在给定区间中求解零点。求解器可能要求区间括住单个零点。那些需要括号的求解器应该能够处理一个端点本身就是根的情况。- 指定者:
-
solve
在接口中BracketedUnivariateSolver<UnivariateFunction>
- 参数:
-
maxEval
- 最大评估次数。 -
f
- 要求解的函数。 -
min
- 区间下限。 -
max
- 区间上限。 -
allowedSolution
- 根查找算法可能接受的解的类型。 - 返回:
- 函数为零的值。
-
solve
public double solve(int maxEval, UnivariateFunction f, double min, double max, double startValue, AllowedSolution allowedSolution) 在给定区间中求解零点,从startValue
开始。求解器可能要求区间括住单个零点。那些需要括号的求解器应该能够处理一个端点本身就是根的情况。- 指定者:
-
solve
在接口中BracketedUnivariateSolver<UnivariateFunction>
- 参数:
-
maxEval
- 最大评估次数。 -
f
- 要求解的函数。 -
min
- 区间下限。 -
max
- 区间上限。 -
startValue
- 要使用的起始值。 -
allowedSolution
- 根查找算法可能接受的解的类型。 - 返回:
- 函数为零的值。
-
solve
在给定区间中求解零点,从startValue
开始。求解器可能要求区间括住单个零点。那些需要括号的求解器应该能够处理一个端点本身就是根的情况。- 指定者:
-
solve
在接口中BaseUnivariateSolver<UnivariateFunction>
- 覆盖:
-
solve
在类中BaseAbstractUnivariateSolver<UnivariateFunction>
- 参数:
-
maxEval
- 最大评估次数。 -
f
- 要求解的函数。 -
min
- 区间下限。 -
max
- 区间上限。 -
startValue
- 要使用的起始值。 - 返回:
- 函数为零的值。
-
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
- 如果超过允许的评估次数。
-
doSolve
在派生类中实现实际优化算法的方法。- 指定者:
-
doSolve
在类中BaseAbstractUnivariateSolver<UnivariateFunction>
- 返回:
- 根。
- 抛出:
-
MathIllegalStateException
- 如果由于有限精度而算法失败。
-
doSolveInterval
protected final BracketedUnivariateSolver.Interval doSolveInterval() throws MathIllegalStateException找到根并返回包含根的区间。- 返回:
- 一个包含根的区间,使得所选端点满足收敛标准。
- 抛出:
-
MathIllegalStateException
- 如果收敛失败。
-