Back-solving springs for spring-mass systems with known first mode natural frequencies

1 次查看(过去 30 天)
As the title indicates, I have a rather unique problem here. Usually, springs and masses are known and calculation is done to obtain natural frequencies, but in my case, it's the other way around. I have some unknown springs, but have the resultant natural frequencies via another means.
clear
% natural frequencies of four spring-mass systems
wn_1 = 11.47; % [hz]
wn_2 = 7.97; % [hz]
wn_3 = 8.04; % [hz]
wn_4 = 7.98; % [hz]
lamda_1 = (2*pi*wn_1)^2;
lamda_2 = (2*pi*wn_2)^2;
lamda_3 = (2*pi*wn_3)^2;
lamda_4 = (2*pi*wn_4)^2;
% four masses
m_big = 45; % [lbf-s^2/in]
m_smll = 0.01*m_big; % [lbf-s^2/in], three small masses
% M matrix
M_mat = [m_smll 0 0 0;
0 m_smll 0 0;
0 0 m_smll 0;
0 0 0 m_big];
% bunch of springs
K_1 = 1.82e05; % [lbf/in]
K_2 = 4.20e06; % [lbf/in]
K_3 = 2.20e06; % [lbf/in]
K_4 = 1.65e06; % [lbf/in]
K_5 = 9.39e05; % [lbf/in]
K_6 = 8.25e05; % [lbf/in]
K_7 = 7.32e05; % [lbf/in]
% effective springs
K_8 = (K_1^-1 + K_2^-1 + K_5^-1)^-1; % [lbf/in]
K_9 = (K_1^-1 + K_3^-1 + K_6^-1)^-1; % [lbf/in]
K_10 = (K_1^-1 + K_4^-1 + K_7^-1)^-1; % [lbf/in]
syms K_11 K_12 K_13 K_14
assume(K_11 > 0);
assume(K_12 > 0);
assume(K_13 > 0);
assume(K_14 > 0);
% det(M^-1*K - wn^2*I) = 0 where lamda = wn^2
K_surf=solve(...
det(M_mat\[K_8+K_14+K_11 -K_14 0 -K_11;
-K_14 K_9+2*K_14+K_12 -K_14 -K_12;
0 -K_14 K_10+K_14+K_13 -K_13;
-K_11 -K_12 -K_13 K_11+K_12+K_13]-lamda_1*eye(4,4))==0,...
...
det(M_mat\[K_8+K_14+K_11 -K_14 0 -K_11;
-K_14 2*K_14+K_12 -K_14 -K_12;
0 -K_14 K_14+K_13 -K_13;
-K_11 -K_12 -K_13 K_11+K_12+K_13]-lamda_2*eye(4,4))==0,...
...
det(M_mat\[K_14+K_11 -K_14 0 -K_11;
-K_14 K_9+2*K_14+K_12 -K_14 -K_12;
0 -K_14 K_14+K_13 -K_13;
-K_11 -K_12 -K_13 K_11+K_12+K_13]-lamda_3*eye(4,4))==0,...
...
det(M_mat\[K_14+K_11 -K_14 0 -K_11;
-K_14 2*K_14+K_12 -K_14 -K_12;
0 -K_14 K_10+K_14+K_13 -K_13;
-K_11 -K_12 -K_13 K_11+K_12+K_13]-lamda_4*eye(4,4))==0);
I'm basically trying to get work together "syms/solve" and "det(M^-1*K - lamda*I)=0".
Currently, the code is resulting unusable numbers.
The expected values for these springs are in the following ballparks:
K_11 = 1.0e05
K_12 = 2.0e05
K_13 = 5.0e05
K_14 = 1.0e06

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Assembly 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by