类 AbstractFieldODEStateInterpolator<T extends CalculusFieldElement<T>>

java.lang.Object
org.hipparchus.ode.sampling.AbstractFieldODEStateInterpolator<T>
类型参数:
T - 字段元素的类型
所有已实现的接口:
FieldODEStateInterpolator<T>
直接已知子类:
DummyFieldStepInterpolator

public abstract class AbstractFieldODEStateInterpolator<T extends CalculusFieldElement<T>> extends Object implements FieldODEStateInterpolator<T>
这个抽象类表示ODE积分过程中最后一步的插值器。

各种ODE积分器为步骤处理器提供扩展此类的对象。处理器可以使用这些对象在前一个和当前网格点之间的中间时间检索状态向量(密集输出)。

另请参阅:
  • 构造器详细资料

  • 方法详细资料

    • restrictStep

      public AbstractFieldODEStateInterpolator<T> restrictStep(FieldODEStateAndDerivative<T> previousState, FieldODEStateAndDerivative<T> currentState)
      创建实例的新受限版本。

      实例不会发生任何改变。

      参数:
      previousState - 受限步骤的起点
      currentState - 受限步骤的终点
      返回:
      实例的受限版本
      另请参阅:
    • create

      protected abstract AbstractFieldODEStateInterpolator<T> create(boolean newForward, FieldODEStateAndDerivative<T> newGlobalPreviousState, FieldODEStateAndDerivative<T> newGlobalCurrentState, FieldODEStateAndDerivative<T> newSoftPreviousState, FieldODEStateAndDerivative<T> newSoftCurrentState, FieldEquationsMapper<T> newMapper)
      创建一个新实例。
      参数:
      newForward - 积分方向指示器
      newGlobalPreviousState - 全局步骤的起点
      newGlobalCurrentState - 全局步骤的终点
      newSoftPreviousState - 受限步骤的起点
      newSoftCurrentState - 受限步骤的终点
      newMapper - 所有方程的方程映射器
      返回:
      一个新实例
    • getGlobalPreviousState

      public FieldODEStateAndDerivative<T> getGlobalPreviousState()
      获取前一个全局网格点状态。
      返回:
      前一个全局网格点状态
    • getGlobalCurrentState

      public FieldODEStateAndDerivative<T> getGlobalCurrentState()
      获取当前全局网格点状态。
      返回:
      当前全局网格点状态
    • getPreviousState

      public FieldODEStateAndDerivative<T> getPreviousState()
      获取前一个网格点时间的状态。
      指定者:
      getPreviousState 在接口中 FieldODEStateInterpolator<T extends CalculusFieldElement<T>>
      返回:
      前一个网格点时间的状态
    • isPreviousStateInterpolated

      public boolean isPreviousStateInterpolated()
      确定是否通过积分器直接计算前一个状态,还是使用插值计算。

      通常,前一个状态是由积分器直接计算的,但是当检测到事件时,步骤会缩短,使事件发生在步骤边界上,这意味着前一个状态可能由插值器计算。

      指定者:
      isPreviousStateInterpolated 在接口中 FieldODEStateInterpolator<T extends CalculusFieldElement<T>>
      返回:
      如果前一个状态是由插值器计算的,则为true,如果由积分器直接计算,则为false
    • getCurrentState

      public FieldODEStateAndDerivative<T> getCurrentState()
      获取当前网格点时间的状态。
      指定者:
      getCurrentState 在接口中 FieldODEStateInterpolator<T extends CalculusFieldElement<T>>
      返回:
      当前网格点时间的状态
    • isCurrentStateInterpolated

      public boolean isCurrentStateInterpolated()
      确定是否通过积分器直接计算当前状态,还是使用插值计算。

      通常,当前状态是由积分器直接计算的,但是当检测到事件时,步骤会缩短,使事件发生在步骤边界上,这意味着当前状态可能由插值器计算。

      指定者:
      isCurrentStateInterpolated 在接口中 FieldODEStateInterpolator<T extends CalculusFieldElement<T>>
      返回:
      如果当前状态是由插值器计算的,则为true,如果由积分器直接计算,则为false
    • getInterpolatedState

      public FieldODEStateAndDerivative<T> getInterpolatedState(T time)
      获取插值时间点的状态。

      允许设置超出当前步骤的时间,但应谨慎使用,因为远离此步骤的插值器的精度可能非常差。添加此允许是为了简化在步骤端点附近实现搜索算法。

      指定者:
      getInterpolatedState 在接口中 FieldODEStateInterpolator<T extends CalculusFieldElement<T>>
      参数:
      time - 插值点的时间
      返回:
      插值时间处的状态
    • isForward

      public boolean isForward()
      检查自然积分方向是否为向前。

      此方法提供积分器本身指定的积分方向,避免了在退化情况下出现的一些麻烦问题,比如由于在步骤初始化、步骤控制或离散事件触发时发生的空步长而导致的取消。

      指定者:
      isForward 在接口中 FieldODEStateInterpolator<T extends CalculusFieldElement<T>>
      返回:
      如果积分变量(时间)在积分过程中增加,则为true
    • getMapper

      protected FieldEquationsMapper<T> getMapper()
      获取ODE方程主要和次要分量的映射器。
      返回:
      ODE方程主要和次要分量的映射器
    • computeInterpolatedStateAndDerivatives

      protected abstract FieldODEStateAndDerivative<T> computeInterpolatedStateAndDerivatives(FieldEquationsMapper<T> equationsMapper, T time, T theta, T thetaH, T oneMinusThetaH) throws MathIllegalStateException
      计算插值时间处的状态和导数。这是应该由派生类实现的主要处理方法,用于执行插值。
      参数:
      equationsMapper - ODE方程主要和次要分量的映射器
      time - 插值时间
      theta - 步长内的归一化插值横坐标(theta在上一个时间步长为零,在当前时间步长为一)
      thetaH - 前一个时间和插值时间之间的时间间隔
      oneMinusThetaH - 插值时间和当前时间之间的时间间隔
      返回:
      插值状态和导数
      抛出:
      MathIllegalStateException - 如果函数评估次数超过限制