程序包 org.hipparchus.ode

接口 ODEIntegrator

所有已知实现类:
AbstractIntegrator, AdamsBashforthIntegrator, AdamsIntegrator, AdamsMoultonIntegrator, AdaptiveStepsizeIntegrator, ClassicalRungeKuttaIntegrator, DormandPrince54Integrator, DormandPrince853Integrator, EmbeddedRungeKuttaIntegrator, EulerIntegrator, GillIntegrator, GraggBulirschStoerIntegrator, HighamHall54Integrator, LutherIntegrator, MidpointIntegrator, MultistepIntegrator, RungeKuttaIntegrator, ThreeEighthesIntegrator

public interface ODEIntegrator
该接口表示微分方程的一阶积分器。

专门用于解决一阶微分方程的类应实现此接口。可处理的问题应实现OrdinaryDifferentialEquation接口。

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

    • getName

      String getName()
      获取方法的名称。
      返回:
      方法的名称
    • addStepHandler

      void addStepHandler(ODEStepHandler handler)
      向此积分器添加步骤处理程序。

      积分器将为每个接受的步骤调用处理程序。

      参数:
      handler - 接受的步骤的处理程序
      另请参阅:
    • getStepHandlers

      List<ODEStepHandler> getStepHandlers()
      获取已添加到积分器的所有步骤处理程序。
      返回:
      已添加的步骤处理程序的不可修改集合
      另请参阅:
    • clearStepHandlers

      void clearStepHandlers()
      移除已添加到积分器的所有步骤处理程序。
      另请参阅:
    • addEventDetector

      void addEventDetector(ODEEventDetector detector)
      向积分器添加事件检测器。
      参数:
      detector - 事件检测器
      从以下版本开始:
      3.0
      另请参阅:
    • getEventDetectors

      List<ODEEventDetector> getEventDetectors()
      获取已添加到积分器的所有事件检测器。
      返回:
      已添加的事件检测器的不可修改列表
      从以下版本开始:
      3.0
      另请参阅:
    • clearEventDetectors

      void clearEventDetectors()
      移除已添加到积分器的所有事件处理程序。
      从以下版本开始:
      3.0
      另请参阅:
    • addStepEndHandler

      void addStepEndHandler(ODEStepEndHandler handler)
      向积分器添加步骤结束处理程序。

      处理程序的handlerstepEndOccurred(state, forward)方法将在每个步骤结束时调用。

      参数:
      handler - 步骤结束处理程序
      从以下版本开始:
      3.0
      另请参阅:
    • getStepEndHandlers

      List<ODEStepEndHandler> getStepEndHandlers()
      获取已添加到积分器的所有步骤结束处理程序。
      返回:
      已添加的步骤结束处理程序的不可修改列表
      从以下版本开始:
      3.0
      另请参阅:
    • clearStepEndHandlers

      void clearStepEndHandlers()
      移除已添加到积分器的所有步骤结束处理程序。
      从以下版本开始:
      3.0
      另请参阅:
    • getStepStart

      ODEStateAndDerivative getStepStart()
      获取时间ti时的状态。

      如果需要当前尝试的步骤的值,此方法可以在积分期间调用(通常由实现微分方程问题的对象调用)。

      如果在integrate调用之外调用该方法,则结果是未定义的。

      返回:
      在步长开始时间ti的状态
    • getCurrentSignedStepsize

      double getCurrentSignedStepsize()
      获取当前积分步长的有符号值。

      在积分过程中(通常由实现微分方程问题的对象)可以调用此方法,如果需要尝试的当前步长的有符号值。

      如果在调用integrate之外调用该方法,则结果是未定义的。

      返回:
      步长的当前有符号值
    • setMaxEvaluations

      void setMaxEvaluations(int maxEvaluations)
      设置微分方程函数评估的最大次数。

      此方法的目的是避免无限循环,例如当设置严格的误差约束或触发许多离散事件时可能发生,从而导致许多被拒绝的步骤。

      参数:
      maxEvaluations - 函数评估的最大次数(负值会被静默转换为最大整数值,因此表示几乎无限的评估次数)
    • getMaxEvaluations

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

      int getEvaluations()
      获取微分方程函数的评估次数。

      评估次数对应于对integrate方法的最后一次调用。如果尚未调用该方法,则为0。

      返回:
      微分方程函数的评估次数
    • integrate

      ODEStateAndDerivative integrate(ExpandableODE equations, ODEState initialState, double finalTime) throws MathIllegalArgumentException, MathIllegalStateException
      将微分方程积分到给定时间。

      此方法解决一个初始值问题(IVP)。

      由于此方法存储一些在积分过程中公共接口中可用的内部状态变量(getCurrentSignedStepsize()),因此它不是线程安全的。

      参数:
      equations - 要积分的微分方程
      initialState - 初始状态(时间,主要和次要状态向量)
      finalTime - 积分的目标时间(可以设置为小于t0的值进行反向积分)
      返回:
      最终状态,如果积分达到目标,则其时间将与finalTime相同,但如果某个ODEEventHandler在某个点停止它,则可能不同。
      抛出:
      MathIllegalArgumentException - 如果积分步长太小
      MathIllegalStateException - 如果函数评估次数超过限制
      MathIllegalArgumentException - 如果无法找到事件的位置
    • integrate

      default ODEStateAndDerivative integrate(OrdinaryDifferentialEquation equations, ODEState initialState, double finalTime) throws MathIllegalArgumentException, MathIllegalStateException
      将微分方程积分到给定时间。

      此方法解决一个初始值问题(IVP)。

      由于此方法存储一些在积分过程中公共接口中可用的内部状态变量(getCurrentSignedStepsize()),因此它不是线程安全的。

      参数:
      equations - 要积分的微分方程
      initialState - 初始状态(时间,主要和次要状态向量)
      finalTime - 积分的目标时间(可以设置为小于t0的值进行反向积分)
      返回:
      最终状态,如果积分达到目标,则其时间将与finalTime相同,但如果某个ODEEventHandler在某个点停止它,则可能不同。
      抛出:
      MathIllegalArgumentException - 如果积分步长太小
      MathIllegalStateException - 如果函数评估次数超过限制
      MathIllegalArgumentException - 如果无法找到事件的位置