类 RungeKuttaIntegrator

java.lang.Object
org.hipparchus.ode.AbstractIntegrator
org.hipparchus.ode.nonstiff.RungeKuttaIntegrator
所有已实现的接口:
ButcherArrayProvider, ODEIntegrator
直接已知子类:
ClassicalRungeKuttaIntegrator, EulerIntegrator, GillIntegrator, LutherIntegrator, MidpointIntegrator, ThreeEighthesIntegrator

public abstract class RungeKuttaIntegrator extends AbstractIntegrator implements ButcherArrayProvider
该类实现了普通微分方程的所有固定步长Runge-Kutta积分器的共同部分。

这些方法是显式Runge-Kutta方法,它们的Butcher数组如下:

    0  |
   c2  | a21
   c3  | a31  a32
   ... |        ...
   cs  | as1  as2  ...  ass-1
       |--------------------------
       |  b1   b2  ...   bs-1  bs
 
另请参阅:
  • 构造器详细资料

    • RungeKuttaIntegrator

      protected RungeKuttaIntegrator(String name, double step)
      简单构造函数。使用给定步长构建一个Runge-Kutta积分器。默认步长处理程序不执行任何操作。
      参数:
      name - 方法的名称
      step - 积分步长
  • 方法详细资料

    • getDefaultStep

      public double getDefaultStep()
      获取在构造函数级别分配的默认正步长大小。
      返回:
      步长
    • createInterpolator

      protected abstract org.hipparchus.ode.nonstiff.RungeKuttaStateInterpolator createInterpolator(boolean forward, double[][] yDotK, ODEStateAndDerivative globalPreviousState, ODEStateAndDerivative globalCurrentState, EquationsMapper mapper)
      创建一个插值器。
      参数:
      forward - 积分方向指示器
      yDotK - 中间点的斜率
      globalPreviousState - 全局步骤的起点
      globalCurrentState - 全局步骤的终点
      mapper - 所有方程的方程映射器
      返回:
      Butcher数组中高阶方法的外部权重
    • integrate

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

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

      由于此方法存储一些在积分期间在其公共接口中提供的内部状态变量(ODEIntegrator.getCurrentSignedStepsize()),因此它是线程安全的。

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

      public double[] singleStep(OrdinaryDifferentialEquation equations, double t0, double[] y0, double t)
      快速计算ODE积分的单个步骤。

      此方法旨在非常快速地计算仅一个步骤,而不使用一般积分器的丰富功能,这可能需要一些时间来设置(即没有步长处理程序,没有事件处理程序,没有附加状态,没有插值器,没有错误控制,没有评估计数,没有健全性检查...)。它处理计算的最小量,因此可以嵌入外部循环中。

      此方法integrate(ExpandableODE, ODEState, double)方法使用。它完全忽略在构造时设置的步长,并且仅使用单个步长从t0t

      由于此方法不使用积分器的状态相关特性,因此如果提供的微分方程本身是线程安全的,则它应该是合理的线程安全的。

      参数:
      equations - 要积分的微分方程
      t0 - 初始时间
      y0 - t0时状态向量的初始值
      t - 积分的目标时间(可以设置为小于t0的值以进行反向积分)
      返回:
      t时的状态向量