类 AbstractODEStateInterpolator

java.lang.Object
org.hipparchus.ode.sampling.AbstractODEStateInterpolator
所有已实现的接口:
Serializable, ODEStateInterpolator
直接已知子类:
DummyStepInterpolator

public abstract class AbstractODEStateInterpolator extends Object implements ODEStateInterpolator
这个抽象类表示ODE积分过程中最后一步的插值器。

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

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

    • AbstractODEStateInterpolator

      protected AbstractODEStateInterpolator(boolean isForward, ODEStateAndDerivative globalPreviousState, ODEStateAndDerivative globalCurrentState, ODEStateAndDerivative softPreviousState, ODEStateAndDerivative softCurrentState, EquationsMapper equationsMapper)
      简单构造函数。
      参数:
      isForward - 积分方向指示器
      globalPreviousState - 全局步骤的起始点
      globalCurrentState - 全局步骤的结束点
      softPreviousState - 受限步骤的起始点
      softCurrentState - 受限步骤的结束点
      equationsMapper - ODE方程主要和次要分量的映射器
  • 方法详细资料

    • restrictStep

      public AbstractODEStateInterpolator restrictStep(ODEStateAndDerivative previousState, ODEStateAndDerivative currentState)
      创建实例的新受限版本。

      实例不会发生任何改变。

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

      protected abstract AbstractODEStateInterpolator create(boolean newForward, ODEStateAndDerivative newGlobalPreviousState, ODEStateAndDerivative newGlobalCurrentState, ODEStateAndDerivative newSoftPreviousState, ODEStateAndDerivative newSoftCurrentState, EquationsMapper newMapper)
      创建一个新实例。
      参数:
      newForward - 积分方向指示器
      newGlobalPreviousState - 全局步骤的起始点
      newGlobalCurrentState - 全局步骤的结束点
      newSoftPreviousState - 受限步骤的起始点
      newSoftCurrentState - 受限步骤的结束点
      newMapper - 所有方程的方程映射器
      返回:
      一个新实例
    • getGlobalPreviousState

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

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

      public ODEStateAndDerivative getPreviousState()
      获取前一个网格点时间的状态。
      指定者:
      getPreviousState 在接口中 ODEStateInterpolator
      返回:
      前一个网格点时间的状态
    • isPreviousStateInterpolated

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

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

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

      public ODEStateAndDerivative getCurrentState()
      获取当前网格点时间的状态。
      指定者:
      getCurrentState 在接口中 ODEStateInterpolator
      返回:
      当前网格点时间的状态
    • isCurrentStateInterpolated

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

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

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

      public ODEStateAndDerivative getInterpolatedState(double time)
      获取插值时间点的状态。

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

      指定者:
      getInterpolatedState 在接口中 ODEStateInterpolator
      参数:
      time - 插值点的时间
      返回:
      插值时间点的状态
    • isForward

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

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

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

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

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