接口 FieldSecondaryODE<T extends CalculusFieldElement<T>>
- 类型参数:
-
T
- 字段元素的类型
public interface FieldSecondaryODE<T extends CalculusFieldElement<T>>
此接口允许用户向主要的微分方程组添加次要微分方程。
在某些情况下,用户可能需要将一些特定于问题的方程与主要的微分方程组一起积分。一个例子是最优控制,其中与最小化哈密顿量相关联的伴随参数必须被积分。
通过FieldExpandableODE.addSecondaryEquations(FieldSecondaryODE)
方法,此接口允许用户将这些方程添加到主要的一阶微分方程
集中。
- 另请参阅:
-
方法概要
-
方法详细资料
-
getDimension
int getDimension()获取次要状态参数的维度。- 返回:
- 次要状态参数的维度
-
init
在ODE积分开始时初始化方程。此方法在积分开始时调用一次。如果需要,方程可以使用此方法初始化一些内部数据。
默认实现不执行任何操作。
- 参数:
-
t0
- 积分开始时独立时间变量的值 -
primary0
- 包含积分开始时主状态向量值的数组 -
secondary0
- 包含积分开始时次要状态向量值的数组 -
finalTime
- 积分的目标时间
-
computeDerivatives
T[] computeDerivatives(T t, T[] primary, T[] primaryDot, T[] secondary) throws MathIllegalArgumentException, MathIllegalStateException 计算与次要状态参数相关的导数。在某些情况下,额外的方程可能需要更改主状态的导数(即
primaryDot
数组的内容)。一个用例是最优控制,当次要方程处理共轭状态时,这会改变控制,而控制会改变主状态。在这种情况下,主方程和次要方程实际上并不是彼此独立的,因此如果可能的话,最好将状态和共轭状态及其方程都放在主方程中。由于这并不总是可能,此方法明确地允许修改primaryDot
数组的内容。此数组将仅在所有次要方程计算出其导数后用于演化主状态,从而允许此副作用。- 参数:
-
t
- 当前独立时间变量的值 -
primary
- 包含当前主状态向量值的数组 -
primaryDot
- 包含主状态向量的导数(当额外方程对主方程产生影响时,方法允许在此更改导数) -
secondary
- 包含当前次要状态向量值的数组 - 返回:
- 次要状态向量的导数
- 抛出:
-
MathIllegalStateException
- 如果超过函数评估的数量 -
MathIllegalArgumentException
- 如果数组维度与方程设置不匹配
-