Back-solving springs for spring-mass systems with known first mode natural frequencies
1 view (last 30 days)
Show older comments
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 Comments
Answers (0)
See Also
Categories
Find more on Assembly in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!