类 RungeKuttaIntegrator
java.lang.Object
org.hipparchus.ode.AbstractIntegrator
org.hipparchus.ode.nonstiff.RungeKuttaIntegrator
- 所有已实现的接口:
-
ButcherArrayProvider
,ODEIntegrator
- 直接已知子类:
-
ClassicalRungeKuttaIntegrator
,EulerIntegrator
,GillIntegrator
,LutherIntegrator
,MidpointIntegrator
,ThreeEighthesIntegrator
public abstract class RungeKuttaIntegrator extends AbstractIntegrator implements ButcherArrayProvider
该类实现了普通微分方程的所有固定步长Runge-Kutta积分器的共同部分。
这些方法是显式Runge-Kutta方法,它们的Butcher数组如下:
0 | c2 | a21 c3 | a31 a32 ... | ... cs | as1 as2 ... ass-1 |-------------------------- | b1 b2 ... bs-1 bs
- 另请参阅:
-
构造器概要
-
方法概要
修饰符和类型方法说明protected abstract org.hipparchus.ode.nonstiff.RungeKuttaStateInterpolator
createInterpolator
(boolean forward, double[][] yDotK, ODEStateAndDerivative globalPreviousState, ODEStateAndDerivative globalCurrentState, EquationsMapper mapper) 创建一个插值器。double
获取在构造函数级别分配的默认正步长大小。integrate
(ExpandableODE equations, ODEState initialState, double finalTime) 将微分方程积分到给定时间。double[]
singleStep
(OrdinaryDifferentialEquation equations, double t0, double[] y0, double t) 快速计算ODE积分的单个步骤。从类继承的方法 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, sanityChecks, setIsLastStep, setMaxEvaluations, setStateInitialized, setStepSize, setStepStart
从类继承的方法 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
从接口继承的方法 org.hipparchus.ode.nonstiff.ButcherArrayProvider
getA, getB, getC
从接口继承的方法 org.hipparchus.ode.ODEIntegrator
integrate
-
构造器详细资料
-
RungeKuttaIntegrator
简单构造函数。使用给定步长构建一个Runge-Kutta积分器。默认步长处理程序不执行任何操作。- 参数:
-
name
- 方法的名称 -
step
- 积分步长
-
-
方法详细资料
-
getDefaultStep
public double getDefaultStep()获取在构造函数级别分配的默认正步长大小。- 返回:
- 步长
-
createInterpolator
protected abstract org.hipparchus.ode.nonstiff.RungeKuttaStateInterpolator createInterpolator(boolean forward, double[][] yDotK, ODEStateAndDerivative globalPreviousState, ODEStateAndDerivative globalCurrentState, EquationsMapper mapper) 创建一个插值器。- 参数:
-
forward
- 积分方向指示器 -
yDotK
- 中间点的斜率 -
globalPreviousState
- 全局步骤的起点 -
globalCurrentState
- 全局步骤的终点 -
mapper
- 所有方程的方程映射器 - 返回:
- Butcher数组中高阶方法的外部权重
-
integrate
public ODEStateAndDerivative integrate(ExpandableODE equations, ODEState initialState, double finalTime) throws MathIllegalArgumentException, MathIllegalStateException 将微分方程积分到给定时间。此方法解决初始值问题(IVP)。
由于此方法存储一些在积分期间在其公共接口中提供的内部状态变量(
ODEIntegrator.getCurrentSignedStepsize()
),因此它不是线程安全的。- 指定者:
-
integrate
在接口中ODEIntegrator
- 参数:
-
equations
- 要积分的微分方程 -
initialState
- 初始状态(时间,主要和次要状态向量) -
finalTime
- 积分的目标时间(可以设置为小于t0
的值以进行反向积分) - 返回:
-
最终状态,如果积分达到目标,则其时间将与
finalTime
相同,但如果某个ODEEventHandler
在某个点停止它,则可能不同。 - 抛出:
-
MathIllegalArgumentException
- 如果积分步长太小 -
MathIllegalArgumentException
- 如果事件的位置无法被夹住 -
MathIllegalStateException
- 如果函数评估次数超过
-
singleStep
public double[] singleStep(OrdinaryDifferentialEquation equations, double t0, double[] y0, double t) 快速计算ODE积分的单个步骤。此方法旨在非常快速地计算仅一个步骤,而不使用一般积分器的丰富功能,这可能需要一些时间来设置(即没有步长处理程序,没有事件处理程序,没有附加状态,没有插值器,没有错误控制,没有评估计数,没有健全性检查...)。它处理计算的最小量,因此可以嵌入外部循环中。
此方法不被
integrate(ExpandableODE, ODEState, double)
方法使用。它完全忽略在构造时设置的步长,并且仅使用单个步长从t0
到t
。由于此方法不使用积分器的状态相关特性,因此如果提供的微分方程本身是线程安全的,则它应该是合理的线程安全的。
- 参数:
-
equations
- 要积分的微分方程 -
t0
- 初始时间 -
y0
- t0时状态向量的初始值 -
t
- 积分的目标时间(可以设置为小于t0
的值以进行反向积分) - 返回:
-
t
时的状态向量
-