关于求解 ODE 方程和指定样本数

On Solving ODE equations and specifying number of samples

我试图理解下面给出的方程组:https://matlabgeeks.com/tips-tutorials/modeling-with-odes-in-matlab-part-5b/

这些方程是混沌洛伦兹系统的方程。该教程很容易理解,但我没有遵循的是如何设置要生成的数据点数,即时间序列的长度?哪个参数有助于决定生成多少个数据点。有人可以帮忙吗?我也查看了其他资源,但我无法理解。例如,通过反复试验,我发现如果我指定 eps = 0.000001; T = [0 45]那么数据点的个数大概是7000个,如果我要数据点的个数是10000个不知道这些参数应该取多少。

如本文(以及本系列前面的第 1 部分和第 2 部分)中所述,样本点序列是动态生成的,因此每个片段对全局误差的截断误差量大致相同,加权为绝对和相对公差。此外,它在段内使用插值法生成 3 个内部点,因此对于大公差,绘图也会呈现曲线。即内部分割由T(1:4:end)给出,其他点进行插值

您也可以规定自己的采样时间,那里的值同样是从 "dense output" 中插值的,内部生成的分段的插值。

T = linspace(t0, tend, 7000);
Y = ode45('lorenz', T, Y0, options);

您还可以通过

提取密集输出
sol = ode45('lorenz', [t0 tend], Y0, options);

然后使用提供的插值计算任意时间的样本

Y = deval(sol,T);

Empirical error proof Runge-Kutta algorithm ... 中,我还计算了 Lorenz 系统的固定步长 RK 方法的误差,它在相对较短的时间后显示出相同的解散度。