|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
%%Part 1
clc
clear all
fno=('shuchu.txt');
i=1;
global Ij;
fid=fopen(fno,'w');
for j=1030:1040
Ij=j;
[t,u]=ode45(@yundongguiji,[0:0.01:20],[1 1 1 1 1 1 1 1]);
[n m]=size(u);
uuu(:,i)=real(u(:,1));
i=i+1;
end
[n m]=size(uuu);
for j=1:m
fprintf(fid,'%d(R) ',1029+j);
end
for k=1:n
for j=1:m
%fprintf(fid,'%f %f ',uuu(k,2*j-1), uuu(k,2*j));
%fprintf(fid,'%f ',uuu(k,2*j-1));
fprintf(fid,'%f ',uuu(k,j));
end
fprintf(fid,'\n');
end
status=fclose(fid);
%% Part 2
function uu=yundongguiji(t,u)
%求解微分中涉及到的一些计算参数
m1=1.5*10^4;
m2=1.1*10^4;
c1=6.0*10^4;
c2=7.0*10^4;
k1=8.5*10^7;
k2=6.5*10^7;
k3=3.5*10^7;
delta0=8*10^-3;
e2=0.3*10^-3;
mu0=4*pi*10^-7;
kj=5.2;
R=1.2;
L=0.5;
omega=10;
K1=25*k1+9*k2+k3;
K2=-5*k1+3*k2+3*k3;
K3=k1+k2+9*k3;
e1=0.5*10-3;
B1=e1*omega^2*cos(omega*t)/delta0;
B2=e1*omega^2*sin(omega*t)/delta0;
B3=e2*omega^2*cos(omega*t)/delta0;
B4=e2*omega^2*sin(omega*t)/delta0;
global Ij;
F0=R*L*pi*kj^2*Ij^2*mu0/(m1*delta0^3);
Z1=(1-sqrt(1-u(1).^2-u(3).^2))/sqrt(u(1).^2+u(3).^2);
Z2=sqrt(u(5).^2+u(7).^2)/sqrt(u(1).^2+u(3).^2);
uu=zeros(8,1);
uu(1)=u(2);
uu(2)=B1+F0./(1-u(1).^2-u(3).^2)*(Z1+Z1.^3+Z1.^5).*u(1)./sqrt(u(1).^2+u(3).^2)-c1./m1.*u(2)-u(1).*(K1+K2.*Z2)./(16.*m1);
uu(3)=u(4);
uu(4)=B2+F0./(1-u(1).^2-u(3).^2)*(Z1+Z1.^3+Z1.^5).*u(3)./sqrt(u(1).^2+u(3).^2)-c1./m1.*u(4)-u(3).*(K1+K2.*Z2)./(16.*m1);
uu(5)=u(6);
uu(6)=B3-c2./m2.*u(6)-u(5).*(K3+K2.*Z2)./(16.*m2);
uu(7)=u(8);
uu(8)=B4-c2./m2.*u(8)-u(7)*(K3+K2.*Z2)./(16.*m2);
看着很长,其实就两部分。
将第二部分写成.m文件,运行第一部分。即得到每一个Ij(从1030到1040)对应的一组u结果。
现在希望得到u(1)随Ij变化的分岔图,请问程序如何实现。
麻烦赐教! |
|