🦔

MATLABで学ぶ振動工学 1自由度モデル(不減衰)

2021/03/11に公開

はじめに


振動工学を学びはじめると必ず目にするのが、1自由度のバネマスモデルです。英語では"1 degree of freedom"と呼ぶので、略して1DOFモデルとも呼びます。他にも、スプリングマスモデルやバネ質量モデル、バネ質点モデルと呼ぶこともあります。また、「モデル」ではなく「系」と呼ぶこともあります(例えば、バネマス系)。教科書によっては統一せずに混在している場合がありますが、全て同じ意味ですので、あまり気にしないでください。

理論

マスの振動

振動理論の基本的な説明は割愛させて頂き、運動方程式だけ下記に示します。
この記事ではmは100kgとして、バネ定数kを変化させたときにどのようになるかを確認します。

(-w^2 m + k) x = F

基礎(地面)に伝搬する振動

マスが振動して、基礎に伝搬する振動を考察する際に下式を使います。

x_{st} = \frac{F}{k}
\frac{x}{x_{st}} = \frac{1}{1-(\frac{w}{w_n})^2}

プログラム

マスの振動

clear all
close all
freq=[0.01:0.0001:10];
m=100;
k=[100 1000 10000 100000];
W=sqrt(k/m);
freqN=W/(2*pi);
freq=[freq freqN];
freq=sort(freq);
x=zeros(length(k),length(freq));
w=2*pi*freq;
rgb=jet(length(k));
figure
for iik=1:length(k)
    tempXst=1/k(iik);
x(iik,:)=1./(k(iik)-w.^2*m);
loglog(freq,abs(x(iik,:)),'color',rgb(iik,:),'linewidth',3)
hold on
end
xlabel('Freq. [Hz]')
% xlabel('ω/ω_n')
% ylabel('x/x_s_t')
ylabel('x [m]')
legend('k=100[N]','k=1000[N]','k=10000[N]','k=100000[N]')

基礎(地面)に伝搬する振動

clear all
close all
freq=[0.01:0.0001:10];
m=100;
k=[100 1000 10000 100000];
W=sqrt(k/m);
freqN=W/(2*pi);
freq=[freq freqN];
freq=sort(freq);
x=zeros(length(k),length(freq));
w=2*pi*freq;
rgb=jet(length(k));
figure
for iik=1:length(k)
    tempXst=1/k(iik);
x(iik,:)=1./(k(iik)-w.^2*m);
loglog(freq,abs(x(iik,:)/tempXst),'color',rgb(iik,:),'linewidth',3)
hold on
end
xlabel('Freq. [Hz]')
% xlabel('ω/ω_n')
ylabel('x/x_s_t')
ylabel('x [m]')
legend('k=100[N]','k=1000[N]','k=10000[N]','k=100000[N]')

結果

マスの振動

基礎(地面)に伝搬する振動

この結果だけでは、「何が言いたいの?」、「何かメリットあるの?」という疑問しかありませんよ。次の記事でもう少し深堀します。

今回はこのへんでGood luck

私の個人ブログもよろしくお願いします。
https://mech-eng-uni.com/

Discussion