|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
%利用逐步积分法求非线性系统的响应
% 9300*y''+5*y'+2*73397*(1-((y+sign(y')*85e-6)/(2*190e-6))^2)*((y+sign(y')*85e-6)/2)-(73397*(1-(y/190e-6)^2)*y)*sign(y')=5*cos(30*t)
%clc; %Clear Command Window
clear all;
close all;
deltat=0.002;
t=0:deltat:6;
p=5*cos(30*t);
% initial the displacement and velocity
y=0.1;v=1;m=9300;c=5;
len=length(t)-1;
displacement=zeros([1,len]);
velocity=zeros([1,len]);
accelaration=zeros([1,len]);
for i=1:len
if y>=0&y<0.001
y=y+0.001;
else if y<0&y>-0.001
y=y-0.001;
else
y=y;
end
end
k=(2*73397*(1-((y+sign(v)*85e-4)/(2*190e-4))^2)*((y+sign(v)*85e-4)/2)-(73397*(1-(y/190e-4)^2)*y)*sign(v))/y;
a=(p(i)-c*v-2*73397*(1-((y+sign(v)*85e-4)/(2*190e-4))^2)*((y+sign(v)*85e-4)/2)-(73397*(1-(y/190e-4)^2)*y)*sign(v))/m;
equivelentk=k+6*m/(deltat^2)+3/deltat*c;
deltap=(p(i+1)-p(i))+m*(6/deltat*v+3*a)+c*(3*v+deltat/2*a);
deltay=deltap/equivelentk;
deltav=3/deltat*deltay-3*v-deltat/2*a;
y=y+deltay;
v=v+deltav;
displacement(i)=y;
velocity(i)=v;
accelaration(i)=a;
k(i)=k;
end
figure(1)
plot(t(1:len),displacement)
figure(2)
plot(t(1:len),velocity)
figure(3)
plot(t(1:len),accelaration)
figure(4)
plot(t(1:len),k)
k(1) |
|