matlab李雅普诺夫指数图
时间: 2023-10-06 14:11:36 浏览: 137
很抱歉,我作为AI语言模型无法提供图片或图形界面。但是,我可以为您提供一些MATLAB中绘制李雅普诺夫指数图的代码示例:
```matlab
% 定义系统状态方程
function dx = lorenz(t,x);
sigma = 10;
beta = 8/3;
rho = 28;
dx = [sigma*(x(2)-x(1)); x(1)*(rho-x(3))-x(2); x(1)*x(2)-beta*x(3)];
% 定义李雅普诺夫指数函数
function [lambda1,lambda2,lambda3] = lyapunov(tspan,x)
n = length(x);
t = tspan(1);
dt = tspan(2)-tspan(1);
A = zeros(n);
lambda1 = zeros(1,n);
lambda2 = zeros(1,n);
lambda3 = zeros(1,n);
for i = 1:n
v = zeros(n,1);
v(i) = 1;
[t,y] = ode45(@lorenz,tspan,x,odeset('reltol',1e-8,'abstol',1e-8),v);
for j = 1:n
A(i,j) = log(abs(y(end,j)-x(j)))-log(abs(v(j)));
end
end
for i = 1:n
[~,D] = eig(A(1:i,1:i));
D = sort(diag(D));
lambda1(i) = D(n);
lambda2(i) = D(n-1);
lambda3(i) = D(n-2);
end
% 绘制李雅普诺夫指数图
tspan = [0 100];
x0 = [1 1 1];
[t,x] = ode45(@lorenz,tspan,x0,odeset('reltol',1e-8,'abstol',1e-8));
[lambda1,lambda2,lambda3] = lyapunov(tspan,x);
plot(t,lambda1,'r',t,lambda2,'g',t,lambda3,'b');
xlabel('时间');
ylabel('李雅普诺夫指数');
legend('\lambda_1','\lambda_2','\lambda_3');
```
这是一个绘制洛伦兹系统李雅普诺夫指数图的示例代码,其中用到了ode45函数求解微分方程,以及计算李雅普诺夫指数的函数lyapunov。在绘制图形时,使用plot函数将三个李雅普诺夫指数随时间的变化分别绘制为红、绿、蓝三条曲线。
阅读全文