用matlab如何求系统响应,用Newmark方法计算系统的动力学响应的matlab程序

请大家帮忙看看这个程序有什么问题?用Newmark方法计算系统的动力学响应,结果大的惊人。

function[Q,V,AA]=newmarkb

E=2.1e11;P=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);

t=0;

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值