public class SecularAndHarmonic extends Object
此类允许从瞬时参数转换为平均参数。
Constructor and Description |
---|
SecularAndHarmonic(int secularDegree, double... pulsations)
简单构造函数。
|
Modifier and Type | Method and Description |
---|---|
void |
addPoint(AbsoluteDate date, double osculatingValue)
添加一个拟合点。
|
void |
addWeightedPoint(AbsoluteDate date, double osculatingValue, double weight)
添加一个加权拟合点。
|
double[] |
approximateAsPolynomialOnly(int combinedDegree, AbsoluteDate combinedReference, int meanDegree, int meanHarmonics, AbsoluteDate start, AbsoluteDate end, double step)
将已拟合模型近似为仅多项式项。
|
void |
fit()
拟合参数。
|
double[] |
getFittedParameters()
获取最后拟合参数的副本。
|
double |
getHarmonicAmplitude()
获取拟合谐波振幅的上限。
|
double[] |
getPulsations()
获取谐波部分的脉动。
|
AbsoluteDate |
getReferenceDate()
获取参考日期。
|
int |
getSecularDegree()
获取多项式平稳部分的次数。
|
double |
meanDerivative(AbsoluteDate date, int degree, int harmonics)
获取平均导数,截断为第一分量。
|
double |
meanSecondDerivative(AbsoluteDate date, int degree, int harmonics)
获取平均二阶导数,截断为第一分量。
|
double |
meanValue(AbsoluteDate date, int degree, int harmonics)
获取平均值,截断为第一分量。
|
double |
osculatingDerivative(AbsoluteDate date)
获取拟合的瞬时导数。
|
double |
osculatingSecondDerivative(AbsoluteDate date)
获取拟合的瞬时二阶导数。
|
double |
osculatingValue(AbsoluteDate date)
获取拟合的瞬时值。
|
void |
resetFitting(AbsoluteDate date, double... initialGuess)
重置拟合。
|
void |
setConvergenceRMS(double convergenceRMS)
设置收敛的均方根误差。
|
void |
setMaxIter(int maxIter)
设置最大迭代次数。
|
public SecularAndHarmonic(int secularDegree, double... pulsations)
secularDegree
- 多项式平稳部分的次数
pulsations
- 谐波部分的脉动
public void resetFitting(AbsoluteDate date, double... initialGuess)
date
- 参考日期
initialGuess
- 参数的初始猜测
getReferenceDate()
public void setConvergenceRMS(double convergenceRMS)
RMS是残差平方和的平方根,除以测量次数。
convergenceRMS
- 认为已达到收敛的RMS下限
public void setMaxIter(int maxIter)
maxIter
- 最大迭代次数
public void addPoint(AbsoluteDate date, double osculatingValue)
点的权重设置为1.0
date
- 点的日期
osculatingValue
- 瞬时值
addWeightedPoint(AbsoluteDate, double, double)
public void addWeightedPoint(AbsoluteDate date, double osculatingValue, double weight)
date
- 点的日期
osculatingValue
- 瞬时值
weight
- 点的权重
public AbsoluteDate getReferenceDate()
resetFitting(AbsoluteDate, double...)
public int getSecularDegree()
public double[] getPulsations()
public double getHarmonicAmplitude()
public void fit()
getFittedParameters()
public double[] getFittedParameters()
fit()
public double osculatingValue(AbsoluteDate date)
date
- 当前日期
public double osculatingDerivative(AbsoluteDate date)
date
- 当前日期
public double osculatingSecondDerivative(AbsoluteDate date)
date
- 当前日期
public double meanValue(AbsoluteDate date, int degree, int harmonics)
date
- 当前日期
degree
- 要考虑的多项式平稳部分的次数
harmonics
- 要考虑的谐波项数
public double meanDerivative(AbsoluteDate date, int degree, int harmonics)
date
- 当前日期
degree
- 要考虑的多项式平稳部分的次数
harmonics
- 要考虑的谐波项数
public double[] approximateAsPolynomialOnly(int combinedDegree, AbsoluteDate combinedReference, int meanDegree, int meanHarmonics, AbsoluteDate start, AbsoluteDate end, double step)
此方法主要用于将大振幅长周期与平稳部分组合为新的近似多项式模型,覆盖某个时间范围。在一些周期项振幅较大的情况下应使用此方法,而不是仅从getFittedParameters()
中提取多项式系数,因为在这些情况下,系数中的纯多项式平稳部分可能远离平均模型。
combinedDegree
- 组合多项式的期望次数
combinedReference
- 组合多项式的期望参考日期
meanDegree
- 要考虑的多项式平稳部分的次数
meanHarmonics
- 要考虑的谐波项数
start
- 近似时间范围的开始日期
end
- 近似时间范围的结束日期
step
- 采样步长
public double meanSecondDerivative(AbsoluteDate date, int degree, int harmonics)
date
- 当前日期
degree
- 多项式平稳部分的次数
harmonics
- 要考虑的谐波项数
Copyright © 2002-2023 CS GROUP. All rights reserved.