类 DormandPrince853FieldIntegrator<T extends CalculusFieldElement<T>>
java.lang.Object
org.hipparchus.ode.AbstractFieldIntegrator<T>
org.hipparchus.ode.nonstiff.AdaptiveStepsizeFieldIntegrator<T>
org.hipparchus.ode.nonstiff.EmbeddedRungeKuttaFieldIntegrator<T>
org.hipparchus.ode.nonstiff.DormandPrince853FieldIntegrator<T>
- 类型参数:
-
T
- 字段元素的类型
- 所有已实现的接口:
-
FieldODEIntegrator<T>
,FieldButcherArrayProvider<T>
public class DormandPrince853FieldIntegrator<T extends CalculusFieldElement<T>> extends EmbeddedRungeKuttaFieldIntegrator<T>
该类实现了普通微分方程的8(5,3) Dormand-Prince积分器。
该积分器是一个8(5,3)阶的嵌入式Runge-Kutta积分器,采用本地外推模式(即使用高阶公式计算解)进行步长控制(和自动步长初始化)和连续输出。该方法每步使用12个函数评估进行积分,4个评估进行插值。然而,由于第一个插值评估与下一步的第一个积分评估相同,我们将其包含在积分器中而不是插值器中,并指定该方法为fsal。因此,尽管这里有13个阶段,但实际成本为每步12次评估,即使不进行插值,插值的额外成本仅为3次评估。
该方法基于Dormand和Prince的8(6)方法(即积分为8阶,误差估计为6阶),由Hairer和Wanner修改为使用5阶误差估计和3阶校正。这种修改是因为原始方法在某些情况下失败(当步长过大时可能接受错误的步骤,例如在Brusselator问题中),并且在应用于具有不连续性的问题时存在严重困难。这种修改在Hairer、Norsett和Wanner的参考书第一卷(非刚性问题)的第二版中有解释:解常微分方程(Springer-Verlag,ISBN 3-540-56670-8)。
-
构造器概要
构造器说明DormandPrince853FieldIntegrator
(Field<T> field, double minStep, double maxStep, double[] vecAbsoluteTolerance, double[] vecRelativeTolerance) 简单构造函数。DormandPrince853FieldIntegrator
(Field<T> field, double minStep, double maxStep, double scalAbsoluteTolerance, double scalRelativeTolerance) 简单构造函数。 -
方法概要
修饰符和类型方法说明protected org.hipparchus.ode.nonstiff.DormandPrince853FieldStateInterpolator
<T> createInterpolator
(boolean forward, T[][] yDotK, FieldODEStateAndDerivative<T> globalPreviousState, FieldODEStateAndDerivative<T> globalCurrentState, FieldEquationsMapper<T> mapper) 创建一个插值器。protected double
estimateError
(T[][] yDotK, T[] y0, T[] y1, T h) 计算错误比率。T[][]
getA()
从Butcher数组中获取内部权重(不包括第一行空行)。T[]
getB()
从Butcher数组中获取高阶方法的外部权重。T[]
getC()
从Butcher数组中获取时间步长(不包括第一个零)。int
getOrder()
获取方法的阶数。从类继承的方法 org.hipparchus.ode.nonstiff.EmbeddedRungeKuttaFieldIntegrator
fraction, fraction, getMaxGrowth, getMinReduction, getSafety, integrate, setMaxGrowth, setMinReduction, setSafety
从类继承的方法 org.hipparchus.ode.nonstiff.AdaptiveStepsizeFieldIntegrator
getMaxStep, getMinStep, getStepSizeHelper, initializeStep, resetInternalState, sanityChecks, setInitialStepSize, setStepSizeControl, setStepSizeControl
从类继承的方法 org.hipparchus.ode.AbstractFieldIntegrator
acceptStep, addEventDetector, addStepEndHandler, addStepHandler, clearEventDetectors, clearStepEndHandlers, clearStepHandlers, computeDerivatives, getCurrentSignedStepsize, getEquations, getEvaluations, getEvaluationsCounter, getEventDetectors, getField, getMaxEvaluations, getName, getStepEndHandlers, getStepHandlers, getStepSize, getStepStart, initIntegration, isLastStep, resetOccurred, setIsLastStep, setMaxEvaluations, setStateInitialized, setStepSize, setStepStart
-
构造器详细资料
-
DormandPrince853FieldIntegrator
public DormandPrince853FieldIntegrator(Field<T> field, double minStep, double maxStep, double scalAbsoluteTolerance, double scalRelativeTolerance) 简单构造函数。使用给定的步长界限构建一个八阶Dormand-Prince积分器- 参数:
-
field
- 时间和状态向量元素所属的字段 -
minStep
- 最小步长(符号无关,无论是正向还是反向积分方向,最后一步可以小于此值) -
maxStep
- 最大步长(符号无关,无论是正向还是反向积分方向,最后一步可以小于此值) -
scalAbsoluteTolerance
- 允许的绝对误差 -
scalRelativeTolerance
- 允许的相对误差
-
DormandPrince853FieldIntegrator
public DormandPrince853FieldIntegrator(Field<T> field, double minStep, double maxStep, double[] vecAbsoluteTolerance, double[] vecRelativeTolerance) 简单构造函数。使用给定的步长界限构建一个八阶Dormand-Prince积分器- 参数:
-
field
- 时间和状态向量元素所属的字段 -
minStep
- 最小步长(符号无关,无论是正向还是反向积分方向,最后一步可以小于此值) -
maxStep
- 最大步长(符号无关,无论是正向还是反向积分方向,最后一步可以小于此值) -
vecAbsoluteTolerance
- 允许的绝对误差 -
vecRelativeTolerance
- 允许的相对误差
-
-
方法详细资料
-
getC
从Butcher数组中获取时间步长(不包括第一个零)。- 返回:
- 从Butcher数组中获取时间步长(不包括第一个零)
-
getA
从Butcher数组中获取内部权重(不包括第一行空行)。- 返回:
- 从Butcher数组中获取内部权重(不包括第一行空行)
-
getB
从Butcher数组中获取高阶方法的外部权重。- 返回:
- 从Butcher数组中获取高阶方法的外部权重
-
createInterpolator
protected org.hipparchus.ode.nonstiff.DormandPrince853FieldStateInterpolator<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
计算错误比率。- 指定者:
-
estimateError
在类中EmbeddedRungeKuttaFieldIntegrator<T extends CalculusFieldElement<T>>
- 参数:
-
yDotK
- 在第一阶段计算的导数 -
y0
- 步骤开始时的估计 -
y1
- 步骤结束时的估计 -
h
- 当前步长 - 返回:
- 错误比率,如果步骤应该被拒绝则大于1
-