类 EmbeddedRungeKuttaIntegrator
java.lang.Object
org.hipparchus.ode.AbstractIntegrator
org.hipparchus.ode.nonstiff.AdaptiveStepsizeIntegrator
org.hipparchus.ode.nonstiff.EmbeddedRungeKuttaIntegrator
- 所有已实现的接口:
-
ButcherArrayProvider
,ODEIntegrator
public abstract class EmbeddedRungeKuttaIntegrator extends AdaptiveStepsizeIntegrator implements ButcherArrayProvider
该类实现了普通微分方程的所有嵌入式龙格-库塔积分器的共同部分。
这些方法是具有两组系数的嵌入式显式龙格-库塔方法,允许估计误差,它们的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(第一个与最后一个相同)方法。这意味着一步中导数的最后评估与下一步中的第一个评估相同。然后,这个评估可以从一步重用到下一步,这样的方法的成本实际上是s-1次评估,尽管该方法仍然具有s个阶段。这种行为仅适用于成功的步骤,如果在误差估计阶段之后拒绝步骤,则不会保存任何评估。对于fsal方法,我们有cs = 1和asi = bi对于所有i。
-
构造器概要
限定符构造器说明protected
EmbeddedRungeKuttaIntegrator
(String name, int fsal, double minStep, double maxStep, double[] vecAbsoluteTolerance, double[] vecRelativeTolerance) 使用给定的Butcher数组构建一个龙格-库塔积分器。protected
EmbeddedRungeKuttaIntegrator
(String name, int fsal, double minStep, double maxStep, double scalAbsoluteTolerance, double scalRelativeTolerance) 使用给定的Butcher数组构建一个龙格-库塔积分器。 -
方法概要
修饰符和类型方法说明protected abstract org.hipparchus.ode.nonstiff.RungeKuttaStateInterpolator
createInterpolator
(boolean forward, double[][] yDotK, ODEStateAndDerivative globalPreviousState, ODEStateAndDerivative globalCurrentState, EquationsMapper mapper) 创建一个插值器。protected abstract double
estimateError
(double[][] yDotK, double[] y0, double[] y1, double h) 计算错误比率。double
获取步长控制的最大增长因子。double
获取步长控制的最小减少因子。abstract int
getOrder()
获取方法的阶数。double
获取步长控制的安全因子。integrate
(ExpandableODE equations, ODEState initialState, double finalTime) 将微分方程积分到给定时间。void
setMaxGrowth
(double maxGrowth) 设置步长控制的最大增长因子。void
setMinReduction
(double minReduction) 设置步长控制的最小减少因子。void
setSafety
(double safety) 设置步长控制的安全因子。从类继承的方法 org.hipparchus.ode.nonstiff.AdaptiveStepsizeIntegrator
getMaxStep, getMinStep, getStepSizeHelper, initializeStep, resetInternalState, sanityChecks, setInitialStepSize, setStepSizeControl, setStepSizeControl
从类继承的方法 org.hipparchus.ode.AbstractIntegrator
acceptStep, addEventDetector, addStepEndHandler, addStepHandler, clearEventDetectors, clearStepEndHandlers, clearStepHandlers, computeDerivatives, getCurrentSignedStepsize, getEquations, getEvaluations, getEvaluationsCounter, getEventDetectors, 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.ButcherArrayProvider
getA, getB, getC
从接口继承的方法 org.hipparchus.ode.ODEIntegrator
integrate
-
构造器详细资料
-
EmbeddedRungeKuttaIntegrator
protected EmbeddedRungeKuttaIntegrator(String name, int fsal, double minStep, double maxStep, double scalAbsoluteTolerance, double scalRelativeTolerance) 使用给定的Butcher数组构建一个龙格-库塔积分器。- 参数:
-
name
- 方法的名称 -
fsal
- fsal方法的预计算导数的索引,如果方法不是fsal则为-1 -
minStep
- 最小步长(符号无关,无论是正向还是反向积分,最后一步可以比此值小) -
maxStep
- 最大步长(符号无关,无论是正向还是反向积分,最后一步可以比此值小) -
scalAbsoluteTolerance
- 允许的绝对误差 -
scalRelativeTolerance
- 允许的相对误差
-
EmbeddedRungeKuttaIntegrator
protected EmbeddedRungeKuttaIntegrator(String name, int fsal, double minStep, double maxStep, double[] vecAbsoluteTolerance, double[] vecRelativeTolerance) 使用给定的Butcher数组构建一个龙格-库塔积分器。- 参数:
-
name
- 方法的名称 -
fsal
- fsal方法的预计算导数的索引,如果方法不是fsal则为-1 -
minStep
- 最小步长(即使是反向积分也必须是正数,最后一步可以比此值小) -
maxStep
- 最大步长(即使是反向积分也必须是正数) -
vecAbsoluteTolerance
- 允许的绝对误差 -
vecRelativeTolerance
- 允许的相对误差
-
-
方法详细资料
-
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数组中高阶方法的外部权重
-
getOrder
public abstract int getOrder()获取方法的阶数。- 返回:
- 方法的阶数
-
getSafety
public double getSafety()获取步长控制的安全因子。- 返回:
- 安全因子
-
setSafety
public void setSafety(double safety) 设置步长控制的安全因子。- 参数:
-
safety
- 安全因子
-
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
- 如果函数评估次数超过
-
getMinReduction
public double getMinReduction()获取步长控制的最小减少因子。- 返回:
- 最小减少因子
-
setMinReduction
public void setMinReduction(double minReduction) 设置步长控制的最小减少因子。- 参数:
-
minReduction
- 最小减少因子
-
getMaxGrowth
public double getMaxGrowth()获取步长控制的最大增长因子。- 返回:
- 最大增长因子
-
setMaxGrowth
public void setMaxGrowth(double maxGrowth) 设置步长控制的最大增长因子。- 参数:
-
maxGrowth
- 最大增长因子
-
estimateError
protected abstract double estimateError(double[][] yDotK, double[] y0, double[] y1, double h) 计算错误比率。- 参数:
-
yDotK
- 在第一阶段计算的导数 -
y0
- 步长开始时的估计 -
y1
- 步长结束时的估计 -
h
- 当前步长 - 返回:
- 错误比率,如果步骤应该被拒绝则大于1
-