Matlab 直到周期解微分方程
我想在MATLAB中解一个微分方程Matlab 直到周期解微分方程,matlab,ode,differential-equations,periodicity,Matlab,Ode,Differential Equations,Periodicity,我想在MATLAB中解一个微分方程 odeopts = odeset('MaxStep',dt); [t,X] = ode113(@MyDiff,tSpan,X0,odeopts); 此处,dt、MyDiff、tSpan和X0在代码中前面定义。问题是,离散步骤dt非常小,而总模拟时间tSpan(end)非常大。此外,预计从某个时间T开始,溶液将变得周期性,周期P。这里,周期P是先验的,而时间T不是先验的 我想做的是在解X变得周期性时自动停止ode113解算器,以节省计算时间。如果你能想到我该怎
odeopts = odeset('MaxStep',dt);
[t,X] = ode113(@MyDiff,tSpan,X0,odeopts);
此处,dt
、MyDiff
、tSpan
和X0
在代码中前面定义。问题是,离散步骤dt
非常小,而总模拟时间tSpan(end)
非常大。此外,预计从某个时间T开始,溶液将变得周期性,周期P
。这里,周期P
是先验的,而时间T
不是先验的
我想做的是在解X
变得周期性时自动停止ode113解算器,以节省计算时间。如果你能想到我该怎么做,我将不胜感激
我至今的想法是:
odeopts=odeset('MaxStep',dt,'Events',MyEventFcn)代码>
MyEventFcn
必须是当前时间步的t
和X
的函数。似乎不可能通过这些信息来确定周期性。在我看来,唯一的解决办法似乎是使用一个全局参数,该参数包括以前所有时间的X
值,最多为预期周期的两倍P
。然而,这对我来说似乎很不雅观和低效,我希望有更好的方法
X
是周期性的P
。目前我认为最好的方法是对自相关函数使用一个阈值,xcorr(X)
,但我还不确定细节,所以这里的任何建议都是有用的李>
编辑:我实现了一个解决方案,基本上遵循了我之前的想法,使用一个全局变量来跟踪X值,并使用xcorr来检测周期性。经过一段时间的思考,这实际上似乎是最简单的方法