接口 ODEIntegrator
- 所有已知实现类:
-
AbstractIntegrator
,AdamsBashforthIntegrator
,AdamsIntegrator
,AdamsMoultonIntegrator
,AdaptiveStepsizeIntegrator
,ClassicalRungeKuttaIntegrator
,DormandPrince54Integrator
,DormandPrince853Integrator
,EmbeddedRungeKuttaIntegrator
,EulerIntegrator
,GillIntegrator
,GraggBulirschStoerIntegrator
,HighamHall54Integrator
,LutherIntegrator
,MidpointIntegrator
,MultistepIntegrator
,RungeKuttaIntegrator
,ThreeEighthesIntegrator
public interface ODEIntegrator
该接口表示微分方程的一阶积分器。
专门用于解决一阶微分方程的类应实现此接口。可处理的问题应实现OrdinaryDifferentialEquation
接口。
- 另请参阅:
-
方法概要
修饰符和类型方法说明void
addEventDetector
(ODEEventDetector detector) 向积分器添加事件检测器。void
addStepEndHandler
(ODEStepEndHandler handler) 向积分器添加步骤结束处理程序。void
addStepHandler
(ODEStepHandler handler) 向此积分器添加步骤处理程序。void
移除已添加到积分器的所有事件处理程序。void
移除已添加到积分器的所有步骤结束处理程序。void
移除已添加到积分器的所有步骤处理程序。double
获取当前积分步长的有符号值。int
获取微分方程函数的评估次数。获取已添加到积分器的所有事件检测器。int
获取最大函数评估次数。getName()
获取方法的名称。获取已添加到积分器的所有步骤结束处理程序。获取已添加到积分器的所有步骤处理程序。获取时间ti时的状态。integrate
(ExpandableODE equations, ODEState initialState, double finalTime) 将微分方程积分到给定时间。default ODEStateAndDerivative
integrate
(OrdinaryDifferentialEquation equations, ODEState initialState, double finalTime) 将微分方程积分到给定时间。void
setMaxEvaluations
(int maxEvaluations) 设置最大微分方程函数评估次数。
-
方法详细资料
-
getName
String getName()获取方法的名称。- 返回:
- 方法的名称
-
addStepHandler
向此积分器添加步骤处理程序。积分器将为每个接受的步骤调用处理程序。
- 参数:
-
handler
- 接受的步骤的处理程序 - 另请参阅:
-
getStepHandlers
List<ODEStepHandler> getStepHandlers()获取已添加到积分器的所有步骤处理程序。- 返回:
- 已添加的步骤处理程序的不可修改集合
- 另请参阅:
-
clearStepHandlers
void clearStepHandlers()移除已添加到积分器的所有步骤处理程序。- 另请参阅:
-
addEventDetector
向积分器添加事件检测器。- 参数:
-
detector
- 事件检测器 - 从以下版本开始:
- 3.0
- 另请参阅:
-
getEventDetectors
List<ODEEventDetector> getEventDetectors()获取已添加到积分器的所有事件检测器。- 返回:
- 已添加的事件检测器的不可修改列表
- 从以下版本开始:
- 3.0
- 另请参阅:
-
clearEventDetectors
void clearEventDetectors()移除已添加到积分器的所有事件处理程序。- 从以下版本开始:
- 3.0
- 另请参阅:
-
addStepEndHandler
向积分器添加步骤结束处理程序。处理程序的
handler
的stepEndOccurred(state, forward)
方法将在每个步骤结束时调用。- 参数:
-
handler
- 步骤结束处理程序 - 从以下版本开始:
- 3.0
- 另请参阅:
-
getStepEndHandlers
List<ODEStepEndHandler> getStepEndHandlers()获取已添加到积分器的所有步骤结束处理程序。- 返回:
- 已添加的步骤结束处理程序的不可修改列表
- 从以下版本开始:
- 3.0
- 另请参阅:
-
clearStepEndHandlers
void clearStepEndHandlers()移除已添加到积分器的所有步骤结束处理程序。- 从以下版本开始:
- 3.0
- 另请参阅:
-
getStepStart
ODEStateAndDerivative getStepStart()获取时间ti时的状态。如果需要当前尝试的步骤的值,此方法可以在积分期间调用(通常由实现
微分方程
问题的对象调用)。如果在
integrate
调用之外调用该方法,则结果是未定义的。- 返回:
- 在步长开始时间ti的状态
-
getCurrentSignedStepsize
double getCurrentSignedStepsize()获取当前积分步长的有符号值。在积分过程中(通常由实现
微分方程
问题的对象)可以调用此方法,如果需要尝试的当前步长的有符号值。如果在调用
integrate
之外调用该方法,则结果是未定义的。- 返回:
- 步长的当前有符号值
-
setMaxEvaluations
void setMaxEvaluations(int maxEvaluations) 设置微分方程函数评估的最大次数。此方法的目的是避免无限循环,例如当设置严格的误差约束或触发许多离散事件时可能发生,从而导致许多被拒绝的步骤。
- 参数:
-
maxEvaluations
- 函数评估的最大次数(负值会被静默转换为最大整数值,因此表示几乎无限的评估次数)
-
getMaxEvaluations
int getMaxEvaluations()获取函数评估的最大次数。- 返回:
- 函数评估的最大次数
-
getEvaluations
int getEvaluations()获取微分方程函数的评估次数。评估次数对应于对
integrate
方法的最后一次调用。如果尚未调用该方法,则为0。- 返回:
- 微分方程函数的评估次数
-
integrate
ODEStateAndDerivative integrate(ExpandableODE equations, ODEState initialState, double finalTime) throws MathIllegalArgumentException, MathIllegalStateException 将微分方程积分到给定时间。此方法解决一个初始值问题(IVP)。
由于此方法存储一些在积分过程中公共接口中可用的内部状态变量(
getCurrentSignedStepsize()
),因此它不是线程安全的。- 参数:
-
equations
- 要积分的微分方程 -
initialState
- 初始状态(时间,主要和次要状态向量) -
finalTime
- 积分的目标时间(可以设置为小于t0
的值进行反向积分) - 返回:
-
最终状态,如果积分达到目标,则其时间将与
finalTime
相同,但如果某个ODEEventHandler
在某个点停止它,则可能不同。 - 抛出:
-
MathIllegalArgumentException
- 如果积分步长太小 -
MathIllegalStateException
- 如果函数评估次数超过限制 -
MathIllegalArgumentException
- 如果无法找到事件的位置
-
integrate
default ODEStateAndDerivative integrate(OrdinaryDifferentialEquation equations, ODEState initialState, double finalTime) throws MathIllegalArgumentException, MathIllegalStateException 将微分方程积分到给定时间。此方法解决一个初始值问题(IVP)。
由于此方法存储一些在积分过程中公共接口中可用的内部状态变量(
getCurrentSignedStepsize()
),因此它不是线程安全的。- 参数:
-
equations
- 要积分的微分方程 -
initialState
- 初始状态(时间,主要和次要状态向量) -
finalTime
- 积分的目标时间(可以设置为小于t0
的值进行反向积分) - 返回:
-
最终状态,如果积分达到目标,则其时间将与
finalTime
相同,但如果某个ODEEventHandler
在某个点停止它,则可能不同。 - 抛出:
-
MathIllegalArgumentException
- 如果积分步长太小 -
MathIllegalStateException
- 如果函数评估次数超过限制 -
MathIllegalArgumentException
- 如果无法找到事件的位置
-