接口 BracketedRealFieldUnivariateSolver<T extends CalculusFieldElement<T>>
- 类型参数:
-
T
- 字段元素的类型
- 所有已知实现类:
-
FieldBracketingNthOrderBrentSolver
public interface BracketedRealFieldUnivariateSolver<T extends CalculusFieldElement<T>>
维护有一个包围解的一维实根查找算法的接口。拥有这种根查找算法有几个优点:
- 包围解保证根被保持在区间内。因此,这些算法通常也保证收敛。
- 包围解意味着我们有机会仅返回大于或等于实际根的根,或小于或等于实际根的根。也就是说,我们可以控制允许的解。其他根查找算法通常只能保证找到的解(根)在实际根周围。
为了向后兼容,所有根查找算法必须将允许的解的默认值设为ANY_SIDE
。
- 另请参阅:
-
嵌套类概要
修饰符和类型接口说明static class
函数的区间,包围一个根。 -
方法概要
修饰符和类型方法说明获取求解器的绝对精度。int
获取目标函数的评估次数。获取求解器的函数值精度。int
获取最大函数评估次数。获取求解器的相对精度。solve
(int maxEval, CalculusFieldUnivariateFunction<T> f, T min, T max, AllowedSolution allowedSolution) 在给定区间内求解零点。solve
(int maxEval, CalculusFieldUnivariateFunction<T> f, T min, T max, T startValue, AllowedSolution allowedSolution) 在给定区间内求解零点,从startValue
开始。solveInterval
(int maxEval, CalculusFieldUnivariateFunction<T> f, T min, T max) 在给定区间内求解零点,并返回围绕根的容差区间。solveInterval
(int maxEval, CalculusFieldUnivariateFunction<T> f, T min, T max, T startValue) 在给定区间内求解零点,并返回围绕根的容差区间。
-
方法详细资料
-
getMaxEvaluations
int getMaxEvaluations()获取最大函数评估次数。- 返回:
- 最大函数评估次数。
-
getEvaluations
int getEvaluations()获取目标函数的评估次数。评估次数对应于最后一次调用optimize
方法。如果尚未调用该方法,则为0。- 返回:
- 目标函数的评估次数。
-
getAbsoluteAccuracy
T getAbsoluteAccuracy()获取求解器的绝对精度。求解器返回的解应该精确到此容差,即,如果ε是求解器的绝对精度,v
是solve
方法之一返回的值,则函数的根应该存在于区间(v
- ε,v
+ ε)中。- 返回:
- 绝对精度。
-
getRelativeAccuracy
T getRelativeAccuracy()获取求解器的相对精度。相对精度的约定与getAbsoluteAccuracy()
相同,但使用相对误差而不是绝对误差。如果ρ是为求解器配置的相对精度,v
是返回的值,则函数的根应该存在于区间(v
- ρv
,v
+ ρv
)中。- 返回:
- 相对精度。
-
getFunctionValueAccuracy
T getFunctionValueAccuracy()获取求解器的函数值精度。如果v
是求解器对函数f
返回的值,则根据约定,|f(v)|
应小于或等于求解器配置的函数值精度。- 返回:
- 函数值精度。
-
solve
T solve(int maxEval, CalculusFieldUnivariateFunction<T> f, T min, T max, AllowedSolution allowedSolution) 在给定区间内求解零点。求解器可能要求区间包围单个零根。需要进行包围的求解器应能处理一个端点本身就是根的情况。- 参数:
-
maxEval
- 最大评估次数。 -
f
- 要求解的函数。 -
min
- 区间的下界。 -
max
- 区间的上界。 -
allowedSolution
- 根查找算法可能接受的解的类型。 - 返回:
- 使函数为零的值。
- 抛出:
-
MathIllegalArgumentException
- 如果参数不满足求解器指定的要求。 -
MathIllegalStateException
- 如果超过了允许的评估次数。
-
solve
T solve(int maxEval, CalculusFieldUnivariateFunction<T> f, T min, T max, T startValue, AllowedSolution allowedSolution) 在给定区间内求解零点,从startValue
开始。求解器可能要求区间包围单个零根。需要进行包围的求解器应能处理一个端点本身就是根的情况。- 参数:
-
maxEval
- 最大评估次数。 -
f
- 要求解的函数。 -
min
- 区间的下界。 -
max
- 区间的上界。 -
startValue
- 要使用的起始值。 -
allowedSolution
- 根查找算法可能接受的解的类型。 - 返回:
- 使函数为零的值。
- 抛出:
-
MathIllegalArgumentException
- 如果参数不满足求解器指定的要求。 -
MathIllegalStateException
- 如果超过了允许的评估次数。
-
solveInterval
default BracketedRealFieldUnivariateSolver.Interval<T> solveInterval(int maxEval, CalculusFieldUnivariateFunction<T> f, T min, T max) throws MathIllegalArgumentException, MathIllegalStateException 在给定区间内求解零点,并返回围绕根的容差区间。要求起始区间包围一个根。
- 参数:
-
maxEval
- 最大评估次数。 -
f
- 要求解的函数。 -
min
- 区间的下界。f(min) != 0.0。 -
max
- 区间的上界。f(max) != 0.0。 - 返回:
-
一个区间 [ta, tb],使得某个 t 在 [ta, tb] 中满足 f(t) == 0.0,或者具有跨越零的阶梯状不连续性。两个端点也满足收敛标准,因此任何一个都可以用作根。也就是说,该区间满足条件(| tb - ta | <=
absolute
精度 + max(ta, tb) *relative
精度)或(max(|f(ta)|, |f(tb)|) <=getFunctionValueAccuracy()
)或者在 ta 和 tb 之间没有字段中的数字。区间的宽度(tb - ta)可能为零。 - 抛出:
-
MathIllegalArgumentException
- 如果参数不满足求解器指定的要求。 -
MathIllegalStateException
- 如果超过了允许的评估次数。
-
solveInterval
BracketedRealFieldUnivariateSolver.Interval<T> solveInterval(int maxEval, CalculusFieldUnivariateFunction<T> f, T min, T max, T startValue) throws MathIllegalArgumentException, MathIllegalStateException 在给定区间内求解零点,并返回围绕根的容差区间。要求起始区间包围一个根。
- 参数:
-
maxEval
- 最大评估次数。 -
f
- 要解决的函数。 -
min
- 区间的下界。f(min) != 0.0。 -
max
- 区间的上界。f(max) != 0.0。 -
startValue
- 起始值。 - 返回:
-
一个区间 [ta, tb],使得在该区间内存在某个 t 满足 f(t) == 0.0,或者存在一个跨越零点的阶梯不连续性。两个端点也满足收敛标准,因此任何一个都可以用作根。也就是说,该区间满足条件 (| tb - ta | <=
absolute
精度 + max(ta, tb) *relative
精度) 或 ( max(|f(ta)|, |f(tb)|) <=getFunctionValueAccuracy()
) 或 ta 和 tb 之间的字段中的数字。区间的宽度 (tb - ta) 可能为零。 - 抛出:
-
MathIllegalArgumentException
- 如果参数不满足求解器指定的要求。 -
MathIllegalStateException
- 如果超过允许的评估次数。
-