悬臂梁的振动问题(微分求积法求解悬臂梁自由振动程序)
Posted
篇首语:知识就是飞上天的羽翼。本文由小常识网(cha138.com)小编为大家整理,主要介绍了悬臂梁的振动问题(微分求积法求解悬臂梁自由振动程序)相关的知识,希望对你有一定的参考价值。
悬臂梁的振动问题(微分求积法求解悬臂梁自由振动程序)
微分求积法(简称DQM)是Bellman等人于上世纪70年代初提出的一种新的数值计算方法。这种算法由于不依赖泛函和变分原理,具有数学原理简单、计算精度高,计算量和内存需求小。微分求积法从提出至今,由于其具有计算量小和精度高等优点而不断受到重视,目前对该数值方法本身的研究尽管已经相当成熟。给大家分享一个Matlab实现悬臂梁自由振动的小程序,帮助大家学习微分微分求积法。
clear
digits()
u=i; %保留虚数
N=15; %节点数
X=[]; %离散的横坐标
R=[]; %DQ中的Rij
RR=[]; %用于计算R的中间矩阵
for i=1:N
X(i)=0.5*(1-cos(pi*(i-1)/(N-1)));
end
%建立RR和R
for i=1:N
for j=1:N
if i~=j
RR(i,j)=X(i)-X(j);
else
RR(i,j)=1; %建立完RR
end
end
end
R=prod(RR,2); %建立完R,矩阵按行排列
%建立C1
for i=1:N
for j=1:N
if i~=j
C1(i,j)=R(i)/((X(i)-X(j))*R(j));
else
C1(i,j)=0;
end
end
end
for i=1:N
C1(i,i)=-sum(C1(i,:));
end %建立完C1
% RR
% R
% C1
%建立C2
for i=1:N
for j=1:N
C2(i,j)=C1(i,:)*C1(:,j);
end
end %建立完C2
%建立C3
for i=1:N
for j=1:N
C3(i,j)=C2(i,:)*C1(:,j);
end
end %建立完C3
%建立C4
for i=1:N
for j=1:N
C4(i,j)=C3(i,:)*C1(:,j);
end
end %建立完C4
% %建立C5
% for i=1:N
% for j=1:N
% C5(i,j)=C4(i,:)*C1(:,j);
% end
% end %建立完C5
% %建立C6
% for i=1:N
% for j=1:N
% C6(i,j)=C5(i,:)*C1(:,j);
% end
% end %建立完C6
K=C4(3:(N-2),1:(N-2));
K=[K(:,1:2),C4(3:(N-2),(N-1):N),K(:,3:end)];
K4=C3(N:N,1:(N-2)); %用于形成新K的第4行
K4=[K4(:,1:2),C3(N:N,(N-1):N),K4(:,3:end)];
K3=C2(N:N,1:(N-2)); %用于形成新K的第3行
K3=[K3(:,1:2),C2(N:N,(N-1):N),K3(:,3:end)];
K2=C1(1:1,1:(N-2)); %用于形成新K的第2行
K2=[K2(:,1:2),C1(1:1,(N-1):N),K2(:,3:end)];
K1=zeros(1,N);
K1(1,1)=1; %用于形成K的第1行
K=[K1;K2;K3;K4;K];
Sbb=K(1:4,1:4);
Sbb=inv(Sbb); %考虑求Sbb的逆
Sbd=K(1:4,5:end);
Sdb=K(5:end,1:4);
Sdd=K(5:end,5:end);
S=-Sdb*Sbb*Sbd+Sdd;
lambda=eig(S); %考虑求S的特征值
w=sqrt(sqrt(lambda));
w=sort(w)
相关参考