|
楼主 |
发表于 2007-12-25 17:26
|
显示全部楼层
% 求解duffing方程
clear all
clc
global mu
global r
global w
mu=0.5; % 变量赋值
r=0.82;
w=1;
x0=[0;0];
tstart=0;
tend=100;
td=0.01;
tspan=[tstart:td:tend];
[t,y]=ode45('duffing',tspan,x0); % 求解方程
path=''; % 路径设置
path_data=strcat(path,'data.txt');
path_picture=strcat(path,'相图.bmp');
leg=strcat('r=',mat2str(r));
figure(1) % 绘振子时域图(1)
plot(t,y(:,1),'g');
grid on;
title('Duffing振子');
xlabel('t');
ylabel('x');
legend(leg);
figure(2) % 绘振子时域图(2)
plot(t,y(:,2),'r');
grid on;
title('Duffing振子');
xlabel('t');
ylabel('dx');
legend(leg);
figure(4)
plot(t,y(:,1),'g',t,y(:,2),'r');
grid on;
title('Duffing振子');
xlabel('t');
% text(tend,y((tend-tstart)/td,1),'\fontsize{10}{ x}');
% text(tend,y((tend-tstart)/td,2),'\fontsize{10}{ dx}');
legend(leg);
figure(3) % 绘振子相图并存储
plot(y(:,1),y(:,2),'b');
grid on;
title('Duffing振子相图');
xlabel('x');
ylabel('dx');
legend(leg);
print(gcf,'-dmeta',path_picture);
fid=fopen(path_data,'w'); % 存储数据
fprintf(fid,'%g %g\n',[y(:,1) y(:,2)]);
fclose(fid);
save('data.mat','y'); |
|