MATLAB在單自由度振動的應用?

利用MATLAB數學軟體,形象,圖形化的學習單自由度振動問題,這比純書本或者課堂學習更加有趣,這樣還可以學習MATLAB,增強學生程式設計能力。

MATLAB在單自由度振動的應用

工具/原料

振動力學課本、電腦、MATLAB

方法/步驟

問題:

一單自由度系統,固有頻率wn=1,初始條件,y0=1,v0=5,系統的阻尼大小可變,討論系統在過阻尼、小阻尼和無阻尼情況下的自由振動。

MATLAB在單自由度振動的應用

分析1:

當系統的阻尼為0,稱為無阻尼,此時系統的振動響應如下圖公式所示:

MATLAB在單自由度振動的應用

分析2:

當系統的阻尼比介於0~1之間,稱為小阻尼,此時系統的振動響應如下圖公式所示:

MATLAB在單自由度振動的應用

分析3:

當系統的阻尼比大於1,稱為過阻尼,此時系統的振動響應如下圖公式所示:

MATLAB在單自由度振動的應用

MATLAB計算

假設:過阻尼時阻尼比為1.5,過阻尼時阻尼比為0.5,無阻尼時阻尼比為0,則MATLAB計算命令如下所示:

clear

t=0:0.01:20;

wn=5;y0=1;v0=5;

%%阻尼比znb=0時,計算無阻尼響應

znb=0;

A1=sqrt(y0^2+(v0/wn)^2);

phi1=atan(v0/(y0*wn));

y1=A1*cos(wn*t-phi1);

subplot(3,1,1);

plot(t,y1);

ylabel('{\ity}_1');

grid on

%%阻尼比znb=0.1時,計算小阻尼響應

znb=0.1;

wd=wn*sqrt(1-znb^2);

A2=sqrt(y0^2+(v0+znb*wn*y0)^2/wn^2);

phi2=atan(v0+znb*wn*y0)/(y0*wd);

y2=A2*exp(-znb*wn*t)*diag(cos(wd*t-phi2));%使用diag函式生成對角陣滿足矩陣乘法運算。

subplot(3,1,2);

plot(t,y2);

ylabel('{\ity}_2');

grid on

%%阻尼比znb=1.5時,計算過阻尼響應

znb=1.5;

r1=(-znb+sqrt(znb^2-1))*wn;

r2=(-znb-sqrt(znb^2-1))*wn;

A=(v0-r2*y0)/(r1-r2);

B=(v0-r1*y0)/(r2-r1);

y3=A*exp(r1*t)+B*exp(r2*t);

subplot(3,1,3);

plot(t,y3);

ylabel('{\ity}_3');

xlabel('{\itt}');

grid on

MATLAB在單自由度振動的應用

MATLAB在單自由度振動的應用

MATLAB在單自由度振動的應用

注意事項

MATLAB計算要滿足矩陣乘法規則,否則程式會出現錯誤。

寫命令時,可以新增必要的註釋,便於命令的清晰化

相關問題答案