这是一个newmark (纽马克)计算结果动力学响应的matlab程序,计算结果大的惊人,不知道什么原因,请大家帮我看看是什么原因,谢谢!
function[Q,V,AA]=newmarkb
E=2.1e11
=7850;D1=0.405;d1=0.375;D2=0.375;d2=0.335;D3=0.335;d3=0.285;D4=0.285;d4=0.225;D5=0.225;d5=0.150;
A=(pi*(D1^2-d1^2))/4;
I=(pi*(D1^4-d1^4))/64;
M1= Mass (P,A,I,0,0,13,0);
A=(pi*(D2^2-d2^2))/4;
I=(pi*(D2^4-d2^4))/64;
M2= Mass (P,A,I,13,0,26,0);
A=(pi*(D3^2-d3^2))/4;
I=(pi*(D3^4-d3^4))/64;
M3= Mass (P,A,I,26,0,39,0);
A=(pi*(D4^2-d4^2))/4;
I=(pi*(D4^4-d4^4))/64;
M4= Mass (P,A,I,39,0,52,0);
A=(pi*(D5^2-d5^2))/4;
I=(pi*(D5^4-d5^4))/64;
M5= Mass (P,A,I,52,0,65,0);
M=zeros(18,18);
M= MAssemble(M,M1,1,2);
M= MAssemble(M,M2,2,3);
M= MAssemble(M,M3,3,4);
M= MAssemble(M,M4,4,5);
M= MAssemble(M,M5,5,6);% 整体质量矩阵
A=(pi*(D1^2-d1^2))/4;
I=(pi*(D1^4-d1^4))/64;
K1= LStiffness1 (E,A,I,0,0,13,0);
A=(pi*(D2^2-d2^2))/4;
I=(pi*(D2^4-d2^4))/64;
K2= LStiffness2 (E,A,I,13,0,26,0);
A=(pi*(D3^2-d3^2))/4;
I=(pi*(D3^4-d3^4))/64;
K3= LStiffness3 (E,A,I,26,0,39,0);
A=(pi*(D4^2-d4^2))/4;
I=(pi*(D4^4-d4^4))/64;
K4= LStiffness4 (E,A,I,39,0,52,0);
A=(pi*(D5^2-d5^2))/4;
I=(pi*(D5^4-d5^4))/64;
K5= LStiffness5 (E,A,I,52,0,65,0);
K=zeros(18,18);
K= KAssemble(K,K1,1,2);
K= KAssemble(K,K2,2,3);
K= KAssemble(K,K3,3,4);
K= KAssemble(K,K4,4,5);
K= KAssemble(K,K5,5,6);% 整体刚度矩阵
C=0.00776*M+0.00398*K; %瑞利阻尼矩阵
%newmark系数
dt=0.01;
nt=20;%计算相应时间
betae=0.25;
alfa=0.5;
a0=1/(betae*dt^2);
a1=alfa/(betae*dt);
a2=1/(betae*dt);
a3=1/(2*betae)-1;
a4=alfa/betae-1;
a5=dt/2*(alfa/betae-2);
a6=dt*(1-alfa);
a7=dt*alfa;
%系数定义完
KE=K+a0*M+a1*C;
[L,U]=lu(KE);
q=zeros(18,1);%位移初始
v=zeros(18,1);%速度初始
pp=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-100,0,100].';%载荷
a=M^(-1)*(pp-K*q-C*v);%加速度初始
Q(:,1)=q;
V(:,1)=v;
AA(:,1)=a;
PP(:,1)=pp;
for i=1:nt-1
PP(:,i+1)=PP(:,i)+M*(a0*Q(:,i)+a2*V(:,i)+a3*AA(:,i))+C*(a1*Q(:,i)+a4*V(:,i)+a5*AA(:,i));
ik=L\PP(:,i+1);
ik=U\ik;
Q(:,i+1)=L'\ik;
AA(:,i+1)=a0*(Q(:,i+1)-Q(:,i))-a2*V(:,i)-a3*AA(:,i);
V(:,i+1)=V(:,i)+a6*AA(:,i)+a7*AA(:,i+1);
end