类 StepsizeHelper

java.lang.Object
org.hipparchus.ode.nonstiff.StepsizeHelper

public class StepsizeHelper extends Object
自适应步长控制的辅助类。
从以下版本开始:
2.0
  • 构造器详细资料

    • StepsizeHelper

      public StepsizeHelper(double minStep, double maxStep, double scalAbsoluteTolerance, double scalRelativeTolerance)
      简单构造函数。
      参数:
      minStep - 最小步长(符号无关,无论是正向还是反向积分,最后一步可以小于此值)
      maxStep - 最大步长(符号无关,无论是正向还是反向积分,最后一步可以小于此值)
      scalAbsoluteTolerance - 允许的绝对误差
      scalRelativeTolerance - 允许的相对误差
    • StepsizeHelper

      public StepsizeHelper(double minStep, double maxStep, double[] vecAbsoluteTolerance, double[] vecRelativeTolerance)
      简单构造函数。
      参数:
      minStep - 最小步长(符号无关,无论是正向还是反向积分,最后一步可以小于此值)
      maxStep - 最大步长(符号无关,无论是正向还是反向积分,最后一步可以小于此值)
      vecAbsoluteTolerance - 允许的绝对误差
      vecRelativeTolerance - 允许的相对误差
  • 方法详细资料

    • setMainSetDimension

      protected void setMainSetDimension(int mainSetDimension) throws MathIllegalArgumentException
      设置主要集合维度。
      参数:
      mainSetDimension - 主要集合的维度
      抛出:
      MathIllegalArgumentException - 如果自适应步长积分器的容差数组维度与方程设置不兼容
    • getMainSetDimension

      public int getMainSetDimension()
      获取主要集合维度。
      返回:
      主要集合维度
    • getRelativeTolerance

      public double getRelativeTolerance(int i)
      获取一个分量的相对容差。
      参数:
      i - 选择的分量
      返回:
      选择分量的相对容差
    • getTolerance

      public double getTolerance(int i, double scale)
      获取一个分量的容差。
      参数:
      i - 选择的分量
      scale - 相对容差的比例因子(即 y[i])
      返回:
      选择分量的容差
    • getTolerance

      public <T extends CalculusFieldElement<T>> T getTolerance(int i, T scale)
      获取一个分量的容差。
      类型参数:
      T - 字段元素的类型
      参数:
      i - 选择的分量
      scale - 相对容差的比例因子(即 y[i])
      返回:
      选择分量的容差
    • filterStep

      public double filterStep(double h, boolean forward, boolean acceptSmall) throws MathIllegalArgumentException
      过滤积分步长。
      参数:
      h - 有符号步长
      forward - 正向积分指示器
      acceptSmall - 如果为true,则小于最小值的步长会被静默增加到该值,如果为false,这样的小步长会生成异常
      返回:
      有界的积分步长(如果未达到边界,则为h,否则为有界值)
      抛出:
      MathIllegalArgumentException - 如果步长太小且acceptSmall为false
    • filterStep

      public <T extends CalculusFieldElement<T>> T filterStep(T h, boolean forward, boolean acceptSmall) throws MathIllegalArgumentException
      过滤积分步长。
      类型参数:
      T - 字段元素的类型
      参数:
      h - 有符号步长
      forward - 正向积分指示器
      acceptSmall - 如果为true,则小于最小值的步长会被静默增加到该值,如果为false,这样的小步长会生成异常
      返回:
      有界的积分步长(如果未达到边界,则为h,否则为有界值)
      抛出:
      MathIllegalArgumentException - 如果步长太小且acceptSmall为false
    • setInitialStepSize

      public void setInitialStepSize(double initialStepSize)
      设置初始步长。

      此方法允许用户指定一个初始正步长,而不是让积分器自行猜测。如果在开始积分之前未调用此方法,则积分器将通过自身估算初始步长。

      参数:
      initialStepSize - 要使用的初始步长(必须为正值,即使是反向积分;提供负值或超出最小/最大步长区间的值将导致积分器忽略该值,并由自身计算初始步长)
    • getInitialStep

      public double getInitialStep()
      获取初始步长。
      返回:
      初始步长
    • getMinStep

      public double getMinStep()
      获取最小步长。
      返回:
      最小步长
    • getMaxStep

      public double getMaxStep()
      获取最大步长。
      返回:
      最大步长
    • getDummyStepsize

      public double getDummyStepsize()
      获取虚拟步长。
      返回:
      getMinStep()getMaxStep() 的几何平均值