%自定义一个洛伦兹函数
function f = lorenz(t, x)
f = zeros(3,1);
f(1) = 10 * (x(2) - x(1));
f(2) = -x(1) * x(3) + 28 * x(1) - x(2);
f(3) = x(1) * x(2) - 8 * x(3) / 3
x0 = [-2 -3.5 21];
[t,x] = ode23(@lorenz, [0 10], x0);
plot(x(:,1), x(:,3))
hold on
[t,x] = ode45(@lorenz, [0 10], x0);
plot(x(:,1), x(:,3))
得到的图像
洛伦兹吸引子(蓝色为ode23;红色为ode45)
上述是一个MATLAB脚本,用于求解洛伦兹吸引子的ODE(常微分方程)系统并绘制其轨迹。这个ODE系统描述了洛伦兹吸引子的演化。
这段代码的主要步骤包括:
1. 定义一个名为 `lorenz` 的函数,它计算洛伦兹吸引子ODE系统的右侧(导数)。
2. 设置初始条件 `x0`,表示系统的初始状态。
3. 使用 `ode23` 和 `ode45` 函数分别求解ODE系统在时间区间 `[0, 10]` 上的演化,并存储结果。
4. 使用 `plot` 函数绘制两次求解的轨迹,分别使用 `ode23` 和 `ode45` 方法得到的结果。
这段代码的目的是比较两种不同的ODE求解方法(`ode23` 和 `ode45`)在模拟洛伦兹吸引子系统时的效果。你可以运行这段代码,然后观察绘制的图形,看看这两种方法的差异。通常,`ode45` 在处理非刚性问题时更为精确,但相对耗费计算资源。
具体参考下面的文章
联系客服