混沌系统李雅普诺夫matlab2018b程序
时间: 2023-07-30 13:07:11 浏览: 96
以下是一个混沌系统李雅普诺夫指数的 Matlab 2018b 程序示例:
```matlab
% 定义混沌系统的初始状态
x0 = [1, 1, 1];
% 定义系统的时间步长和时间总长
dt = 0.01;
tspan = 0:dt:100;
% 定义混沌系统的ODE函数
f = @(t, x) [10*(x(2)-x(1)); 28*x(1)-x(2)-x(1)*x(3); -8/3*x(3)+x(1)*x(2)];
% 使用ode45求解ODE方程
options = odeset('OutputFcn', @lyapunov); % 设置李雅普诺夫函数
[t, x] = ode45(f, tspan, x0, options);
% 定义李雅普诺夫函数
function [value, isterminal, direction] = lyapunov(~, x)
J = jacobian(f, x);
[~, D] = eig(J);
value = max(diag(D));
isterminal = 0;
direction = 0;
end
% 绘制系统的轨迹和李雅普诺夫指数随时间的变化
figure;
subplot(2,1,1);
plot3(x(:,1), x(:,2), x(:,3));
xlabel('x1');
ylabel('x2');
zlabel('x3');
title('系统轨迹');
subplot(2,1,2);
plot(t, x(:, 4));
xlabel('时间');
ylabel('李雅普诺夫指数');
title(['Lyapunov exponent: ', num2str(x(end, 4))]);
```
与之前的示例不同,该程序使用 `odeset` 函数设置了李雅普诺夫函数 `lyapunov`,该函数计算每个时间步的李雅普诺夫指数。在 `ode45` 求解ODE方程时,该函数作为输出函数被传递给了 `options` 参数。此外,程序还修改了绘图代码,将李雅普诺夫指数随时间的变化绘制在一张图上。注意,该程序同样仅作为示例,实际应用中需要根据具体的混沌系统进行修改。
阅读全文