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