Clear Filters
Clear Filters

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

1 view (last 30 days)
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

Answers (0)

Community Treasure Hunt

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

Start Hunting!