Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-06-02, 11:30   #1
skz2005
初级会员
 
注册日期: 2009-06-02
帖子: 5
声望力: 0
skz2005 正向着好的方向发展
酷 matlab程序错误

麻烦高手帮我看看,这个程序怎么改
function SECOND
%多层结构在顶部受到简谐振动荷载作用下的响应

M=[1,2,3,4];
M=diag(M);
K=[800,-800,0,0;-800,2400,-2400,0;0,-2400,4800,-4800;0,0,-4800,8000];
C=0.05*M+0.02*K;
beta=1/4;
dt=0.01;
K1=K+C/(2*beta*dt)+M/(beta*dt^2);
t=0;
u=[0;0;0;0];
u1=[0;0;0;0];
P=[cos(6.647*t);0;0;0];
u2=inv(K)*(P-C*u-K*u1);
A=[0,0,0,0];
B=[0,0,0,0];
D=[0,0,0,0];
for i=1:1000
t=t+dt;
PN=[cos(6.647*t);0;0;0];
dP=PN-P;
P=PN;
dP1=dP+M*(u1/(beta*dt)+u2/(2*beta))+C*(u1/(2*beta)+u2*dt*(1/(4*beta)-1));
du=inv(K1)*dP1;
du1=du/(2*beta*dt)-u1/(2*beta)-u2*dt*(0.25/beta-1);
du2=du/(beta*dt^2)-u1/(beta*dt)-u2/(2*beta);
u=du+u;
u1=du1+u1;
u2=du2+u2;
m=u';
n=u1';
q=u2';
A=cat(1,A,m);
B=cat(1,B,n);
D=cat(1,D,q);
end;
fid=fopen('output u.dat','w');
fprintf(fid,'%12.4f\r\n',A);
fid=fopen('output u1.dat','w');
fprintf(fid,'%12.4f\r\n',B);
fid=fopen('output u2.dat','w');
fprintf(fid,'%12.4f\r\n',D);
end

出来的数据结果不对,不知道哪儿错了。。。


题目:
编写用Newmark β法(或者Wilsonθ法)计算结构振动响应的程序

谢谢。

此帖于 2009-06-02 12:21 被 skz2005 编辑。
skz2005 当前离线   回复时引用此帖
旧 2009-06-02, 12:24   #2
zsy312
普通会员
 
注册日期: 2008-08-17
年龄: 43
帖子: 77
声望力: 18
zsy312 正向着好的方向发展
默认 回复: matlab程序错误

A,B,C的维数开始为1X4,第二次为1X8,此时u1,u2维数还是4X1,矩阵相乘不能衔接,不出错就怪了。
zsy312 当前离线   回复时引用此帖
旧 2009-06-02, 12:41   #3
zsy312
普通会员
 
注册日期: 2008-08-17
年龄: 43
帖子: 77
声望力: 18
zsy312 正向着好的方向发展
默认 回复: matlab程序错误

再者,第34行你的t怎么突然变成行向量了,加上第23行,PN的行列不对应,第一行是4列,其他行都是一列0,又是错误。
zsy312 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 14:56


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.