作业帮 > 综合 > 作业

用matlab画分岔图

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/10 11:19:02
用matlab画分岔图
方程为



最后的效果是

或者用mathematica也可以
用matlab画分岔图
给你画了一个,但是跟你要的不完全一样.我想思路应该是对的.我猜可能是你给的初值跟图不一样吧.把下面的程序保存成一个文件,运行即可.
程序的基本思路是:从初值出发,先计算y对时间t的导数,得到y的变化速度;求出x对t的导数,得到x随时间的变化速度.然后时间前进一小步h=0.002,同时x和y也都发生一个小的变化,即在原来数值基础上加上时间步长h和变化速度的乘积.如果x到达1或者-1,强制让y发生变化.这个过程不断迭代,得到结果.

clear
clc
gamma=2;
r=0.9;
N=400000;
x=zeros(1,N);
y=zeros(1,N);
t=zeros(1,N);
h=0.002;
for i=2:N
t(i)=t(i-1)+h;
y(i)=y(i-1)+gamma*sin(t(i-1))*h;
x(i)=x(i-1)+y(i-1)*h;
if abs(x(i))>=1
y(i)=-r*y(i);
x(i)=x(i-1)+y(i-1)*h;
end
end
figure
plot(x,y,'.','markersize',1)
axis([-1 1 -3 3]);
xlabel('Displacement');
ylabel('Velocity');