MATLAB绘制分岔图,相平面图以及庞加莱截面图
MATLAB绘制分岔图,相平面图以及庞加莱截面图
一、逻辑斯蒂映射分岔图:f(x)=rx(1-x)
clear;clc;
r=-2:0.01:4;
x=0.3;
for i=1:5000
x=r.*x.*(1-x);
End
figure;
hold on
for i=1:1000
x=r.*x.*(1-x);
plot(r,x,'b.','markersize',1);end
二、MATLAB函数ode45对duffing方程进行数值求解,生成相平面图和poincaré 截面图
deq=@(t,x)[x(2);x(1)-0.3*x(2)-(x(1))^3+0.37*cos(1.25*t)]; options=odeset('RelTol',1e-4,'AbsTol',1e-4);
[t,xx]=ode45(deq,[0 200],[1,0],options);
plot(xx(:,1),xx(:,2),'k-','linewidth',1.5);
fsize=15;
axis([-2 2 -2 2])
xlabel('x','Fontsize',fsize);
ylabel('y','Fontsize',fsize);
title('diffing,Gamma=0.37')
clear Gamma=0.37;
deq=@(t,x)[x(2);x(1)-0.3*x(2)-(x(1))^3+Gamma*cos(1.25*t)]; options=odeset('RelTol',1e-4,'AbsTol',1e-4); [t,xx]=ode45(deq,0:(2/1.25)*pi:(4000/1.25)*pi,[1,0]); plot(xx(:,1),'.','MarkerSize',2)
plot(xx(:,1), xx(:,2),'k*','MarkerSize',10);
hold on; fsize=15;
axis([-2 2 -2 2])
xlabel('x','Fontsize',fsize);
ylabel('y','Fontsize',fsize);
title('Poincare Section,Gamma=0.37')
三、MATLAB函数ode45对洛伦兹(Lorenz)常微分方程进行数值求解,然后生成相平面图和三维图
tspan = [0,50];
y0= [0;1;0]; % 初始条件
[t,y] = ode45(@lorenz_01,tspan,y0);
figure()plot(y(:,1),y(:,2)) % 绘制相平面图 % plot(y(:,1),y(:,2),y(:,3)) % 绘制三维图 xlabel('y_1','FontSize',14)
ylabel('y_2 ','FontSize',14)% zlabel('y_3 ','FontSize',14)
title('Lorenz equations','FontSize',16)
function dy = lorenz_01(t,y) %洛伦兹常微分方程
dy = [10*(y(2)-y(1))
28*y(1)-y(2)-y(1)*y(3)
y(1)*y(2)-8*y(3)/3];
end
四、学习资料分享
• MATLAB R2016a完全自学一本通
• MATLAB智能算法30个案例分析(第2版)
• 工程与科学数值方法的MATLAB实现 第4版
• MATLAB R2015b最优化计算
• MATLAB优化算法案例分析与应用_进阶篇
• MATLAB在数学建模中的应用_上
• MATLAB在数学建模中的应用_下
• 高等应用数学问题的MATLAB求解(第二版)
• MATLAB统计分析与应用:40个案例分析
• MATLAB数字信号处理85个实用案例精讲.入门到进阶
• MATLAB 2019A 中文文档
• MATLAB编程实例100例(源程序)
• Matlab有限元结构动力学分析与工程应用(源程序)
• 应用非线性动力学-胡海岩
• 非线性动力学--刘秉正
文章来源:https://www.zhihu.com/people/rushxiang-qian