kfcoffee 发表于 2006-8-4 18:34

【分享】短时激励的反应谱程序

短时激励的时间为td,可以三角形加载,矩形加载,正弦加载等。。应用杜哈梅积分求解td内和td外的最大响应,如下matlab程序。望学友指正
clear
f=1;Wn=2*pi*f;tn=1/f;
syms p0 td t wn tao m;
u1=1/m/wn*int(p0*sin(wn*(t-tao)),tao,0,t);%此为杜哈梅积分的语句,p0为矩形加载(td内),可以改动
R1=u1/p0*wn^2*m;
u2=1/m/wn*int(p0*sin(wn*(t-tao)),tao,0,td);%此为杜哈梅积分的语句,p0为矩形加载(td外),可以改动
R2=u2/p0*wn^2*m;
Td=0.001*tn:(0.05*tn):(3*tn);
M1=cell(length(Td),1);M2=cell(length(Td),1);
h=waitbar(0,'please wait');
for p=1:(length(Td));
    waitbar(p/length(Td));
Q1=subs(R1,{td,wn},{Td(p),Wn});
Q2=subs(R2,{td,wn},{Td(p),Wn});
T=(0.01*Td(p)):(0.01*Td(p)):Td(p);
M1{p}=zeros(length(T),1);
for i=1:length(T);
    MM1=subs(Q1,t,T(i));
    M1{p}(i)=double(vpa(MM1));
end
T=Td(p):(0.01*Td(p)):(5*Td(p));
M2{p}=zeros(length(T),1);
for i=1:length(T);
    MM2=subs(Q2,t,T(i));
    M2{p}(i)=double(vpa(MM2));
end
end
close(h);
M=zeros(length(M1{1})+length(M2{1}),length(Td));
for i=1:length(Td)
    M(:,i)=;
end
plotM=max(M,[],1);
plot(1/20:1/20:3,plotM),xlabel('td/Tn'),ylabel('Rmax'),grid on;

[ 本帖最后由 dushudushu 于 2006-8-5 08:42 编辑 ]

sysh320 发表于 2006-8-4 19:22

真是好资料啊,谢谢楼主的分享啊

shealyxun 发表于 2006-8-7 23:22

谢谢楼主

lucycxh 发表于 2006-8-13 19:18

多谢
我正在编写相关的程序呢,希望能借来验证一下

sczhang 发表于 2006-8-14 15:10

真是不错啊!!谢谢楼主分享!

kongjuen 发表于 2010-4-16 16:17

多谢
我正在编写相关的程序呢,希望能借来验证一下
页: [1]
查看完整版本: 【分享】短时激励的反应谱程序