matlab地震反应谱
基于MATLAB地震反应谱数值算法的稳定性和精度分析

基于MATLAB地震反应谱数值算法的稳定性和精度分析摘要:地震反应谱是进行结构抗震分析与设计的重要工具,反应谱的计算在反应谱法和时域逐步积分方法中有重要地位,引起了学者的重视和广泛研究。
而对计算方法优劣的评定常取决于其计算的耗时、稳定性和精度等因素。
本文基于数值算法的相关研究及应用现状,以MATLAB为平台,建立数值算法在不同影响因素下的三维图形,并结合理论进行对比分析。
通过算例进一步分析验证,得出不同数值算法在实际计算中的表现,为工程实际计算中选取哪种积分算法更为合适提供参考。
关键词:地震反应谱;时域逐步积分算法;稳定性和精度;MATLAB1、地震反应谱的基本假定地震反应谱基于的三个基本假设[1]:(1)结构物所处的地面假定为刚性面,认为体系各质点的运动是完全一致的。
(2)强震观测仪的记录为地面运动的过程。
(3)结构体系不能是双或多质点体系,必须是单质点体系;同时应是弹性体系状态。
这里所谓的单自由度体系结构,就是用无量刚的弹性杆件支承于地面上,将结构体系中参与振动的质量用一点表示。
同时,假定结构振动和地面运动不发生扭转,只是水平平移运动并且是单方向的。
2、基于MATLAB地震反应谱数值算法的稳定性和精度分析2.1 概述目前MATLAB地震反应谱数值理论算法主要有中心差分法[2]、Wilson-法、Houbolt法、线性加速度法及Newmark-法等,理论算法主要是以求解线性结构体系动力方程时所表现出的特性作为数值算法优劣的评价依据[3],但是在实际工程运用中,人们常常凭借经验来判定选取较为合适的积分方法。
随着工程问题越来越复杂,在对大型复杂结构的结构动力反应分析更为复杂,要求高效率计算情况下获得较精确地计算结果。
然而各计算方法的精度和稳定性对结构动力反应分析的发————————————E-mail:skyuanyan@展引起了很大的影响和制约[4]。
2.2数值算法的稳定性分析基于上述情况,本文对上述几种常用数值算法的稳定性方面通过图形进行比较分析,并结合算例进一步验证分析。
基于matlab的地震反应谱计算方法的比较【matlab源码】

毕业论文(设计)题目学院学院专业学生姓名学号年级级指导教师教务处制表基于MATLAB的地震反应谱计算方法的比较一、程序说明本团队长期从事matlab编程与仿真工作,擅长各类毕业设计、数据处理、图表绘制、理论分析等,程序代做、数据分析具体信息联系二、写作思路与程序示例地震反应谱是进行结构抗震分析与设计的重要工具,反应谱的计算在反应谱法和时域逐步积分方法中有重要地位,引起了学者的重视和广泛研究。
而对计算方法优劣的评定常取决于其计算的耗时、稳定性和精度等因素。
目前,计算反应谱的方法有很多,以往常规方法主要有中心差分法、Newmark-法、线性加速度法及Wilson-法等,这些方法虽然存在一些弊端,但是其计算精度能够满足一般实际工程计算的需要,仍被广泛应用于工程实践。
因此有必要对这些方法进行深入的比较和探讨。
目前,我国现行建筑抗震设计规范中对阻尼比规定:混凝土结构通常取0.05,钢结构通常取0.02,阻尼比均比较小,因此利用拟反应谱是可靠的。
然而,随着高层和超高层的出现,建筑新形式、新材料的使用、隔震、减震耗能机构的研究以及抗震减灾新要求的不断提出,传统理论也越来越不能适应新要求,使用拟反应谱可能带来较大误差,这应当引起我们的注意。
同时,通过反应谱理论分析得到:当周期超过3s以后,结构地震反应已不是由地面加速度控制,而可能是由速度甚至是位移控制。
然而,现代的超大跨、超高层和巨型结构的自振周期大都达到了10s以上,如果仍然采用加速度谱来对其进行分析将不合适。
我们应当采用能更好反应三个周期段的反应谱来对长周期结构进行分析,而三联反应谱就具有这一特点,它是将位移、速度以及加速度联合反应谱同时表示在一张图上的四坐标对数图,能够使我们更直接地掌握上述三种物理量与结构自振周期之间的控制关系。
因此,采用MATLAB的GUI编程三联反应谱图形界面,并将其应用于工程实践,将是一项很有意义的工作。
论文基于以上内容,主要进行了以下具体工作:1.基于数值算法的相关研究及应用现状,本文以MATLAB为平台,建立数值算法在不同影响因素下的三维图形,并结合理论对比分析。
地震工程学-反应谱和地震时程波的相互转化matlab编程#(精选.)

地震工程学作业课程名称:地震工程学______ 指导老师:_______翟永梅_________ 姓名:史先飞________ 学号:1232627________一、地震波生成反应谱1 所取的地震波为Elcentro地震波加速度曲线,如图1所示。
图1 Elcentro地震波加速度曲线2 所调用的Matlab程序为:% ***********读入地震记录***********ElCentro;Accelerate= ElCentro(:,1)*9.8067;%单位统一为m和sN=length(Accelerate);%N 读入的记录的量time=0:0.005:(N-1)*0.005; %单位 s%初始化各储存向量Displace=zeros(1,N); %相对位移Velocity=zeros(1,N); %相对速度AbsAcce=zeros(1,N); %绝对加速度% ***********A,B矩阵***********Damp=0.02; %阻尼比0.02TA=0.0:0.05:6; %TA=0.000001:0.02:6; %结构周期Dt=0.005; %地震记录的步长%记录计算得到的反应,MaxD为某阻尼时最大相对位移,MaxV为某阻尼最大相对速度,MaxA某阻尼时最大绝对加速度,用于画图MaxD=zeros(3,length(TA));MaxV=zeros(3,length(TA));MaxA=zeros(3,length(TA));t=1;for T=0.0:0.05:6NatualFrequency=2*pi/T ; %结构自振频率DampFrequency=NatualFrequency*sqrt(1-Damp*Damp); %计算公式化简e_t=exp(-Damp*NatualFrequency*Dt);s=sin(DampFrequency*Dt);c=cos(DampFrequency*Dt);A=zeros(2,2);A(1,1)=e_t*(s*Damp/sqrt(1-Damp*Damp)+c);A(1,2)=e_t*s/DampFrequency;A(2,1)=-NatualFrequency*e_t*s/sqrt(1-Damp*Damp);A(2,2)=e_t*(-s*Damp/sqrt(1-Damp*Damp)+c);d_f=(2*Damp^2-1)/(NatualFrequency^2*Dt);d_3t=Damp/(NatualFrequency^3*Dt);B=zeros(2,2);B(1,1)=e_t*((d_f+Damp/NatualFrequency)*s/DampFrequency+(2*d_3t+1/NatualFrequency^2)*c)-2*d_3 t;B(1,2)=-e_t*(d_f*s/DampFrequency+2*d_3t*c)-1/NatualFrequency^2+2*d_3t;B(2,1)=e_t*((d_f+Damp/NatualFrequency)*(c-Damp/sqrt(1-Damp^2)*s)-(2*d_3t+1/NatualFrequency^2 )*(DampFrequency*s+Damp*NatualFrequency*c))+1/(NatualFrequency^2*Dt);B(2,2)=e_t*(1/(NatualFrequency^2*Dt)*c+s*Damp/(NatualFrequency*DampFrequency*Dt))-1/(NatualF requency^2*Dt);for i=1:(N-1) %根据地震记录,计算不同的反应Displace(i+1)=A(1,1)*Displace(i)+A(1,2)*Velocity(i)+B(1,1)*Accelerate(i)+B(1,2)*Accelerate(i +1);Velocity(i+1)=A(2,1)*Displace(i)+A(2,2)*Velocity(i)+B(2,1)*Accelerate(i)+B(2,2)*Accelerate(i +1);AbsAcce(i+1)=-2*Damp*NatualFrequency*Velocity(i+1)-NatualFrequency^2*Displace(i+1);endMaxD(1,t)=max(abs(Displace));MaxV(1,t)=max(abs(Velocity));if T==0.0MaxA(1,t)=max(abs(Accelerate));elseMaxA(1,t)=max(abs(AbsAcce));endDisplace=zeros(1,N);%初始化各储存向量,避免下次不同周期计算时引用到前一个周期的结果Velocity=zeros(1,N);AbsAcce=zeros(1,N);t=t+1;End% ***********PLOT***********close allfigure %绘制地震记录图plot(time(:),Accelerate(:))title('PEER STRONG MOTION DATABASE RECORD')xlabel('time(s)')ylabel('acceleration(g)')gridfigure %绘制位移反应谱plot(TA,MaxD(1,:),'-.b',TA,MaxD(2,:),'-r',TA,MaxD(3,:),':k')title('Displacement')xlabel('Tn(s)')ylabel('Displacement(m)')legend('ζ=0.02')Gridfigure %绘制速度反应谱plot(TA,MaxV(1,:),'-.b',TA,MaxV(2,:),'-r',TA,MaxV(3,:),':k') title('Velocity')xlabel('Tn(s)')ylabel('velocity(m/s)')legend('ζ=0.02')Gridfigure %绘制绝对加速度反应谱plot(TA,MaxA(1,:),'-.b',TA,MaxA(2,:),'-r',TA,MaxA(3,:),':k') title('Absolute Acceleration')xlabel('Tn(s)')ylabel('absolute acceleration(m/s^2)')legend('ζ=0.02')Grid3 运行的结果得到的反应谱图2 位移反应谱图3 速度反应谱图4 加速度反应谱一、反应谱生成地震波1所取的反应谱为上海市设计反应谱图5 上海市设计反应谱2反应谱取值程序为:%%规范反应谱取值程序参照01年抗震规范function rs_z=r_s_1(pl,zn,ld,cd,fz) %%%pl 圆频率,zn阻尼比,ld烈度,cd场地类型,场地分组fz %%%%烈度选择if ld==6arfmax=0.11;endif ld==7arfmax=0.23;endif ld==8arfmax=0.45;endif ld==9arfmax=0.90;end%%%%场地类别,设计地震分组选择if cd==1if fz==1Tg=0.25;endif fz==2Tg=0.30;endif fz==3Tg=0.35;endendif cd==2if fz==1Tg=0.35;if fz==2Tg=0.40;endif fz==3Tg=0.45;endendif cd==3if fz==1Tg=0.45;endif fz==2Tg=0.55;endif fz==3Tg=0.65;endendif cd==4if fz==1Tg=0.65;endif fz==2Tg=0.75;endif fz==3Tg=0.90;endend%%%%%%%%%ceita=zn; %%%%%阻尼比lmt1=0.02+(0.05-ceita)/8;if lmt1<0lmt1=0;endlmt2=1+(0.05-ceita)/(0.06+1.7*ceita); if lmt2<0.55lmt2=0.55;endsjzs=0.9+(0.05-ceita)/(0.5+5*ceita); %%%%%分段位置 T1 T2 T3T1=0.1;T2=Tg;T_jg=2*pi./pl;%%%% 第一段 0~T1if T_jg<=T1arf_jg=0.45*arfmax+(lmt2*arfmax-0.45*arfmax)/0.1*T_jg;end%%%% 第二段 T1~T2if T1<T_jg&T_jg<=T2arf_jg=lmt2*arfmax;end%%%% 第三段 T2~T3if T2<T_jg&T_jg<=T3arf_jg=((Tg/T_jg)^sjzs)*lmt2*arfmax;end%%%% 第四段 T3~6.0if T3<T_jg&T_jg<=6.0arf_jg=(lmt2*0.2^sjzs-lmt1*(T_jg-5*Tg))*arfmax;end%%%% 第五段 6.0~if 6.0<T_jgarf_jg=(lmt2*0.2^sjzs-lmt1*(6.0-5*Tg))*arfmax;end%%%%%%反应谱值拟加速度值rs_z=arf_jg*9.8;end3生成人造地震波主程序:%%%主程序%%%%%%%%确定需要控制的反应谱Sa(T)(T=T1,...,TM)的坐标点数M,反应谱控制容差rc Tyz=[0.04:0.016:0.1,0.15:0.05:3.0,3.2:0.05:5.0];rc=0.06;nTyz=length(Tyz);ceita=0.035;%%%阻尼比:0.035for i=1:nTyzSyz(i)=r_s_1(2*pi/Tyz(i),ceita,8,2,1); %%%%8度,2类场地,第1地震分组end%%%%%% 变换的频率差:2*pi*0.005(可以保证长周期项5s附近有5项三角级数);%%%%频率变化范围 N1=30, 30*0.005*2*pi ;N2=3000, 5000*0.005*2*piplc=2*pi*0.005;pl=30*0.005*2*pi:0.005*2*pi:10000*0.005*2*pi;npl=length(pl);P=0.9; %%%保证率%%%%%%人造地震动持续时间40s,时间间隔:0.02sTd=40;dt=0.02;t=0:0.02:40;nt=length(t);%%%%%%% 衰减包络函数t1=8; %%%%上升段t2=8+24; %%%%%平稳段; 下降段则为40-32=8sc=0.6; %%%%衰减段参数for i=1:ntif t(i)<=t1f(i)=(t(i)/t1)^2;endif t(i)>t1 & t(i)<t2f(i)=1;endif t(i)>=t2f(i)=exp(-c*(t(i)-t2));endend%%%%%%% 反应谱转换功率谱for i=1:nplSw(i)=(2*ceita/(pi*pl(i)))*r_s_1(pl(i),ceita,8,2,1)^2/(-2*log(-1*pi*log(P)/(pl(i)*Td))); Aw(i)=sqrt(4*Sw(i)*plc);end%%%%%%%%%%%%%% 合成地震动at=zeros(nt,1);atj=zeros(nt,1);for i=1:nplfai(i)=rand(1)*2*pi;for j=1:ntatj(j)=f(j)*Aw(i)*real(exp(sqrt(-1)*(pl(i)*t(j)+fai(i))));endat=at+atj;end%%%%%%% 计算反应谱验证是否满足rc在5%的要求,需要时程动力分析%%%%%%%%%%%% response spectra of callidar%%%%%%% parameterg=9.8;m=1;x0=0;v0=0;ww=2*pi./Tyz;%%%%%%%% loadag=at; %%%%%%%修改%%%%%%% solutionfor y=1:nTyzz=0.037;w=ww(y);c=2*z*w;k=w^2;for i=1:nt-1p(i)=-ag(i+1)+ag(i);a0=m\(-ag(i)-c*v0-k*x0);kk=k+(dt^2)\(6*m)+dt\(3*c);pp=p(i)+m*(dt\(6*v0)+3*a0)+c*(3*v0+2\(dt*a0)); dx=kk\pp;dv=dt\(3*dx)-3*v0-2\(dt*a0);x1=x0+dx;x0=x1;v1=v0+dv;v0=v1;as(i)=a0;as(i)=as(i)+ag(i);vs(i)=v0;xs(i)=x0;endmaxas(y)=max(as);maxvs(y)=max(vs);maxxs(y)=max(xs);endfor i=1:nTyzrspa(i)=maxas(i);end%%%%%%% 比较容差for i=1:nTyzrcrsp(i)=abs(rspa(i)-Syz(i))/max(Syz(:));endjsnum=1;while max(rcrsp(:))>rc%%%%%循环体函数blxs=Syz./rspa;for xsxs=1:nplif 2*pi/pl(xsxs)<Tyz(1)blxs1(xsxs)=blxs(1);endfor sxsx=1:nTyz-1if (2*pi/pl(xsxs)>=Tyz(sxsx)) & (2*pi/pl(xsxs)<=Tyz(sxsx+1))blxs1(xsxs)=blxs(sxsx)+(blxs(sxsx+1)-blxs(sxsx))*(2*pi/pl(xsxs)-Tyz(sxsx))/(Tyz(sxsx+1)-Tyz(sxsx));endendif 2*pi/pl(xsxs)>Tyz(nTyz)blxs1(xsxs)=blxs(nTyz);endendAw=Aw.*blxs1;%%%%%%%%%%%%%% 合成地震动at=zeros(nt,1);atj=zeros(nt,1);for i=1:nplfor j=1:ntatj(j)=f(j)*Aw(i)*real(exp(sqrt(-1)*(pl(i)*t(j)+fai(i))));endat=at+atj;end%%%%%%% 计算反应谱验证是否满足rc在5%的要求%%%%%%%%%%%% response spectra of callidar%%%%%%% parameterg=9.8;m=1;x0=0;v0=0;ww=2*pi./Tyz;%%%%%%%% loadag=at; %%%%%%%修改%%%%%%% solutionfor y=1:nTyzz=0.037;w=ww(y);c=2*z*w;k=w^2;for i=1:nt-1p(i)=-ag(i+1)+ag(i);a0=m\(-ag(i)-c*v0-k*x0);kk=k+(dt^2)\(6*m)+dt\(3*c);pp=p(i)+m*(dt\(6*v0)+3*a0)+c*(3*v0+2\(dt*a0)); dx=kk\pp;dv=dt\(3*dx)-3*v0-2\(dt*a0);x1=x0+dx;x0=x1;v1=v0+dv;v0=v1;as(i)=a0;as(i)=as(i)+ag(i);vs(i)=v0;xs(i)=x0;endmaxas(y)=max(as);maxvs(y)=max(vs);maxxs(y)=max(xs);endfor i=1:nTyzrspa(i)=maxas(i);end%%%%%%% 比较容差for i=1:nTyzrcrsp(i)=abs(rspa(i)-Syz(i))/max(Syz(:));endjsnum=jsnum+1max(rcrsp(:))end%%%%%%% 最终的反应谱与规范谱%%%%%%%%%%%% response spectra of callidar%%%%%%% parameter%% Tjs=0.05:0.01:6;%% nTjs=length(Tjs);g=9.8;m=1;x0=0;v0=0;ww=2*pi./Tyz;%%%%%%%% loadag=at; %%%%%%%修改%%%%%%% solutionfor y=1:nTyzz=0.037;w=ww(y);c=2*z*w;k=w^2;for i=1:nt-1p(i)=-ag(i+1)+ag(i);a0=m\(-ag(i)-c*v0-k*x0);kk=k+(dt^2)\(6*m)+dt\(3*c);pp=p(i)+m*(dt\(6*v0)+3*a0)+c*(3*v0+2\(dt*a0));dx=kk\pp;dv=dt\(3*dx)-3*v0-2\(dt*a0);x1=x0+dx;x0=x1;v1=v0+dv;v0=v1;as(i)=a0;as(i)=as(i)+ag(i);vs(i)=v0;xs(i)=x0;endmaxas(y)=max(as);maxvs(y)=max(vs);maxxs(y)=max(xs);endfor i=1:nTyzrspa(i)=maxas(i)/g;rspa_S(i)=r_s_1(2*pi/Tyz(i),ceita,8,2,1)/g;endsubplot(2,1,1);plot(t,at);subplot(2,1,2);plot(Tyz,rspa);hold on;plot(Tyz,rspa_S);4生成的人造地震波如图所示。
基于MATLAB的地震反应谱与傅里叶谱计算分析

参考文献(References):
[1] 郭晓云. 汶川地震反应谱研究分析[D]. 哈尔滨: 中国地震局工程力 学 研 究 所 , 2011.(DUO xiaoyun. Study on response spectrum of WenChuan Earthquake.[D]. Harbin : Institute of Engineering Mechanics,China Earthquake Administration ,2011.(in Chinese)) [2] 骆剑锋. 框架结构静力与动力弹塑性抗震分析对比研究[D]. 上海: 同济大学,2007. [3] 张晓志,谢礼立,于海英. 地震动反应谱的数值计算精度和相关问 题[J]. 地震工程与工程振动,2004,24(6):15-20. [4] 赵凤新,胡聿贤. 地震动非平稳性与幅值谱和相位差谱的关系[J]. 地震工程与工程振动,2003,23(1):1-5. [5] 金 星, 廖振鹏. 地震动强度包线函数与相位差谱频数分布函数的
[2]
的方法,因此对Δt 时段内的系统反应或加速度的变 化规律未做出假定。 事实上, 采用 Fourier 变换方法 求解动力平衡方程时,对输入荷载采用了一个全局 性基本假定,即将非周期的加速度荷载假定为一个 具有有限带宽的周期荷载。在此假定下,加速度荷 载被表达为有限个连续简谐波的线性叠加。因此, 频域方法也是近似方法,不能作为度量其他方法精 度的准则。 傅立叶谱不仅包含幅值信息,而且包含相位信 息,这是地震反应谱所不具备的。所以,当傅里叶 谱与地震反应谱进行比较时,只能采用幅值谱。
3 强震记录资料
北岭大地震, 1994 年 1 月 17 日凌晨 4 时 31 分, 洛杉矶地区发生里氏 6.6 级地震,震中位于圣费兰 多峡谷, 北纬 34°12′54″, 西经 118°32′16.8″, 在洛杉矶西北方向 20 英里处, 属浅源地震, 震源深 度 为 18 英 里 。 当 地 震 级 ML=6.6 , 面 波 震 级 为 MS=6.7(NEIC),地震矩震级为 MW=6.7(CIT), 持续时间约 30 秒。在持续 30 秒的震撼中,大约有 11000 多间房屋倒塌, 震中 30 公里范围内的高速公 路、高层建筑或毁坏或倒塌,煤气、自来水管爆裂, 电讯中断,火灾四起,直接和间接死亡 58 人,受伤 600 多人,财产损失 300 多亿美元。 本文以北岭大地震中,某县医院台站强震动仪 所记录到的强震记录为例,通过 MATLAB 编程实 现傅里叶谱和地震反应谱的计算, 并进行比较分析。 该台站位于北纬 34°19′33.6″,西经 118°26′ 38.4″,所记录的振动持续时间为 39.98s,峰值加 速度为-1007.942cm/s²,记录时间点在 4.328s;峰值 速度为-124.896cm/s,记录时间点在 3.700s;最大位 移为-31.078cm,记录时间点在 4.200s;初始速度为 -3.694cm/s;初始位移为 298cm。
地震工程学-反应谱和地震时程波的相互转化matlab编程.

地震工程学作业课程名称:地震工程学______ 指导老师:_______翟永梅_________ 姓名:史先飞________ 学号:1232627________一、地震波生成反应谱1 所取的地震波为Elcentro地震波加速度曲线,如图1所示。
图1 Elcentro地震波加速度曲线2 所调用的Matlab程序为:% ***********读入地震记录***********ElCentro;Accelerate= ElCentro(:,1)*9.8067;%单位统一为m和sN=length(Accelerate);%N 读入的记录的量time=0:0.005:(N-1)*0.005; %单位 s%初始化各储存向量Displace=zeros(1,N); %相对位移Velocity=zeros(1,N); %相对速度AbsAcce=zeros(1,N); %绝对加速度% ***********A,B矩阵***********Damp=0.02; %阻尼比0.02TA=0.0:0.05:6; %TA=0.000001:0.02:6; %结构周期Dt=0.005; %地震记录的步长%记录计算得到的反应,MaxD为某阻尼时最大相对位移,MaxV为某阻尼最大相对速度,MaxA某阻尼时最大绝对加速度,用于画图MaxD=zeros(3,length(TA));MaxV=zeros(3,length(TA));MaxA=zeros(3,length(TA));t=1;for T=0.0:0.05:6NatualFrequency=2*pi/T ; %结构自振频率DampFrequency=NatualFrequency*sqrt(1-Damp*Damp); %计算公式化简e_t=exp(-Damp*NatualFrequency*Dt);s=sin(DampFrequency*Dt);c=cos(DampFrequency*Dt);A=zeros(2,2);A(1,1)=e_t*(s*Damp/sqrt(1-Damp*Damp)+c);A(1,2)=e_t*s/DampFrequency;A(2,1)=-NatualFrequency*e_t*s/sqrt(1-Damp*Damp);A(2,2)=e_t*(-s*Damp/sqrt(1-Damp*Damp)+c);d_f=(2*Damp^2-1)/(NatualFrequency^2*Dt);d_3t=Damp/(NatualFrequency^3*Dt);B=zeros(2,2);B(1,1)=e_t*((d_f+Damp/NatualFrequency)*s/DampFrequency+(2*d_3t+1/NatualFrequency^2)*c)-2*d_3 t;B(1,2)=-e_t*(d_f*s/DampFrequency+2*d_3t*c)-1/NatualFrequency^2+2*d_3t;B(2,1)=e_t*((d_f+Damp/NatualFrequency)*(c-Damp/sqrt(1-Damp^2)*s)-(2*d_3t+1/NatualFrequency^2 )*(DampFrequency*s+Damp*NatualFrequency*c))+1/(NatualFrequency^2*Dt);B(2,2)=e_t*(1/(NatualFrequency^2*Dt)*c+s*Damp/(NatualFrequency*DampFrequency*Dt))-1/(NatualF requency^2*Dt);for i=1:(N-1) %根据地震记录,计算不同的反应Displace(i+1)=A(1,1)*Displace(i)+A(1,2)*Velocity(i)+B(1,1)*Accelerate(i)+B(1,2)*Accelerate(i +1);Velocity(i+1)=A(2,1)*Displace(i)+A(2,2)*Velocity(i)+B(2,1)*Accelerate(i)+B(2,2)*Accelerate(i +1);AbsAcce(i+1)=-2*Damp*NatualFrequency*Velocity(i+1)-NatualFrequency^2*Displace(i+1);endMaxD(1,t)=max(abs(Displace));MaxV(1,t)=max(abs(Velocity));if T==0.0MaxA(1,t)=max(abs(Accelerate));elseMaxA(1,t)=max(abs(AbsAcce));endDisplace=zeros(1,N);%初始化各储存向量,避免下次不同周期计算时引用到前一个周期的结果Velocity=zeros(1,N);AbsAcce=zeros(1,N);t=t+1;End% ***********PLOT***********close allfigure %绘制地震记录图plot(time(:),Accelerate(:))title('PEER STRONG MOTION DATABASE RECORD')xlabel('time(s)')ylabel('acceleration(g)')gridfigure %绘制位移反应谱plot(TA,MaxD(1,:),'-.b',TA,MaxD(2,:),'-r',TA,MaxD(3,:),':k')title('Displacement')xlabel('Tn(s)')ylabel('Displacement(m)')legend('ζ=0.02')Gridfigure %绘制速度反应谱plot(TA,MaxV(1,:),'-.b',TA,MaxV(2,:),'-r',TA,MaxV(3,:),':k') title('Velocity')xlabel('Tn(s)')ylabel('velocity(m/s)')legend('ζ=0.02')Gridfigure %绘制绝对加速度反应谱plot(TA,MaxA(1,:),'-.b',TA,MaxA(2,:),'-r',TA,MaxA(3,:),':k') title('Absolute Acceleration')xlabel('Tn(s)')ylabel('absolute acceleration(m/s^2)')legend('ζ=0.02')Grid3 运行的结果得到的反应谱图2 位移反应谱图3 速度反应谱图4 加速度反应谱一、反应谱生成地震波1所取的反应谱为上海市设计反应谱图5 上海市设计反应谱2反应谱取值程序为:%%规范反应谱取值程序参照01年抗震规范function rs_z=r_s_1(pl,zn,ld,cd,fz) %%%pl 圆频率,zn阻尼比,ld烈度,cd场地类型,场地分组fz %%%%烈度选择if ld==6arfmax=0.11;endif ld==7arfmax=0.23;endif ld==8arfmax=0.45;endif ld==9arfmax=0.90;end%%%%场地类别,设计地震分组选择if cd==1if fz==1Tg=0.25;endif fz==2Tg=0.30;endif fz==3Tg=0.35;endendif cd==2if fz==1Tg=0.35;if fz==2Tg=0.40;endif fz==3Tg=0.45;endendif cd==3if fz==1Tg=0.45;endif fz==2Tg=0.55;endif fz==3Tg=0.65;endendif cd==4if fz==1Tg=0.65;endif fz==2Tg=0.75;endif fz==3Tg=0.90;endend%%%%%%%%%ceita=zn; %%%%%阻尼比lmt1=0.02+(0.05-ceita)/8;if lmt1<0lmt1=0;endlmt2=1+(0.05-ceita)/(0.06+1.7*ceita); if lmt2<0.55lmt2=0.55;endsjzs=0.9+(0.05-ceita)/(0.5+5*ceita); %%%%%分段位置 T1 T2 T3T1=0.1;T2=Tg;T_jg=2*pi./pl;%%%% 第一段 0~T1if T_jg<=T1arf_jg=0.45*arfmax+(lmt2*arfmax-0.45*arfmax)/0.1*T_jg;end%%%% 第二段 T1~T2if T1<T_jg&T_jg<=T2arf_jg=lmt2*arfmax;end%%%% 第三段 T2~T3if T2<T_jg&T_jg<=T3arf_jg=((Tg/T_jg)^sjzs)*lmt2*arfmax;end%%%% 第四段 T3~6.0if T3<T_jg&T_jg<=6.0arf_jg=(lmt2*0.2^sjzs-lmt1*(T_jg-5*Tg))*arfmax;end%%%% 第五段 6.0~if 6.0<T_jgarf_jg=(lmt2*0.2^sjzs-lmt1*(6.0-5*Tg))*arfmax;end%%%%%%反应谱值拟加速度值rs_z=arf_jg*9.8;end3生成人造地震波主程序:%%%主程序%%%%%%%%确定需要控制的反应谱Sa(T)(T=T1,...,TM)的坐标点数M,反应谱控制容差rc Tyz=[0.04:0.016:0.1,0.15:0.05:3.0,3.2:0.05:5.0];rc=0.06;nTyz=length(Tyz);ceita=0.035;%%%阻尼比:0.035for i=1:nTyzSyz(i)=r_s_1(2*pi/Tyz(i),ceita,8,2,1); %%%%8度,2类场地,第1地震分组end%%%%%% 变换的频率差:2*pi*0.005(可以保证长周期项5s附近有5项三角级数);%%%%频率变化范围 N1=30, 30*0.005*2*pi ;N2=3000, 5000*0.005*2*piplc=2*pi*0.005;pl=30*0.005*2*pi:0.005*2*pi:10000*0.005*2*pi;npl=length(pl);P=0.9; %%%保证率%%%%%%人造地震动持续时间40s,时间间隔:0.02sTd=40;dt=0.02;t=0:0.02:40;nt=length(t);%%%%%%% 衰减包络函数t1=8; %%%%上升段t2=8+24; %%%%%平稳段; 下降段则为40-32=8sc=0.6; %%%%衰减段参数for i=1:ntif t(i)<=t1f(i)=(t(i)/t1)^2;endif t(i)>t1 & t(i)<t2f(i)=1;endif t(i)>=t2f(i)=exp(-c*(t(i)-t2));endend%%%%%%% 反应谱转换功率谱for i=1:nplSw(i)=(2*ceita/(pi*pl(i)))*r_s_1(pl(i),ceita,8,2,1)^2/(-2*log(-1*pi*log(P)/(pl(i)*Td))); Aw(i)=sqrt(4*Sw(i)*plc);end%%%%%%%%%%%%%% 合成地震动at=zeros(nt,1);atj=zeros(nt,1);for i=1:nplfai(i)=rand(1)*2*pi;for j=1:ntatj(j)=f(j)*Aw(i)*real(exp(sqrt(-1)*(pl(i)*t(j)+fai(i))));endat=at+atj;end%%%%%%% 计算反应谱验证是否满足rc在5%的要求,需要时程动力分析%%%%%%%%%%%% response spectra of callidar%%%%%%% parameterg=9.8;m=1;x0=0;v0=0;ww=2*pi./Tyz;%%%%%%%% loadag=at; %%%%%%%修改%%%%%%% solutionfor y=1:nTyzz=0.037;w=ww(y);c=2*z*w;k=w^2;for i=1:nt-1p(i)=-ag(i+1)+ag(i);a0=m\(-ag(i)-c*v0-k*x0);kk=k+(dt^2)\(6*m)+dt\(3*c);pp=p(i)+m*(dt\(6*v0)+3*a0)+c*(3*v0+2\(dt*a0)); dx=kk\pp;dv=dt\(3*dx)-3*v0-2\(dt*a0);x1=x0+dx;x0=x1;v1=v0+dv;v0=v1;as(i)=a0;as(i)=as(i)+ag(i);vs(i)=v0;xs(i)=x0;endmaxas(y)=max(as);maxvs(y)=max(vs);maxxs(y)=max(xs);endfor i=1:nTyzrspa(i)=maxas(i);end%%%%%%% 比较容差for i=1:nTyzrcrsp(i)=abs(rspa(i)-Syz(i))/max(Syz(:));endjsnum=1;while max(rcrsp(:))>rc%%%%%循环体函数blxs=Syz./rspa;for xsxs=1:nplif 2*pi/pl(xsxs)<Tyz(1)blxs1(xsxs)=blxs(1);endfor sxsx=1:nTyz-1if (2*pi/pl(xsxs)>=Tyz(sxsx)) & (2*pi/pl(xsxs)<=Tyz(sxsx+1))blxs1(xsxs)=blxs(sxsx)+(blxs(sxsx+1)-blxs(sxsx))*(2*pi/pl(xsxs)-Tyz(sxsx))/(Tyz(sxsx+1)-Tyz(sxsx));endendif 2*pi/pl(xsxs)>Tyz(nTyz)blxs1(xsxs)=blxs(nTyz);endendAw=Aw.*blxs1;%%%%%%%%%%%%%% 合成地震动at=zeros(nt,1);atj=zeros(nt,1);for i=1:nplfor j=1:ntatj(j)=f(j)*Aw(i)*real(exp(sqrt(-1)*(pl(i)*t(j)+fai(i))));endat=at+atj;end%%%%%%% 计算反应谱验证是否满足rc在5%的要求%%%%%%%%%%%% response spectra of callidar%%%%%%% parameterg=9.8;m=1;x0=0;v0=0;ww=2*pi./Tyz;%%%%%%%% loadag=at; %%%%%%%修改%%%%%%% solutionfor y=1:nTyzz=0.037;w=ww(y);c=2*z*w;k=w^2;for i=1:nt-1p(i)=-ag(i+1)+ag(i);a0=m\(-ag(i)-c*v0-k*x0);kk=k+(dt^2)\(6*m)+dt\(3*c);pp=p(i)+m*(dt\(6*v0)+3*a0)+c*(3*v0+2\(dt*a0)); dx=kk\pp;dv=dt\(3*dx)-3*v0-2\(dt*a0);x1=x0+dx;x0=x1;v1=v0+dv;v0=v1;as(i)=a0;as(i)=as(i)+ag(i);vs(i)=v0;xs(i)=x0;endmaxas(y)=max(as);maxvs(y)=max(vs);maxxs(y)=max(xs);endfor i=1:nTyzrspa(i)=maxas(i);end%%%%%%% 比较容差for i=1:nTyzrcrsp(i)=abs(rspa(i)-Syz(i))/max(Syz(:));endjsnum=jsnum+1max(rcrsp(:))end%%%%%%% 最终的反应谱与规范谱%%%%%%%%%%%% response spectra of callidar%%%%%%% parameter%% Tjs=0.05:0.01:6;%% nTjs=length(Tjs);g=9.8;m=1;x0=0;v0=0;ww=2*pi./Tyz;%%%%%%%% loadag=at; %%%%%%%修改%%%%%%% solutionfor y=1:nTyzz=0.037;w=ww(y);c=2*z*w;k=w^2;for i=1:nt-1p(i)=-ag(i+1)+ag(i);a0=m\(-ag(i)-c*v0-k*x0);kk=k+(dt^2)\(6*m)+dt\(3*c);pp=p(i)+m*(dt\(6*v0)+3*a0)+c*(3*v0+2\(dt*a0));dx=kk\pp;dv=dt\(3*dx)-3*v0-2\(dt*a0);x1=x0+dx;x0=x1;v1=v0+dv;v0=v1;as(i)=a0;as(i)=as(i)+ag(i);vs(i)=v0;xs(i)=x0;endmaxas(y)=max(as);maxvs(y)=max(vs);maxxs(y)=max(xs);endfor i=1:nTyzrspa(i)=maxas(i)/g;rspa_S(i)=r_s_1(2*pi/Tyz(i),ceita,8,2,1)/g;endsubplot(2,1,1);plot(t,at);subplot(2,1,2);plot(Tyz,rspa);hold on;plot(Tyz,rspa_S);4生成的人造地震波如图所示。
地震动反应谱特征周期计算地震荷载

选取同一类场地、震中距相近的20条地震动记录,地震动峰值均为0.7m/s2,单自由度结构的阻尼比为2%、5%、10%和15%,周期范围为0.1s~10s,计算位移反应谱、速度反应谱和伪速度反应谱、加速度反应谱和伪加速度反应谱,并分析比较速度反应谱和伪速度反应谱的区别,以及加速度反应谱和伪加速度反应谱的区别。
一.反应谱计算与绘图反应谱的计算采用Newmark-β法计算,对于单自由度体系使用杜哈美积分来求解实际更为方便。
MATLAB的计算程序如下所示:clcclearkesai=0.15; %阻尼比m=1;[acc,dt,N]=peer2acc('F:matlab-learn','RSN3753_LANDERS_FVR135.AT2')%peer2acc为处理原始地震动数据的程序save('acc2','acc')load('acc2.mat');gama = 0.5;beta = 0.25;alpha0 = 1/beta/dt^2;alpha1 = gama/beta/dt;alpha2 = 1/beta/dt;alpha3 = 1/2/beta - 1;alpha4 = gama/beta - 1;alpha5 = dt/2*(gama/beta-2);alpha6 = dt*(1-gama);alpha7 = gama*dt;peak=9.8*max(abs(acc));acc=acc*0.7/peak;n=length(acc);p=-m*9.8*acc;j=0;for T=0.1:0.01:10j=j+1;wn=2*pi/T;k=m*wn^2;c=kesai*2*m*wn;Keq=k+ alpha0*m + alpha1*c;wD=wn*(1-kesai^2)^0.5;d=zeros(n,1);v=zeros(n,1);a=zeros(n,1);for i=2:nt=0.002*(i-1);f=p(i) + m*(alpha0*d(i-1)+alpha2*v(i-1)+alpha3*a(i-1))+c*(alpha1*d(i-1)+alpha4*v(i-1)+alpha5*a(i-1)); d(i) =f/Keq; %Newmark-β的计算程序a(i) = alpha0*(d(i)-d(i-1))-alpha2*v(i-1)-alpha3*a(i-1);v(i) = v(i-1) + alpha6*a(i-1) + alpha7*a(i);endsd(j)=max(abs(d)); %位移反应谱sv(j)=max(abs(v)); %速度反应谱sa(j)=max(abs(a)); %加速度反应谱SA(j)=wn^2*sd(j); %伪加速度反应谱SV(j)=wn*sd(j); %伪速度反应谱end选取的地震动记录如图地震动记录一般在PEER网站下载。
MATLAB求解反应谱

• for T=0.0035:0.0035:7; • omiga=2*pi/T; • A=[0 1;-omiga^2 -2*kesi*omiga]; • B=[0;-1]; • C=[0 1;-omiga^2 -2*kesi*omiga]; • D=[0;-1]; • y=lsim(A,B,C,D,xg/100,t); • velocity=y(:,2); • acce1_abs=-2*kesi*omiga*velocity-y(:,1)*omiga^2; • acce2_absmax(k)=max(abs(acce1_abs))/9.8; • k=k+1; • end
. .. x ( t ) x 得出 [ A] . B x g .. . x(t ) x 2 x 2 w x g 1 0 0 [ A] 2 , B 1 2 w
同时输出变量
y Z (t ) CZ (t )
可以得出
1 0 0 0 C ,D 0 1 0 0
在实际应用中,利用lsim命令求新疆台站100条地震动, 程序如下: clc,clear; xg=xlsread('48.xls') ; n=length(xg); t=0:0.0035:(n-1)*0.0035; TA=0.0035:0.0035:7;%反应谱横坐标 kesi=0.05;k=1;
. 。 x(t ) Z (t ) .. 为原式中的
x 2 x x x g
2
..
.
..
得出
. . x ( t ) x Z (t ) .. .. . x(t ) x 2 x 2 w x g .
最新地震工程作业哈工大 MATLAB程序资料

地震工程大作业哈工大 李金平弹性反应谱原创性声明,主程序由本人独立编写完成,支持各种检验。
所选地震动RSN2345CHICHI.AT2 peer 索取号:234510203040506070-0.25-0.2-0.15-0.1-0.0500.050.10.150.20.25时间 (s)加速度 (m /s 2):位移反应谱12345678910周期T (s)位移 (m m )局部放大11.021.041.06 1.081.11.129.29.259.39.359.49.459.59.559.69.659.7周期T (s)位移 (m m )求比值123456789100.940.950.960.970.980.9911.011.021.031.04周期T (s)比值绝对加速度反应谱0.20.40.60.81 1.2 1.41.61.8200.10.20.30.40.50.60.70.80.91周期T (s)S a (m /s 2)局部放大-0.25-0.2-0.15-0.1-0.0500.050.10.150.20.250.150.20.250.30.350.40.45周期T (s)S a (m /s 2)求比值进行比较123456789100.940.950.960.970.980.9911.011.021.031.04周期T (s)比值速度反应谱1234567891000.010.020.030.040.050.060.070.080.090.1周期T (s)速度 (m/s )局部放大观察差异00.020.040.060.080.10.12-4周期T (s)速度 (m /s )求比值进行比较。
123456789100.70.80.911.11.21.3周期T (s)比值结论:对比:拟合效果非常好,短周期0s<T<0.2s误差较大,其中相对速度谱的误差较大,接近30%,加速度和位移误差都在3%以内,周期0.2s<T<10s各反应谱的误差都保持在1%以内,精度相同,猜想,两种计算程序应该用的同一种计算方法(newmark法)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
matlab地震反应谱
摘要:
I.引言
- 介绍Matlab 在地震工程领域的应用
- 介绍本文的主要内容
II.地震反应谱的计算方法
- 加载地震波数据
- 预处理地震波数据
- 计算地震波数据的频谱
- 计算地震反应谱
III.地震反应谱的分析方法
- 评估结构的地震响应特性
- 为地震工程设计提供依据
IV.结论
- 总结Matlab 在地震反应谱计算中的应用
- 展望未来可能的研究方向
正文:
Matlab 是一种功能强大的数学软件,可以用于解决各种工程和科学问题。
在地震工程领域,Matlab 可以用于计算地震反应谱,从而评估结构的地震响应。
本文将介绍如何使用Matlab 计算地震反应谱,以及如何根据反应谱分析结构的地震响应。
首先,我们需要加载地震波数据。
可以使用Matlab 内置的函数fiducial() 从文件中读取地震波数据,也可以使用自定义函数从其他来源获取数据。
接下来,我们需要对地震波数据进行预处理,以去除噪声和异常值。
可以使用Matlab 内置的函数removeoutliers() 对数据进行去噪处理。
然后,我们可以使用Matlab 内置的函数freqz() 计算地震波数据的频谱。
通过频谱,我们可以了解地震波的频率分量以及振幅。
最后,我们可以使用Matlab 内置的函数responsespectrum() 计算地震反应谱。
该函数可以根据结构的阻尼比和自振周期计算反应谱。
通过反应谱,我们可以了解结构在不同地震波作用下的加速度响应。
综上所述,Matlab 可以用于计算地震反应谱,从而评估结构的地震响应。