声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2080|回复: 0

[编程技巧] Newmark法求振动方程,但是一直出现错误,这个程序是参考网上...

[复制链接]
发表于 2015-5-18 19:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
clc;clear;close;
m=[106600,73500,7600,7600,73500,36600];
m=diag(m);    %质量矩阵
k=  [9.58*10^10 -3.15*10^10   0      0     0      0;
-3.15*10^10 9.43*10^10  -6.28*10^10   0     0      0;
0    -6.28*10^10 9.11*10^10  -2.83*10^10 0      0;
0     0     -2.83*10^10 9.11*10^10  -6.28*10^10  0;
0     0       0    -6.28*10^10 1.073*10^11  -4.45*10^10
0     0       0      0    -4.45*10^10 1.48*10^11];  %刚度矩阵
c=[4*exp(6) -4*exp(6) 0 0 0 0 ;
-4*exp(6) 4*exp(6) 0 0 0 0;
0 0 exp(6) -exp(6) 0 0;
0 0 -exp(6) exp(6) 0 0;
0 0 0 0 0 0;
0 0 0 0 0 0];    %阻尼矩阵
f0=1.589*10^7;
dt=0.0005;    %仿真步长
alfa=0.25;
beta=0.5;
tend=0.3
tt=0:dt:tend;

a0=1/alfa/dt/dt;
a1=beta/alfa/dt;
a2=1/alfa/dt;
a3=1/2/alfa-1;
a4=beta/alfa-1;
a5=dt/2*(beta/alfa-2);
a6=dt*(1-beta);
a7=dt*beta;
d=zeros(6,length(tt));
v=zeros(6,length(tt));
a=zeros(6,length(tt));
d(:,1)=[0,0,0,0,0,0]';
v(:,1)=[0,0,0,0,0,0]';
a(:,1)=[0,0,0,0,0,0]';
for i=1:length(tt);
f(:,i)=[f0*sin(500*tt),0,0,0,0,0]';
end

for i=2:length(tt);
ke=k+a0*m+a1*c;
fe(:,i-1)=f(:,i)+m*(a0*d(:,i-1)+a2*v(:,i-1)+a3*a(:,i-1))+c*(a1*d(:,i-1)+a4*v(:,i-1)+a5*a(:,i-1));
d(:,i)=inv(ke)*fe(:,i);
a(:,i)=a0*(d(:,i)-d(:,i-1))-a2*v(:,i-1)-a3*a(:,i-1);
v(:,i)=v(:,i-1)+a6*a(:,i-1)+a7*a(:,i);
end
plot(t,d)

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-3 07:37 , Processed in 0.107335 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表