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