类 AbstractIntegrator
java.lang.Object
org.hipparchus.ode.AbstractIntegrator
- 所有已实现的接口:
-
ODEIntegrator
管理所有积分器的通用样板基类。
-
构造器概要
-
方法概要
修饰符和类型方法说明protected ODEStateAndDerivative
acceptStep
(AbstractODEStateInterpolator interpolator, double tEnd) 接受一个步骤,触发事件和步骤处理程序。void
addEventDetector
(ODEEventDetector detector) 将事件检测器添加到积分器中。void
addStepEndHandler
(ODEStepEndHandler handler) 将步骤结束处理程序添加到积分器中。void
addStepHandler
(ODEStepHandler handler) 将步骤处理程序添加到此积分器中。void
删除已添加到积分器中的所有事件处理程序。void
删除已添加到积分器中的所有步骤结束处理程序。void
删除已添加到积分器中的所有步骤处理程序。double[]
computeDerivatives
(double t, double[] y) 计算导数并检查评估次数。double
获取当前积分步长的有符号值。protected ExpandableODE
获取要积分的微分方程。int
获取微分方程函数的评估次数。protected Incrementor
获取评估计数器。获取已添加到积分器中的所有事件检测器。int
获取函数评估的最大次数。getName()
获取方法的名称。获取已添加到积分器中的所有步骤结束处理程序。获取已添加到积分器中的所有步骤处理程序。protected double
获取当前步长。获取时间 ti 处的状态。protected ODEStateAndDerivative
initIntegration
(ExpandableODE eqn, ODEState s0, double t) 准备积分的开始。protected boolean
检查此步骤是否为最后一个。protected boolean
检查上次接受步骤时是否发生了重置。protected void
sanityChecks
(ODEState initialState, double t) 检查积分跨度。protected void
setIsLastStep
(boolean isLastStep) 设置上次状态标志。void
setMaxEvaluations
(int maxEvaluations) 设置微分方程函数评估的最大次数。protected void
setStateInitialized
(boolean stateInitialized) 设置stateInitialized标志。protected void
setStepSize
(double stepSize) 设置当前步长。protected void
setStepStart
(ODEStateAndDerivative stepStart) 设置当前步骤开始。从类继承的方法 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
从接口继承的方法 org.hipparchus.ode.ODEIntegrator
integrate, integrate
-
构造器详细资料
-
AbstractIntegrator
构建一个实例。- 参数:
-
name
- 方法的名称
-
-
方法详细资料
-
getName
获取方法的名称。- 指定者:
-
getName
在接口中ODEIntegrator
- 返回:
- 方法的名称
-
addStepHandler
将步骤处理程序添加到此积分器中。积分器将为每个接受的步骤调用处理程序。
- 指定者:
-
addStepHandler
在接口中ODEIntegrator
- 参数:
-
handler
- 接受步骤的处理程序 - 另请参阅:
-
getStepHandlers
获取已添加到积分器中的所有步骤处理程序。- 指定者:
-
getStepHandlers
在接口中ODEIntegrator
- 返回:
- 已添加事件处理程序的不可修改集合
- 另请参阅:
-
clearStepHandlers
public void clearStepHandlers()删除已添加到积分器中的所有步骤处理程序。- 指定者:
-
clearStepHandlers
在接口中ODEIntegrator
- 另请参阅:
-
addEventDetector
将事件检测器添加到积分器中。- 指定者:
-
addEventDetector
在接口中ODEIntegrator
- 参数:
-
detector
- 事件检测器 - 另请参阅:
-
getEventDetectors
获取已添加到积分器中的所有事件检测器。- 指定者:
-
getEventDetectors
在接口中ODEIntegrator
- 返回:
- 已添加事件检测器的不可修改列表
- 另请参阅:
-
clearEventDetectors
public void clearEventDetectors()删除已添加到积分器中的所有事件处理程序。- 指定者:
-
clearEventDetectors
在接口中ODEIntegrator
- 另请参阅:
-
addStepEndHandler
将步骤结束处理程序添加到积分器中。处理程序的
handler
方法将在每个步骤结束时调用。- 指定者:
-
addStepEndHandler
在接口中ODEIntegrator
- 参数:
-
handler
- 步骤结束处理程序 - 另请参阅:
-
getStepEndHandlers
获取已添加到积分器中的所有步骤结束处理程序。- 指定者:
-
getStepEndHandlers
在接口中ODEIntegrator
- 返回:
- 已添加步骤结束处理程序的不可修改列表
- 另请参阅:
-
clearStepEndHandlers
public void clearStepEndHandlers()移除已添加到积分器的步结束处理程序。- 指定者:
-
clearStepEndHandlers
在接口中ODEIntegrator
- 另请参阅:
-
getCurrentSignedStepsize
public double getCurrentSignedStepsize()获取当前积分步长的有符号值。在积分过程中(通常由实现
微分方程
问题的对象)可以调用此方法,如果需要尝试的当前步长的有符号值。如果在调用
integrate
之外调用该方法,则结果是未定义的。- 指定者:
-
getCurrentSignedStepsize
在接口中ODEIntegrator
- 返回:
- 当前步长的有符号值
-
setMaxEvaluations
public void setMaxEvaluations(int maxEvaluations) 设置最大的微分方程函数评估次数。此方法的目的是避免无限循环,例如当设置严格的误差约束或触发许多离散事件时可能发生,从而导致许多被拒绝的步骤。
- 指定者:
-
setMaxEvaluations
在接口中ODEIntegrator
- 参数:
-
maxEvaluations
- 微分方程函数评估的最大次数(负值会被静默转换为最大整数值,因此表示几乎无限的评估次数)
-
getMaxEvaluations
public int getMaxEvaluations()获取函数评估的最大次数。- 指定者:
-
getMaxEvaluations
在接口中ODEIntegrator
- 返回:
- 函数评估的最大次数
-
getEvaluations
public int getEvaluations()获取微分方程函数的评估次数。评估次数对应于对
integrate
方法的最后一次调用。如果尚未调用该方法,则为0。- 指定者:
-
getEvaluations
在接口中ODEIntegrator
- 返回:
- 微分方程函数的评估次数
-
initIntegration
准备开始积分。- 参数:
-
eqn
- 要积分的方程 -
s0
- 初始状态向量 -
t
- 积分的目标时间 - 返回:
- 计算导数后的初始状态。
-
getEquations
获取要积分的微分方程。- 返回:
- 要积分的微分方程
-
getEvaluationsCounter
获取评估计数器。- 返回:
- 评估计数器
-
computeDerivatives
public double[] computeDerivatives(double t, double[] y) throws MathIllegalArgumentException, MathIllegalStateException, NullPointerException 计算导数并检查评估次数。- 参数:
-
t
- 独立时间变量的当前值 -
y
- 包含状态向量当前值的数组 - 返回:
- 包含导数的状态
- 抛出:
-
MathIllegalArgumentException
- 如果数组维度与方程设置不匹配 -
MathIllegalStateException
- 如果超过函数评估次数 -
NullPointerException
- 如果未设置ODE方程(即在调用integrate
之外调用此方法
-
setStateInitialized
protected void setStateInitialized(boolean stateInitialized) 设置stateInitialized标志。在开始积分之前,积分器必须调用此方法,将值设置为
false
,以便在第一步上自动进行适当的延迟初始化。- 参数:
-
stateInitialized
- 标志的新值
-
acceptStep
protected ODEStateAndDerivative acceptStep(AbstractODEStateInterpolator interpolator, double tEnd) throws MathIllegalArgumentException, MathIllegalStateException 接受一步,触发事件和步处理程序。- 参数:
-
interpolator
- 步插值器 -
tEnd
- 最终积分时间 - 返回:
- 步结束时的状态
- 抛出:
-
MathIllegalStateException
- 如果插值器因函数评估次数过多而抛出异常 -
MathIllegalArgumentException
- 如果无法找到事件的位置 -
MathIllegalArgumentException
- 如果数组维度与方程设置不匹配
-
sanityChecks
检查积分跨度。- 参数:
-
initialState
- 初始状态 -
t
- 积分的目标时间 - 抛出:
-
MathIllegalArgumentException
- 如果积分跨度太小 -
MathIllegalArgumentException
- 如果自适应步长积分器的容差数组维度与方程设置不兼容
-
resetOccurred
protected boolean resetOccurred()检查上次接受步骤时是否发生重置。- 返回:
- 如果上次接受步骤时发生重置,则为true
-
setStepSize
protected void setStepSize(double stepSize) 设置当前步长。- 参数:
-
stepSize
- 要设置的步长
-
getStepSize
protected double getStepSize()获取当前步长。- 返回:
- 当前步长
-
setStepStart
设置当前步骤的开始。- 参数:
-
stepStart
- 步骤开始
-
getStepStart
获取时间ti处的步骤开始状态。在积分过程中(通常由实现
微分方程
问题的对象)可以调用此方法,如果需要尝试的当前步骤的值。如果在调用
integrate
之外调用该方法,则结果是未定义的。- 指定者:
-
getStepStart
在接口中ODEIntegrator
- 返回:
- 时间ti处的状态
-
setIsLastStep
protected void setIsLastStep(boolean isLastStep) 设置最后状态标志。- 参数:
-
isLastStep
- 如果为true,则此步骤是最后一个
-
isLastStep
protected boolean isLastStep()检查此步骤是否为最后一个。- 返回:
- 如果此步骤是最后一个,则为true
-