接口 BracketedRealFieldUnivariateSolver<T extends CalculusFieldElement<T>>

类型参数:
T - 字段元素的类型
所有已知实现类:
FieldBracketingNthOrderBrentSolver

public interface BracketedRealFieldUnivariateSolver<T extends CalculusFieldElement<T>>
维护有一个包围解的一维实根查找算法的接口。拥有这种根查找算法有几个优点:
  • 包围解保证根被保持在区间内。因此,这些算法通常也保证收敛。
  • 包围解意味着我们有机会仅返回大于或等于实际根的根,或小于或等于实际根的根。也就是说,我们可以控制允许的解。其他根查找算法通常只能保证找到的解(根)在实际根周围。

为了向后兼容,所有根查找算法必须将允许的解的默认值设为ANY_SIDE

另请参阅:
  • 方法详细资料

    • getMaxEvaluations

      int getMaxEvaluations()
      获取最大函数评估次数。
      返回:
      最大函数评估次数。
    • getEvaluations

      int getEvaluations()
      获取目标函数的评估次数。评估次数对应于最后一次调用optimize方法。如果尚未调用该方法,则为0。
      返回:
      目标函数的评估次数。
    • getAbsoluteAccuracy

      T getAbsoluteAccuracy()
      获取求解器的绝对精度。求解器返回的解应该精确到此容差,即,如果ε是求解器的绝对精度,vsolve方法之一返回的值,则函数的根应该存在于区间(v - ε,v + ε)中。
      返回:
      绝对精度。
    • getRelativeAccuracy

      T getRelativeAccuracy()
      获取求解器的相对精度。相对精度的约定与getAbsoluteAccuracy()相同,但使用相对误差而不是绝对误差。如果ρ是为求解器配置的相对精度,v是返回的值,则函数的根应该存在于区间(v - ρ vv + ρ 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

      在给定区间内求解零点,并返回围绕根的容差区间。

      要求起始区间包围一个根。

      参数:
      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

      在给定区间内求解零点,并返回围绕根的容差区间。

      要求起始区间包围一个根。

      参数:
      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 - 如果超过允许的评估次数。