|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
冲击响应谱在使用龙格库塔法计算时,发现步长的选取或长或短,都会影响到计算结果,
如果输入一个半正弦激励,步长过小,会使响应谱最大点(1.7)的频率点右移变大,过小会使最大点频率左移变小
是怎么回事?程序有问题么?大虾们帮助啊
clear all
t1=0:0.00001:0.005;
n1=length(t1);
x1=zeros(1,n1);
t2=0.005:0.00001:0.015;
x2=sin(pi*(t2-0.005)/0.01);
t3=0.015:0.00001:0.02;
n3=length(t3);
x3=zeros(1,n3);
t=[t1,t2,t3];
x=[x1,x2,x3];
figure(1)
plot(t,x);
nn=length(x);
h=(max(t)-min(t))/(nn-1);
h=0.00001;
% h=1e-5
c=0.05;
u2=9.81*x;%输入加速度
y=zeros(1,nn);%响应位移
y1=zeros(1,nn);%响应速度z(t)
y2=zeros(1,nn);%响应相对加速度
d=[];%绝对加速度
y2max=[];%最大值
dmax=0;
gmax=0;
i=1;
fz=1;%起始频率
while (1)
wn=2*pi*fz;
for j=2:nn
k1=y1(j-1)*h;
l1=(-u2(j-1)-2*c*wn*y1(j-1)-wn*wn*y(j-1))*h;
k2=(y1(j-1)+0.5*l1)*h;
l2=(-0.5*(u2(j)+u2(j-1))-2*c*wn*(y1(j-1)+0.5*l1)-wn*wn*(y(j-1)+0.5*k1))*h;
k3=(y1(j-1)+0.5*l2)*h;
l3=(-0.5*(u2(j)+u2(j-1))-2*c*wn*(y1(j-1)+0.5*l2)-wn*wn*(y(j-1)+0.5*k2))*h;
k4=(y1(j-1)+l3)*h;
l4=(-u2(j)-2*c*wn*(y1(j-1)+0.5*l3)-wn*wn*(y(j-1)+k3))*h;
y(j)=y(j-1)+1.0/6.0*(k1+2*k2+2*k3+k4);
y1(j)=y1(j-1)+(l1+2*l2+2*l3+l4)/6;
y2(j)=-u2(j)-2*c*wn*y1(j)-wn*wn*y(j);%相对加速度
d(j)=y2(j)+u2(j);%绝对jiasudu
% y222(j+1)=abs(y22(j+1));
% y21(j+1)=y222(j+1)/9.81;%以g为单位
% if (abs(d)>abs(dmax))
% dmax=d;
% gmax=dmax/9.81;
% end
end
% if (i>wn)
% i=i+1;
% break;
% end
i=i+1;
fzr=round(fz);
y2max(fzr)=(max(abs(d)))/9.81;
k(fzr)=fz;
fz=wn/(2*pi);
if (fz>3000)
break;
end
% fz=fz*1.122;
fz=fz*1.122;
fzz(i)=fz;
y2max2(i)=(max(abs(d)))/9.81;;
end
figure(2);
loglog(y2max,'-*')%对数坐标
grid on
figure(3)
loglog(fzz,y2max2)
grid on
% for i=1:length(y2max)
% if (16.9145=y2max(i))
% i
% end
% end
结果:
h=0.000001时和h=0.001,明显不一样,也并是不步长越小越精确,也都不正确,该如何选取呢?
[ 本帖最后由 dreamstone 于 2010-4-21 20:21 编辑 ] |
|