类 DormandPrince54FieldIntegrator<T extends CalculusFieldElement<T>>

类型参数:
T - 字段元素的类型
所有已实现的接口:
FieldODEIntegrator<T>, FieldButcherArrayProvider<T>

public class DormandPrince54FieldIntegrator<T extends CalculusFieldElement<T>> extends EmbeddedRungeKuttaFieldIntegrator<T>
该类实现了普通微分方程的5(4) Dormand-Prince积分器。

该积分器是一个5(4)阶的嵌入式Runge-Kutta积分器,采用本地外推模式(即使用高阶公式计算解)进行步长控制(和自动步长初始化)和连续输出。该方法每步使用7个函数评估。然而,由于这是一个fsal,一步的最后评估与下一步的第一个评估相同,因此可以避免。因此,实际成本是每步6个函数评估。

该方法已经发表(1986年Shampine添加了连续输出)在以下文章中:

  一族嵌入式Runge-Kutta公式
  J. R. Dormand 和 P. J. Prince
  计算和应用数学杂志
  卷6,第1期,1980年,第19-26页
 
  • 构造器详细资料

    • DormandPrince54FieldIntegrator

      public DormandPrince54FieldIntegrator(Field<T> field, double minStep, double maxStep, double scalAbsoluteTolerance, double scalRelativeTolerance)
      简单构造函数。使用给定的步长界限构建一个五阶Dormand-Prince积分器。
      参数:
      field - 时间和状态向量元素所属的字段
      minStep - 最小步长(符号无关,无论是正向还是反向积分,最后一步可以小于此值)
      maxStep - 最大步长(符号无关,无论是正向还是反向积分,最后一步可以小于此值)
      scalAbsoluteTolerance - 允许的绝对误差
      scalRelativeTolerance - 允许的相对误差
    • DormandPrince54FieldIntegrator

      public DormandPrince54FieldIntegrator(Field<T> field, double minStep, double maxStep, double[] vecAbsoluteTolerance, double[] vecRelativeTolerance)
      简单构造函数。使用给定的步长界限构建一个五阶Dormand-Prince积分器。
      参数:
      field - 时间和状态向量元素所属的字段
      minStep - 最小步长(符号无关,无论是正向还是反向积分,最后一步可以小于此值)
      maxStep - 最大步长(符号无关,无论是正向还是反向积分,最后一步可以小于此值)
      vecAbsoluteTolerance - 允许的绝对误差
      vecRelativeTolerance - 允许的相对误差
  • 方法详细资料

    • getC

      public T[] getC()
      从Butcher数组中获取时间步长(不包括第一个零)。
      返回:
      从Butcher数组中获取时间步长(不包括第一个零)
    • getA

      public T[][] getA()
      从Butcher数组中获取内部权重(不包括第一行空行)。
      返回:
      从Butcher数组中获取内部权重(不包括第一行空行)
    • getB

      public T[] getB()
      从Butcher数组中获取高阶方法的外部权重。
      返回:
      从Butcher数组中获取高阶方法的外部权重
    • createInterpolator

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

      public int getOrder()
      获取方法的阶数。
      指定者:
      getOrder 在类中 EmbeddedRungeKuttaFieldIntegrator<T extends CalculusFieldElement<T>>
      返回:
      方法的阶数
    • estimateError

      protected double estimateError(T[][] yDotK, T[] y0, T[] y1, T h)
      计算错误比率。
      指定者:
      estimateError 在类中 EmbeddedRungeKuttaFieldIntegrator<T extends CalculusFieldElement<T>>
      参数:
      yDotK - 在第一阶段计算的导数
      y0 - 步骤开始时的估计
      y1 - 步骤结束时的估计
      h - 当前步长
      返回:
      错误比率,如果步骤应该被拒绝,则大于1