类 EmbeddedRungeKuttaFieldIntegrator<T extends CalculusFieldElement<T>>
java.lang.Object
org.hipparchus.ode.AbstractFieldIntegrator<T>
org.hipparchus.ode.nonstiff.AdaptiveStepsizeFieldIntegrator<T>
org.hipparchus.ode.nonstiff.EmbeddedRungeKuttaFieldIntegrator<T>
- 类型参数:
-
T
- 字段元素的类型
- 所有已实现的接口:
-
FieldODEIntegrator<T>
,FieldButcherArrayProvider<T>
- 直接已知子类:
-
DormandPrince54FieldIntegrator
,DormandPrince853FieldIntegrator
,HighamHall54FieldIntegrator
public abstract class EmbeddedRungeKuttaFieldIntegrator<T extends CalculusFieldElement<T>> extends AdaptiveStepsizeFieldIntegrator<T> implements FieldButcherArrayProvider<T>
该类实现了普通微分方程的所有嵌入式龙格-库塔积分器的共同部分。
这些方法是具有两组系数的嵌入式显式龙格-库塔方法,允许估计误差,它们的Butcher数组如下:
0 | c2 | a21 c3 | a31 a32 ... | ... cs | as1 as2 ... ass-1 |-------------------------- | b1 b2 ... bs-1 bs | b'1 b'2 ... b's-1 b's
实际上,我们更倾向于使用由ej = bj - b'j定义的数组来直接计算误差,而不是计算两个估计然后进行比较。
一些方法被称为fsal(first same as last)方法。这意味着一个步骤中导数的最后评估与下一个步骤中的第一个评估相同。然后,这个评估可以从一个步骤重用到下一个步骤,这样的方法的成本实际上是s-1个评估,尽管该方法仍然具有s个阶段。这种行为仅适用于成功的步骤,如果在误差估计阶段之后拒绝步骤,则不会保存任何评估。对于一个fsal方法,我们有cs = 1和asi = bi对于所有i。
-
构造器概要
限定符构造器说明protected
EmbeddedRungeKuttaFieldIntegrator
(Field<T> field, String name, int fsal, double minStep, double maxStep, double[] vecAbsoluteTolerance, double[] vecRelativeTolerance) 使用给定的Butcher数组构建一个龙格-库塔积分器。protected
EmbeddedRungeKuttaFieldIntegrator
(Field<T> field, String name, int fsal, double minStep, double maxStep, double scalAbsoluteTolerance, double scalRelativeTolerance) 使用给定的Butcher数组构建一个龙格-库塔积分器。 -
方法概要
修饰符和类型方法说明protected abstract org.hipparchus.ode.nonstiff.RungeKuttaFieldStateInterpolator
<T> createInterpolator
(boolean forward, T[][] yDotK, FieldODEStateAndDerivative<T> globalPreviousState, FieldODEStateAndDerivative<T> globalCurrentState, FieldEquationsMapper<T> mapper) 创建一个插值器。protected abstract double
estimateError
(T[][] yDotK, T[] y0, T[] y1, T h) 计算误差比率。protected T
fraction
(double p, double q) 创建一个分数。protected T
fraction
(int p, int q) 创建一个分数。获取步长控制的最大增长因子。获取步长控制的最小缩减因子。abstract int
getOrder()
获取方法的阶数。获取步长控制的安全因子。integrate
(FieldExpandableODE<T> equations, FieldODEState<T> initialState, T finalTime) 将微分方程积分到给定时间。void
setMaxGrowth
(T maxGrowth) 设置步长控制的最大增长因子。void
setMinReduction
(T minReduction) 设置步长控制的最小缩减因子。void
设置步长控制的安全因子。从类继承的方法 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
从类继承的方法 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
从接口继承的方法 org.hipparchus.ode.nonstiff.FieldButcherArrayProvider
getA, getB, getC
-
构造器详细资料
-
EmbeddedRungeKuttaFieldIntegrator
protected EmbeddedRungeKuttaFieldIntegrator(Field<T> field, String name, int fsal, double minStep, double maxStep, double scalAbsoluteTolerance, double scalRelativeTolerance) 使用给定的Butcher数组构建一个龙格-库塔积分器。- 参数:
-
field
- 时间和状态向量元素所属的字段 -
name
- 方法的名称 -
fsal
- fsal方法的预计算导数的索引,如果方法不是fsal则为-1 -
minStep
- 最小步长(符号无关,无论是正向还是反向积分,最后一步可以比这个小) -
maxStep
- 最大步长(符号无关,无论是正向还是反向积分,最后一步可以比这个小) -
scalAbsoluteTolerance
- 允许的绝对误差 -
scalRelativeTolerance
- 允许的相对误差
-
EmbeddedRungeKuttaFieldIntegrator
protected EmbeddedRungeKuttaFieldIntegrator(Field<T> field, String name, int fsal, double minStep, double maxStep, double[] vecAbsoluteTolerance, double[] vecRelativeTolerance) 使用给定的Butcher数组构建一个龙格-库塔积分器。- 参数:
-
field
- 时间和状态向量元素所属的字段 -
name
- 方法的名称 -
fsal
- fsal方法的预计算导数的索引,如果方法不是fsal则为-1 -
minStep
- 最小步长(即使是反向积分也必须是正数,最后一步可以比这个小) -
maxStep
- 最大步长(即使是反向积分也必须是正数) -
vecAbsoluteTolerance
- 允许的绝对误差 -
vecRelativeTolerance
- 允许的相对误差
-
-
方法详细资料
-
fraction
创建一个分数。- 参数:
-
p
- 分子 -
q
- 分母 - 返回:
- 在实例字段中计算的p/q
-
fraction
创建一个分数。- 参数:
-
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数组的高阶方法的外部权重
-
getOrder
public abstract int getOrder()获取方法的阶数。- 返回:
- 方法的阶数
-
getSafety
获取步长控制的安全因子。- 返回:
- 安全因子
-
setSafety
设置步长控制的安全因子。- 参数:
-
safety
- 安全因子
-
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
- 如果函数评估次数超过
-
getMinReduction
获取步长控制的最小缩减因子。- 返回:
- 最小缩减因子
-
setMinReduction
设置步长控制的最小缩减因子。- 参数:
-
minReduction
- 最小缩减因子
-
getMaxGrowth
获取步长控制的最大增长因子。- 返回:
- 最大增长因子
-
setMaxGrowth
设置步长控制的最大增长因子。- 参数:
-
maxGrowth
- 最大增长因子
-
estimateError
计算误差比率。- 参数:
-
yDotK
- 在第一阶段计算的导数 -
y0
- 步长开始时的估计值 -
y1
- 步长结束时的估计值 -
h
- 当前步长 - 返回:
- 错误比率,如果步长应该被拒绝则大于1
-