接口 BracketedUnivariateSolver<F extends UnivariateFunction>

类型参数:
F - 要解决的函数的类型。
所有超级接口:
BaseUnivariateSolver<F>
所有已知实现类:
BaseSecantSolver, BracketingNthOrderBrentSolver, IllinoisSolver, PegasusSolver, RegulaFalsiSolver

public interface BracketedUnivariateSolver<F extends UnivariateFunction> extends BaseUnivariateSolver<F>
接口,用于维护包含根的区间的(单变量实数)根查找算法。拥有这种根查找算法有几个优点:
  • 区间根的解决方案保证根保持在区间内。因此,这些算法通常也保证收敛。
  • 区间根意味着我们有机会仅返回大于或等于实际根的根,或小于或等于实际根的根。也就是说,我们可以控制是否允许允许的解决方案是欠估计还是过估计。其他根查找算法通常只能保证找到的解决方案(根)在实际根周围。

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

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

    • solve

      double solve(int maxEval, F f, double min, double max, AllowedSolution allowedSolution)
      在给定区间中求解零点。求解器可能要求区间将单个零点根包围起来。那些确实需要区间包围的求解器应该能够处理一个端点本身就是根的情况。
      参数:
      maxEval - 最大评估次数。
      f - 要解决的函数。
      min - 区间的下界。
      max - 区间的上界。
      allowedSolution - 根查找算法可能接受的解决方案类型。
      返回:
      函数为零的值。
      抛出:
      MathIllegalArgumentException - 如果参数不满足求解器指定的要求。
      MathIllegalStateException - 如果超过允许的评估次数。
    • solve

      double solve(int maxEval, F f, double min, double max, double startValue, AllowedSolution allowedSolution)
      在给定区间中求解零点,从startValue开始。求解器可能要求区间将单个零点根包围起来。那些确实需要区间包围的求解器应该能够处理一个端点本身就是根的情况。
      参数:
      maxEval - 最大评估次数。
      f - 要解决的函数。
      min - 区间的下界。
      max - 区间的上界。
      startValue - 要使用的起始值。
      allowedSolution - 根查找算法可能接受的解决方案类型。
      返回:
      函数为零的值。
      抛出:
      MathIllegalArgumentException - 如果参数不满足求解器指定的要求。
      MathIllegalStateException - 如果超过允许的评估次数。
    • solveInterval

      default BracketedUnivariateSolver.Interval solveInterval(int maxEval, F f, double min, double max) throws MathIllegalArgumentException, MathIllegalStateException
      在给定区间中求解零点,并返回围绕根的容差区间。

      要求起始区间包围根,或者端点处的函数值为0.0。

      参数:
      maxEval - 最大评估次数。
      f - 要解决的函数。
      min - 区间的下界。
      max - 区间的上界。必须大于min
      返回:
      一个区间[ta, tb],使得对于某个t在[ta, tb],f(t) == 0.0或具有跨越零点的阶梯不连续性。两个端点也满足收敛标准,因此任何一个都可以用作根。也就是说,该区间满足条件(| tb - ta | <= 绝对精度 + max(ta, tb) * 相对精度)或(max(|f(ta)|, |f(tb)|) <= BaseUnivariateSolver.getFunctionValueAccuracy())或ta和tb之间没有浮点数。区间的宽度(tb - ta)可能为零。
      抛出:
      MathIllegalArgumentException - 如果参数不满足求解器指定的要求。
      MathIllegalStateException - 如果超过允许的评估次数。
    • solveInterval

      BracketedUnivariateSolver.Interval solveInterval(int maxEval, F f, double min, double max, double startValue) throws MathIllegalArgumentException, MathIllegalStateException
      在给定区间中求解零点,并返回围绕根的容差区间。

      要求起始区间包围根,或者端点处的函数值为0.0。

      参数:
      maxEval - 最大评估次数。
      f - 要解决的函数。
      min - 区间的下界。
      max - 区间的上界。必须大于min
      startValue - 要使用的起始值。必须在区间[min, max]内。
      返回:
      一个区间[ta, tb],使得对于某个t在[ta, tb],f(t) == 0.0或具有跨越零点的阶梯不连续性。两个端点也满足收敛标准,因此任何一个都可以用作根。也就是说,该区间满足条件(| tb - ta | <= 绝对精度 + max(ta, tb) * 相对精度)或(max(|f(ta)|, |f(tb)|) <= BaseUnivariateSolver.getFunctionValueAccuracy())或ta和tb之间没有浮点数。区间的宽度(tb - ta)可能为零。
      抛出:
      MathIllegalArgumentException - 如果参数不满足求解器指定的要求。
      MathIllegalStateException - 如果超过允许的评估次数。