- 积分
- 0
- 注册时间
- 2012-10-9
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2012-12-29 14:34:49
|
显示全部楼层
来自 湖南长沙
请问若是更多自由度,且质量矩阵不为对角阵
我将楼主的程序稍微变了下,可是得出了这样的结果- k=sysK;% K ----- 调用刚度矩阵
- m=sysM; % M ----- 调用质量矩阵
- c=zeros(51,51);
- x0=zeros(51,1);
- x0(1:51,1)=1;
- v0=zeros(51,1);
- v0(1:51,1)=1;
- f=zeros(51,1);
-
- m1=inv(m);
- [E,F]=eig(m1*k);
- fn=diag(sqrt(F));%计算固有频率
-
- beta=1/6;
- tf=20;
- deltt=0.01;
- md=inv(m+deltt/2*c+beta*deltt^2*k);
- for t=0:deltt:tf;
- f(1:51,1)=2*sin(3.754*t);
- % f=[2*sin(3.754*t) -2*cos(2.2*t) 1.0*sin(2.8*t)]';
- if t==0; %(line 16)
- xdd0=m1*(f-k*x0-c*v0);%计算初始加速度
- else
- xdd=md*(f-c*(v0+deltt/2*xdd0)-k*(x0+deltt*v0+(1/2-beta)*deltt^2*xdd0));%计算加速度
- xd=v0+deltt/2*(xdd0+xdd);%计算速度
- x=x0+deltt*v0+deltt^2/2*xdd0+beta*deltt^3*(xdd-xdd0)/deltt;%计算位移
- xdd0=xdd;v0=xd;x0=x;
- fprintf(fid1,'%10.4f',x0);%向文件中写数据
- t %显示计算时间步长
- end
- end
- fid2=fopen('disp','rt');%打开disp.dat文件
- n=tf/deltt;%disp.dat文件中位移的个数
- x=fscanf(fid2,'%f',[3,n]);%将disp.dat文件中的位移写成矩阵
- t=1:n;
- figure('numbertitle','off','name','point1 displacement','pos',[450 180 400 420]);
- plot(t,x(1,t)),grid,xlabel('time*0.1s'),title('点1的位移与时间的关系');
- figure('numbertitle','off','name','point2 displacement','pos',[350 160 400 420]);
- plot(t,x(2,t)),grid,xlabel('time*0.1s'),title('点2的位移与时间的关系');
- figure('numbertitle','off','name','point3 displacement','pos',[250 140 400 420]);
- plot(t,x(3,t)),grid,xlabel('time*0.1s'),title('点3的位移与时间的关系');
复制代码 望高手解答!不胜感激! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|