public abstract class AbstractMultipleShooting extends Object implements MultipleShooting
Modifier | Constructor and Description |
---|---|
protected |
AbstractMultipleShooting(List<SpacecraftState> initialGuessList, List<NumericalPropagator> propagatorList, double tolerance, int maxIter, boolean isAutonomous, String additionalName)
简单构造函数。
|
Modifier and Type | Method and Description |
---|---|
void |
addConstraint(int patchIndex, int componentIndex, double constraintValue)
在一个分段点的一个分量上添加约束。
|
List<SpacecraftState> |
compute()
返回修正后的分段点列表。
|
protected abstract double[] |
computeAdditionalConstraints(List<SpacecraftState> propagatedSP)
计算额外的约束。
|
protected abstract double[][] |
computeAdditionalJacobianMatrix(List<SpacecraftState> propagatedSP)
从额外的约束计算雅可比矩阵的一部分。
|
protected double[][] |
computeEpochJacobianMatrix(List<SpacecraftState> propagatedSP)
从时刻导数计算雅可比矩阵的一部分。
|
protected abstract SpacecraftState |
getAugmentedInitialState(int i)
从额外的方程计算额外的状态。
|
protected Map<Integer,Double> |
getConstraintsMap()
获取受约束的分段点分量的映射。
|
protected boolean[] |
getFreeCompsMap()
获取自由状态分量的映射。
|
protected int |
getNumberOfConstraints()
获取约束的总数。
|
protected int |
getNumberOfFreeComponents()
获取自由状态分量的数量。
|
protected List<SpacecraftState> |
getPatchedSpacecraftState()
获取分段的航天器状态列表。
|
protected SpacecraftState |
getPatchPoint(int i)
获取一个分段点。
|
void |
setEpochFreedom(int patchIndex, boolean isFree)
将分段点的时刻设置为自由或非自由。
|
void |
setPatchPointComponentFreedom(int patchIndex, int componentIndex, boolean isFree)
将分段点的一个分量设置为自由或非自由。
|
void |
setScaleLength(double scaleLength)
设置比例长度。
|
void |
setScaleTime(double scaleTime)
设置比例时间。
|
protected void |
updateAdditionalConstraints(int startIndex, double[] fxAdditional)
更新额外约束数组。
|
protected AbstractMultipleShooting(List<SpacecraftState> initialGuessList, List<NumericalPropagator> propagatorList, double tolerance, int maxIter, boolean isAutonomous, String additionalName)
多次射击的标准构造函数
initialGuessList
- 要校正的初始分段点
propagatorList
- 与每个分段点关联的传播器列表
tolerance
- 约束向量的收敛容差
maxIter
- 最大迭代次数
isAutonomous
- 如果动力系统是自主的(即不依赖于时刻)
additionalName
- 额外方程的名称
protected SpacecraftState getPatchPoint(int i)
i
- 分段点的索引
public void setPatchPointComponentFreedom(int patchIndex, int componentIndex, boolean isFree)
patchIndex
- 分段点索引(从零开始)
componentIndex
- 要约束的分量索引(从零开始)
isFree
- 约束值
public void setEpochFreedom(int patchIndex, boolean isFree)
patchIndex
- 分段点索引(从零开始)
isFree
- 约束值
public void setScaleTime(double scaleTime)
scaleTime
- 以秒为单位的比例时间
public void setScaleLength(double scaleLength)
scaleLength
- 以米为单位的比例长度
public void addConstraint(int patchIndex, int componentIndex, double constraintValue)
patchIndex
- 分段点索引(从零开始)
componentIndex
- 被约束的分量索引(从零开始)
constraintValue
- 约束值
public List<SpacecraftState> compute()
compute
在接口 MultipleShooting
protected double[][] computeEpochJacobianMatrix(List<SpacecraftState> propagatedSP)
propagatedSP
- 传播的航天器状态
protected void updateAdditionalConstraints(int startIndex, double[] fxAdditional)
startIndex
- 起始索引
fxAdditional
- 额外约束数组
protected abstract double[] computeAdditionalConstraints(List<SpacecraftState> propagatedSP)
propagatedSP
- 传播的航天器状态
protected abstract double[][] computeAdditionalJacobianMatrix(List<SpacecraftState> propagatedSP)
propagatedSP
- 传播的航天器状态
protected abstract SpacecraftState getAugmentedInitialState(int i)
i
- 状态的索引
protected int getNumberOfFreeComponents()
protected int getNumberOfConstraints()
protected boolean[] getFreeCompsMap()
protected Map<Integer,Double> getConstraintsMap()
protected List<SpacecraftState> getPatchedSpacecraftState()
Copyright © 2002-2023 CS GROUP. All rights reserved.