Error finding the natural frequency of a cantilever beam

조회 수: 2 (최근 30일)
Pedro Pires
Pedro Pires 2017년 1월 4일
댓글: Pedro Pires 2017년 1월 5일
Hi, I currently have an assignment where I have to find the 6 first natural frequencies of a cantilever beam. I've writen the code but I get the error shown bellow and would like to ask for some hints on the matter. I started by finding the stifness and mass matrix and then turn them to the global matrixes. I don't know however how to get the reduced matrixes and I think that's the problem with code although I'm not sure if the eig of the inverted matrix will give me what I need. The cross section is a hollow square and the thickness reduces along the lenght Thank you
Warning: Matrix is singular to working precision.
> In trab2 (line 228) %T=inv(mred)*kred;
Error using eig
Input to EIG must not contain NaN or Inf.
Error in trab2 (line 230) [V,D]=eig(T);
E = 70e+6; %[Pa] Young module
L = 5; %[m] length
h= 0.12; %[m] cross section width
b = 0.12; %[m] cross section hight
nel = 32; %nr of elements
t_0 = 0.005; %inital thickness
t_1 = 0.0003; %final thickness
rho=2700; %density
%(distance between nodes)
dt = L/nel;
% Cálculo de numero de nós (nr of nodes)
n_node = nel+1;
% position of the nodes
for i=1:n_node;
xe_coord(i) = (i-1)*dt;
end
% Cálculo da espessura da viga (beam thickness)
for i=1:nel+1;
t(i) = t_0 - t_1*xe_coord(i);
end
%(element thickness)
for i=1:nel;
xe_t(i)=(t(i)+t(i+1))/2;
end
% (Inercia)
for i=1:nel;
I_el(i)=((b*h^3)/12.0)-((b-2*xe_t(i))*(h-2*xe_t(i))^3)/12.0;
end
for i=1:nel;
A(i)=b*h-(b-2*t(i))*(h-2*t(i)); %Area of cross section
end
% (Stifness matrix)
for i = 1:nel;
k_el(1,1,i) = I_el(i)*6.0;
k_el(1,2,i) = I_el(i)*(-3.0*dt);
k_el(1,3,i) = I_el(i)*(-6.0);
k_el(1,4,i) = I_el(i)*(-3.0*dt);
k_el(2,1,i) = I_el(i)*(-3.0*dt);
k_el(2,2,i) = I_el(i)*(2.0*dt^2);
k_el(2,3,i) = I_el(i)*(3.0*dt);
k_el(2,4,i) = I_el(i)*(dt^2);
k_el(3,1,i) = I_el(i)*(-6.0);
k_el(3,2,i) = I_el(i)*(3.0*dt);
k_el(3,3,i) = I_el(i)*6.0;
k_el(3,4,i) = I_el(i)*(3.0*dt);
k_el(4,1,i) = I_el(i)*(-3.0*dt);
k_el(4,2,i) = I_el(i)*(dt^2);
k_el(4,3,i) = I_el(i)*(3.0*dt);
k_el(4,4,i) = I_el(i)*(2.0*dt^2);
end
%Matriz Rigidez de um elemento finito unidimensional arbitrário (
k_el=2*E/dt^3*k_el;
% CALCULO DA MATRIZ DE MASSA DOS ELEMENTOS (Mass Matrix)
for i = 1:nel;
m_el(1,1,i) = A(i)*156;
m_el(1,2,i) = A(i)*(-22)*dt;
m_el(1,3,i) = A(i)*54;
m_el(1,4,i) = A(i)*13*dt;
m_el(2,1,i) = A(i)*(-22*dt);
m_el(2,2,i) = A(i)*4*dt^2;
m_el(2,3,i) = A(i)*(-13)*dt;
m_el(2,4,i) = A(i)*(-3)*dt^2;
m_el(3,1,i) = A(i)*54;
m_el(3,2,i) = A(i)*(-13)*dt;
m_el(3,3,i) = A(i)*156;
m_el(3,4,i) = A(i)*4*dt^2;
m_el(4,1,i) = A(i)*13*dt;
m_el(4,2,i) = A(i)*(-3)*dt^2;
m_el(4,3,i) = A(i)*22*dt;
m_el(4,4,i) = A(i)*4*dt^2;
end
m_el=rho*dt/420*m_el;
%Matrizes Globais (Global Matrixes)
k_glob=zeros(2*nel+2,2*nel+2);
for i=1:nel;
k_glob(2*i-1,2*i-1) = k_glob(2*i-1,2*i-1)+k_el(1,1,i);
k_glob(2*i-1,2*i) = k_glob(2*i-1,2*i)+k_el(1,2,i);
k_glob(2*i-1,2*i+1) = k_glob(2*i-1,2*i+1)+k_el(1,3,i);
k_glob(2*i-1,2*i+2) = k_glob(2*i-1,2*i+2)+k_el(1,4,i);
k_glob(2*i,2*i-1) = k_glob(2*i,2*i-1)+k_el(2,1,i);
k_glob(2*i,2*i) = k_glob(2*i,2*i)+k_el(2,2,i);
k_glob(2*i,2*i+1) = k_glob(2*i,2*i+1)+k_el(2,3,i);
k_glob(2*i-2*i+2) = k_glob(2*i,2*i+2)+k_el(2,4,i);
k_glob(2*i+1,2*i-1) = k_glob(2*i+1,2*i-1)+k_el(3,1,i);
k_glob(2*i+1,2*i) = k_glob(2*i+1,2*i)+k_el(3,2,i);
k_glob(2*i+1,2*i+1) = k_glob(2*i+1,2*i+1)+k_el(3,3,i);
k_glob(2*i+1,2*i+2) = k_glob(2*i+1,2*i+2)+k_el(3,4,i);
k_glob(2*i+2,2*i-1) = k_glob(2*i+2,2*i-1)+k_el(4,1,i);
k_glob(2*i+2,2*i) = k_glob(2*i+2,2*i)+k_el(4,2,i);
k_glob(2*i+2,2*i+1) = k_glob(2*i+2,2*i+1)+k_el(4,3,i);
k_glob(2*i+2,2*i+2) = k_glob(2*i+2,2*i+2)+k_el(4,4,i);
end
m_glob=zeros(2*nel+2,2*nel+2);
for i=1:nel;
m_glob(2*i-1,2*i-1) = m_glob(2*i-1,2*i-1)+m_el(1,1,i);
m_glob(2*i-1,2*i) = m_glob(2*i-1,2*i)+m_el(1,2,i);
m_glob(2*i-1,2*i+1) = m_glob(2*i-1,2*i+1)+m_el(1,3,i);
m_glob(2*i-1,2*i+2) = m_glob(2*i-1,2*i+2)+m_el(1,4,i);
m_glob(2*i,2*i-1) = m_glob(2*i,2*i-1)+m_el(2,1,i);
m_glob(2*i,2*i) = m_glob(2*i,2*i)+m_el(2,2,i);
m_glob(2*i,2*i+1) = m_glob(2*i,2*i+1)+m_el(2,3,i);
m_glob(2*i-2*i+2) = m_glob(2*i,2*i+2)+m_el(2,4,i);
m_glob(2*i+1,2*i-1) = m_glob(2*i+1,2*i-1)+m_el(3,1,i);
m_glob(2*i+1,2*i) = m_glob(2*i+1,2*i)+m_el(3,2,i);
m_glob(2*i+1,2*i+1) = m_glob(2*i+1,2*i+1)+m_el(3,3,i);
m_glob(2*i+1,2*i+2) = m_glob(2*i+1,2*i+2)+m_el(3,4,i);
m_glob(2*i+2,2*i-1) = m_glob(2*i+2,2*i-1)+m_el(4,1,i);
m_glob(2*i+2,2*i) = m_glob(2*i+2,2*i)+m_el(4,2,i);
m_glob(2*i+2,2*i+1) = m_glob(2*i+2,2*i+1)+m_el(4,3,i);
m_glob(2*i+2,2*i+2) = m_glob(2*i+2,2*i+2)+m_el(4,4,i);
end
%reduced matrixes
kred=zeros(2*nel,2*nel);
for i=1:2*nel;
for j=1,2*nel;
kred(i,j) = k_glob(i+2,j+2);
end
end
mred=zeros(2*nel,2*nel);
for i=1:2*nel;
for j=1,2*nel;
mred(i,j) = m_glob(i+2,j+2);
end
end
T=inv(mred)*kred;
[V,D]=eig(T);

채택된 답변

KSSV
KSSV 2017년 1월 5일
  댓글 수: 1
Pedro Pires
Pedro Pires 2017년 1월 5일
Thank you for the help. I will try to adapt my code based on what you made.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Acoustics, Noise and Vibration에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by