类 ReappearingEventTest.Event
java.lang.Object
org.hipparchus.ode.events.ReappearingEventTest.Event
- 所有已实现的接口:
-
ODEEventDetector
- 封闭类:
-
ReappearingEventTest
该单元测试的状态事件。
-
构造器详细资料
-
Event
public Event(double maxCheck, double threshold, int maxIter) ReappearingEventTest.Event类的构造函数。- 参数:
-
maxCheck- 最大检查间隔,必须严格为正(s) -
threshold- 收敛阈值(s) -
maxIter- 事件时间搜索中的最大迭代次数
-
-
方法详细资料
-
getMaxCheckInterval
从接口复制的说明:ODEEventDetector获取事件处理程序检查之间的最大时间间隔。- 指定者:
-
getMaxCheckInterval在接口中ODEEventDetector - 返回:
- 事件处理程序检查之间的最大时间间隔
-
getMaxIterationCount
public int getMaxIterationCount()从接口复制的说明:ODEEventDetector获取事件定位的迭代计数的上限。- 指定者:
-
getMaxIterationCount在接口中ODEEventDetector - 返回:
- 事件定位的迭代计数的上限
-
getSolver
从接口复制的说明:ODEEventDetector获取用于检测状态事件的根查找算法。- 指定者:
-
getSolver在接口中ODEEventDetector - 返回:
- 用于检测状态事件的根查找算法
-
getHandler
从接口复制的说明:ODEEventDetector获取基础事件处理器。- 指定者:
-
getHandler在接口中ODEEventDetector - 返回:
- 基础事件处理器
-
g
从接口复制的说明:ODEEventDetector计算切换函数的值。当切换函数的符号改变时,将生成离散事件。积分器将确保以这种方式改变步长,使这些事件恰好发生在步长边界上。切换函数必须在其根邻域内连续(但不一定平滑),因为积分器将需要找到其根以精确定位事件。
还要注意,为了使积分器检测到事件,切换函数的符号在事件之前和之后必须相反。如果不保持这种一致性,则积分器可能不会检测到任何事件。
这种一致性的需求有时很难实现。一个典型的例子是使用事件来模拟球在地板上弹跳。表示这一点的第一个想法是
g(state) = h(state),其中h是时间state.getTime()时的地板上方的高度。当g(state)达到0时,球在地板上,因此应该弹起,通常的方法是反转其垂直速度。然而,这意味着在事件之前g(state)从正值减少到0,而在事件之后g(state)将再次从0增加到正值。这里破坏了一致性!解决方案是g(state) = sign * h(state),其中sign是一个变量,初始值设置为+1。每次调用eventOccurred时,sign被重置为-sign。这允许g(state)函数保持连续(甚至平滑),即使跨事件,h(state)不是。基本上,事件用于在弹跳点处折叠h(state),而sign用于展开它,因此求解器看到的g(state)函数在事件之间表现平滑。此方法是幂等的,即多次使用相同状态调用此方法将产生相同的值,但有两个例外。首先,当处理程序上发生事件时,g函数的定义可能会更改,就像上面的示例一样。其次,当同一积分器中的任何其他事件处理程序的
eventOccurred方法返回Action.RESET_EVENTS、Action.RESET_DERIVATIVES或Action.RESET_STATE时,g函数的定义可能会更改。- 指定者:
-
g在接口中ODEEventDetector - 参数:
-
s- 独立时间变量、状态向量和导数的当前值 - 返回:
- g切换函数的值
- 另请参阅:
-