类 RungeKuttaFieldIntegrator<T extends CalculusFieldElement<T>>

java.lang.Object
org.hipparchus.ode.AbstractFieldIntegrator<T>
org.hipparchus.ode.nonstiff.RungeKuttaFieldIntegrator<T>
类型参数:
T - 字段元素的类型
所有已实现的接口:
FieldODEIntegrator<T>, FieldButcherArrayProvider<T>
直接已知子类:
ClassicalRungeKuttaFieldIntegrator, EulerFieldIntegrator, GillFieldIntegrator, LutherFieldIntegrator, MidpointFieldIntegrator, ThreeEighthesFieldIntegrator

public abstract class RungeKuttaFieldIntegrator<T extends CalculusFieldElement<T>> extends AbstractFieldIntegrator<T> implements FieldButcherArrayProvider<T>
该类实现了普通微分方程的所有固定步长Runge-Kutta积分器的共同部分。

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

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

    • RungeKuttaFieldIntegrator

      protected RungeKuttaFieldIntegrator(Field<T> field, String name, T step)
      简单构造函数。使用给定步长构建一个Runge-Kutta积分器。默认步长处理程序不执行任何操作。
      参数:
      field - 时间和状态向量元素所属的字段
      name - 方法的名称
      step - 积分步长
  • 方法详细资料

    • getDefaultStep

      public T getDefaultStep()
      构造函数级别分配的默认正步长的获取器。
      返回:
      步长
    • fraction

      protected T fraction(int p, int q)
      创建一个分数。
      参数:
      p - 分子
      q - 分母
      返回:
      在实例字段中计算的p/q
    • createInterpolator

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

      public FieldODEStateAndDerivative<T> integrate(FieldExpandableODE<T> equations, FieldODEState<T> initialState, T finalTime) throws MathIllegalArgumentException, MathIllegalStateException
      将微分方程积分到给定时间。

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

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

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

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

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

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

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

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