資源描述:
《基于MATLAB實現(xiàn)對結構動力響應的幾種算法的驗證》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、.基于MATLAB實現(xiàn)對結構動力響應的幾種算法的驗證1.算例首先,本文給出一算例,結構在外力諧振荷載P(t)=P0sinθt作用下,分別利用理論解法,杜哈梅積分,Wilson-θ法求出該結構的位移時程反應。其中:m=3.5×103kg,P0=1.0×104N,k=1.3584515×107,ξ=0.05,θ=52.3s?1,ω=62.3s?1,?=ω1-ξ2=62.222,初始位移、速度v(0)=0,v(0)=0;2.算法驗證2.1理論解法運動方程為:mv+cv+kv=sin由線性代數(shù)解出其理論解為:由于初始位移v(0)=0,v(0)=0;則:v(t)=1.05269898
2、×[6.230cos62.222t?18.106sin62.222t]+2.012808757?[1146sin52.3t?325.829cos52.3t]可以用MATLAB進行編程分析,畫圖位移時程圖,詳細程序見附錄。2.2Wilson-法Wilson-法是Wilson于1966年基于線性加速度法的基礎上提出一種無條件收斂的計算方法。該方法假定在word范文.時程步長內,體系的加速度反應按線性變化。對于地震持續(xù)時間內的每一個微小時段,從第一時段開始到最后一個時段,逐一的重復以下計算步驟,即得到結構地震反應的全過程。下面以第i+1時段()為例:2.3杜哈梅積分杜哈梅積分在考
3、慮阻尼的情況是:可以用MATLAB進行編程分析,畫圖位移時程圖,詳細程序見附錄。word范文.3.位移時程反應對比分析利用MATLAB將理論解法,杜哈梅積分,Wilson-θ法求解出來的位移時程反應畫在同一張圖中,進行比較分析。從圖中可以看出,以上三種方法得出來的位移時程曲線基本吻合,誤差基本保持在5%以內,所以以上幾種方法在求解相關問題上都具有一定的作用效力。4.結論本文通過一個簡單的單自由度系統(tǒng)動力分析算例(僅作位移分析,其它分析雷同),基于MATLAB,將理論解法,杜哈梅積分法,逐步積分法(本文采用Wilson-θ法)進行相互驗證,從最后的位移分析圖對比上,可以很好的
4、看出三種方法均能很好的彼此驗證,從而說明了三種方法在相關問題上的作用效力。附錄:MATLAB源程序word范文.%理論解,杜哈梅積分,Wilson-θ法程序clc;clearh1=figure(8);set(h1,'color','w')%理論解法t=0:0.01:1;v=1.05269898*10^(-4)*exp(-3.115*t).*(6.230*cos(62.222*t)-18.106*sin(62.222*t))+2.012808757*10^(-6)*(1146*sin(52.3*t)-325.829*cos(52.3*t));plot(t,v,'k')hold
5、on%杜哈梅積分法aa=1;%輸入時間長度bb=0.01;%輸入精度t=bb:bb:aa;t1=t;theta=52.3;%輸入荷載頻率w=62.3;%輸入自振頻率m=3500;%輸入質量p0=10000;%輸入荷載幅值p0=p0*ones(1,aa/bb);p=p0.*sin(theta*t);%荷載函數(shù)fori=1:(aa/bb)forj=1:icanshu1(j)=p(j)/(m*w)*bb*sin(w*(t(i)-t1(j)));%杜哈梅積分中的被積函數(shù)endy(i)=sum(canshu1);%%位移值endfori=1:aa/bb-1v1(i)=(y(i+1)-
6、y(i))/bb;%計算速度endfori=1:(aa/bb-2)a(i)=(v1(i+1)-v1(i))/bb;%計算加速度endholdonplot(t,y,'r')%畫位移圖holdon%Wilson-θ法dt=0.01;ct=1.4;ndzh=100;k=13584515;word范文.c=21805;t=0:dt:ndzh*dt;ag=10000*sin(52.3*t);ag1=ag(1:ndzh);ag2=ag(2:ndzh+1);agtao=ct*(ag2-ag1);wyi1=0;sdu1=0;jsdu1=0;wyimt=0;sdumt=0;jsdumt=0;
7、fori=1:ndzhkxin=k+(3/(ct*dt))*c+(6/(ct*ct*dt*dt))*m;%kxin為新的剛度dpxin=-m*agtao(i)+m*(6/(ct*dt)*sdu1+3*jsdu1)+c*(3*sdu1+ct*dt/2*jsdu1);%新的力增量dxtao=kxindpxin;dtjsdu=6*dxtao/(ct*(ct^2*dt^2))-6*sdu1/(ct*ct*dt)-(3/ct)*jsdu1;jsdu=jsdu1+dtjsdu;dtsdu=(dt/2)*(jsdu+jsdu1