类 AdaptiveStepsizeIntegrator
java.lang.Object
org.hipparchus.ode.AbstractIntegrator
org.hipparchus.ode.nonstiff.AdaptiveStepsizeIntegrator
- 所有已实现的接口:
-
ODEIntegrator
这个抽象类包含所有常规微分方程的自适应步长积分器的共同部分。
这些算法执行带有步长控制的积分,这意味着用户不指定积分步长,而是指定误差容限。误差阈值计算为
threshold_i = absTol_i + relTol_i * max (abs (ym), abs (ym+1))
其中absTol_i是状态向量的第i个分量的绝对容限,relTol_i是相同分量的相对容限。用户也可以只使用两个标量值absTol和relTol,这将用于所有分量。
如果常规微分方程是一个扩展ODE
而不是一个基本ODE
,那么仅使用状态向量的主要部分
用于步长控制,而不是完整的状态向量。
如果ym+1的估计误差使得
sqrt((sum (errEst_i / threshold_i)^2 ) / n) < 1
(其中n是主要集维度),则接受该步长,否则拒绝该步长,并尝试使用新的步长再次尝试。
-
构造器概要
构造器说明AdaptiveStepsizeIntegrator
(String name, double minStep, double maxStep, double[] vecAbsoluteTolerance, double[] vecRelativeTolerance) 使用给定的步长界限构建积分器。AdaptiveStepsizeIntegrator
(String name, double minStep, double maxStep, double scalAbsoluteTolerance, double scalRelativeTolerance) 使用给定的步长界限构建积分器。 -
方法概要
修饰符和类型方法说明double
获取最大步长。double
获取最小步长。protected StepsizeHelper
获取步长辅助器。double
initializeStep
(boolean forward, int order, double[] scale, ODEStateAndDerivative state0) 初始化积分步骤。protected void
将内部状态重置为虚拟值。protected void
sanityChecks
(ODEState initialState, double t) 检查积分跨度。void
setInitialStepSize
(double initialStepSize) 设置初始步长。void
setStepSizeControl
(double minimalStep, double maximalStep, double[] absoluteTolerance, double[] relativeTolerance) 设置自适应步长控制参数。void
setStepSizeControl
(double minimalStep, double maximalStep, double absoluteTolerance, double relativeTolerance) 设置自适应步长控制参数。从类继承的方法 org.hipparchus.ode.AbstractIntegrator
acceptStep, addEventDetector, addStepEndHandler, addStepHandler, clearEventDetectors, clearStepEndHandlers, clearStepHandlers, computeDerivatives, getCurrentSignedStepsize, getEquations, getEvaluations, getEvaluationsCounter, getEventDetectors, getMaxEvaluations, getName, getStepEndHandlers, getStepHandlers, getStepSize, getStepStart, initIntegration, isLastStep, resetOccurred, setIsLastStep, setMaxEvaluations, setStateInitialized, setStepSize, setStepStart
从类继承的方法 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
从接口继承的方法 org.hipparchus.ode.ODEIntegrator
integrate, integrate
-
构造器详细资料
-
AdaptiveStepsizeIntegrator
public AdaptiveStepsizeIntegrator(String name, double minStep, double maxStep, double scalAbsoluteTolerance, double scalRelativeTolerance) 使用给定的步长界限构建积分器。默认的步长处理程序不执行任何操作。- 参数:
-
name
- 方法的名称 -
minStep
- 最小步长(符号无关,无论是正向还是反向积分,最后一步可以比这个更小) -
maxStep
- 最大步长(符号无关,无论是正向还是反向积分,最后一步可以比这个更小) -
scalAbsoluteTolerance
- 允许的绝对误差 -
scalRelativeTolerance
- 允许的相对误差
-
AdaptiveStepsizeIntegrator
public AdaptiveStepsizeIntegrator(String name, double minStep, double maxStep, double[] vecAbsoluteTolerance, double[] vecRelativeTolerance) 使用给定的步长界限构建积分器。默认的步长处理程序不执行任何操作。- 参数:
-
name
- 方法的名称 -
minStep
- 最小步长(符号无关,无论是正向还是反向积分,最后一步可以比这个更小) -
maxStep
- 最大步长(符号无关,无论是正向还是反向积分,最后一步可以比这个更小) -
vecAbsoluteTolerance
- 允许的绝对误差 -
vecRelativeTolerance
- 允许的相对误差
-
-
方法详细资料
-
setStepSizeControl
public void setStepSizeControl(double minimalStep, double maximalStep, double absoluteTolerance, double relativeTolerance) 设置自适应步长控制参数。该方法的副作用是还会重置初始步长,因此如果用户没有调用
setInitialStepSize
,积分器将自动计算初始步长。- 参数:
-
minimalStep
- 最小步长(必须为正数,即使是反向积分,最后一步可以比这个更小) -
maximalStep
- 最大步长(必须为正数,即使是反向积分) -
absoluteTolerance
- 允许的绝对误差 -
relativeTolerance
- 允许的相对误差
-
setStepSizeControl
public void setStepSizeControl(double minimalStep, double maximalStep, double[] absoluteTolerance, double[] relativeTolerance) 设置自适应步长控制参数。该方法的副作用是还会重置初始步长,因此如果用户没有调用
setInitialStepSize
,积分器将自动计算初始步长。- 参数:
-
minimalStep
- 最小步长(必须为正数,即使是反向积分,最后一步可以比这个更小) -
maximalStep
- 最大步长(必须为正数,即使是反向积分) -
absoluteTolerance
- 允许的绝对误差 -
relativeTolerance
- 允许的相对误差
-
getStepSizeHelper
获取步长辅助器。- 返回:
- 步长辅助器
- 从以下版本开始:
- 2.0
-
setInitialStepSize
public void setInitialStepSize(double initialStepSize) 设置初始步长。该方法允许用户指定一个初始正步长,而不是让积分器自行猜测。如果在开始积分之前未调用此方法,则积分器将通过自身估计初始步长。
- 参数:
-
initialStepSize
- 要使用的初始步长(必须为正数,即使是反向积分;提供负值或超出最小/最大步长区间的值将导致积分器忽略该值,并由自身计算初始步长)
-
sanityChecks
检查积分跨度。- 覆盖:
-
sanityChecks
在类中AbstractIntegrator
- 参数:
-
initialState
- 初始状态 -
t
- 积分的目标时间 - 抛出:
-
MathIllegalArgumentException
- 如果积分跨度太小 -
MathIllegalArgumentException
- 如果自适应步长积分器的容差数组维度与方程设置不兼容
-
initializeStep
public double initializeStep(boolean forward, int order, double[] scale, ODEStateAndDerivative state0) throws MathIllegalArgumentException, MathIllegalStateException 初始化积分步骤。- 参数:
-
forward
- 正向积分指示器 -
order
- 方法的阶数 -
scale
- 状态向量的缩放向量(可以比状态向量短) -
state0
- 积分开始时间的状态 - 返回:
- 第一个积分步骤
- 抛出:
-
MathIllegalStateException
- 如果函数评估次数超过限制 -
MathIllegalArgumentException
- 如果数组维度与方程设置不匹配
-
resetInternalState
protected void resetInternalState()将内部状态重置为虚拟值。 -
getMinStep
public double getMinStep()获取最小步长。- 返回:
- 最小步长
-
getMaxStep
public double getMaxStep()获取最大步长。- 返回:
- 最大步长
-