收藏 分销(赏)

动力学第三章.doc

上传人:丰**** 文档编号:4361195 上传时间:2024-09-13 格式:DOC 页数:12 大小:53KB
下载 相关 举报
动力学第三章.doc_第1页
第1页 / 共12页
动力学第三章.doc_第2页
第2页 / 共12页
点击查看更多>>
资源描述
第2章 function VTB2(m,c,k,x0,v0,tf,w,f0) %单自由度系统得谐迫振动 clc wn=sqrt(k/m); z=c/2/m/wn; lan=w/wn wd=wn*sqrt(1-z^2); A=sqrt(((v0+z*wn*x0)^2+(x0*wd)^2)/wd^2); t=0:tf/1000:tf; phi1=atan2(x0*wd,v0+z*wn*x0); phi2=atan2(2*z*lan,1-lan^2); B=wn^2*f0/k/sqrt((wn^2-w^2)^2+(2*z*wn*w)^2); x=A*exp(-z*wn*t)、*sin(sqrt(1-z^2)*wn*t+phi1)+B*sin(w*t-phi2); plot(t,x),grid xlabel('时间(s)') ylabel('位移') title('位移与时间得关系') function VTB1(m,c,k,x0,v0,tf) %VTB1用来计算单自由度有阻尼自由振动系统得响应 %VTB1绘出单自由度有阻尼自由振动系统得响应图 %m为质量;c为阻尼;k为刚度;x0为初始位移;v0为初始速度;tf为仿真时间 %VTB1(zeta,w,x0,v0,tf)绘出单自由度有阻尼自由振动系统得响应图 %程序中z为阻尼系数ξ;wn为固有频率ωn;A为振动幅度;phi为初相位θ clc wn=sqrt(k/m); z=c/2/m/wn; wd=wn*sqrt(1-z^2); fprintf('固有频率为%、3g、rad/s、\n',wd); fprintf('阻尼系数为%、3g、\n',z); fprintf('有阻尼得固有频率为%、3g、rad/s、\n',wd); t=0:tf/1000:tf; if z<1 A=sqrt(((v0+z*wn*x0)^2+(x0*wd)^2)/wd^2); phi=atan2(x0*wd,v0+z*wn*x0) x=A*exp(-z*wn*t)、*sin(wd*t+phi); fprintf('A=%、3g\n',A); elseif z==1 a1=x0; a2=v0+wn*x0; fprintf('a1=%、3g\n',a1); fprintf('a2=%、3g\n',a2); x=(a1+a2*t)、*exp(-wn*t); else a1=(-v0+(-z+sqrt(z^2-1))*wn*x0)/2/wn/sqrt(z^2-1); a2=(v0+(z+sqrt(z^2-1))*wn*x0)/2/wn/sqrt(z^2-1); fprintf('a1=%、3g\n',a1); fprintf('a2=%、3g\n',a2); x=exp(-z*wn*t)、*(a1*exp(-wn*sqrt(z^2-1)*t)+a2*exp(wn*sqrt(z^2-1)*t)); end plot(t,x),grid xlabel('时间(s)') ylabel('位移') title('位移与时间得关系') function jzdd %矩阵迭代法求系统得三阶固有频率与主阵型 clear all close all fid1=fopen('A-1','wt'); %建立主振型文件 fid2=fopen('B-1','wt'); %建立固有频率文件 %输入质量矩阵 M(1,1)=2; M(2,2)=1、5; M(3,3)=1; %输入刚度矩阵 K(1,1)=5;K(1,2)=-2;K(2,1)=-2;K(2,2)=3;K(2,3)=-1;K(3,2)=-1;K(3,3)=1 %计算特征值与特征向量 D=inv(K)*M; %原始动力矩阵 A=ones(3,1); %初始振型 for i=1:3 %计算三阶固有频率与主振型 pp0=0; i B=D*A; pp=1、0/B(3); %B(3)为B中得最后一个元素 A=B/B(3); while abs((pp-pp0)/pp)>1、e-6 pp0=pp; B=D*A; pp=1、0/B(3); A=B/B(3); end f=sqrt(pp)/2/pi %固有频率单位转换为Hz fprintf(fid1,'%20、5f',A); %输入主振型数据 fprintf(fid2,'%20、5f',f); %输入固有频率数据 D=D-A*A'*M/(A'*M*A*pp); end fid1=fopen('A-1','rt'); %打开主振型文件 A=fscanf(fid1,'%f',[3,3]) %主振型写成矩阵 fid2=fopen('B-1','rt'); %打开固有频率文件 f=fscanf(fid2,'%f',[3,1]) %固有频率写成矩阵 t=1:3; h1=figure('numbertitle','off','name','0','pos',[50 200 420 420]); bar(t,f(t,1)),xlabel('频率阶级次'),ylabel('Hz'), title('固有频率'),hold on,grid h1=figure('numbertitle','off','name','1','pos',[50 200 420 420]); bar(t,A(t,1)),xlabel('自由度(质量块)'),ylabel('振型向量'), title('1阶主振型'),hold on,grid pause(0、1) h1=figure('numbertitle','off','name','2','pos',[50 200 420 420]); bar(t,A(t,2)),xlabel('自由度(质量块)'),ylabel('振型向量'), title('2阶主振型'),hold on,grid pause(0、1) h1=figure('numbertitle','off','name','3','pos',[50 200 420 420]); bar(t,A(t,3)),xlabel('自由度(质量块)'),ylabel('振型向量'), title('3阶主振型'),hold on,grid pause(0、1) end %chuandijuzhen、m; %传递矩阵方法求固有频率 clear all,clear close J1=1;J2=1;J3=2; k2=1100000;k3=1200000;k4=100000; fid=fopen('chuandi','wt'); %建立(打开)速度文件 M1L=0; for WN=0:0、01:2000 shita1R=1;M1R=-WN^2*J1; shita2R=shita1R+1/k2*M1R;M2R=shita1R*(-WN^2*J2)+(1+(-WN^2*J2)/k2)*M1R; shita3R=shita2R+1/k3*M2R;M3R=shita2R*(-WN^2*J3)+(1+(-WN^2*J3)/k3)*M2R; shita4R=shita3R+1/k4*M3R; if abs(shita4R)<0、005 WN %搜索到得固有频率(rad/s),并显示 shita=[shita1R;shita2R;shita3R;shita4R];%搜索到振型,并显示 bar(shita),xlabel('对应得质量块'),ylabel('振型向量') pause(1、0) end fprintf(fid,'%30、15f',shita4R); end fid=fopen('chuandi','rt'); x=fscanf(fid,'%f',[1,200001]); t=1:200001; plot(0、01*t,x);grid,xlabel('频率rad/s'),ylabel('第四个质量块得转角(rad/s)'),title('用传递矩阵法求固有频率') function cdjz2 %chuandijuzhen、m; %传递矩阵方法求固有频率 clear all,clear close J1=0、5;J2=1; k2=100000;k3=100000; fid=fopen('chuandi3','wt'); %建立(打开)速度文件 M1L=0; for WN=0:0、01:2000 shita1R=1;M1R=-WN^2*J1; shita2R=shita1R+1/k2*M1R;M2R=shita1R*(-WN^2*J2)+(1+(-WN^2*J2)/k2)*M1R; shita3R=shita2R+1/k3*M2R; if abs(shita3R)<0、005 WN %搜索到得固有频率(rad/s),并显示 shita=[shita1R;shita2R;shita3R;] %搜索到振型,并显示 bar(shita),xlabel('对应得质量块'),ylabel('振型向量') pause(1、0) end fprintf(fid,'%30、15f',shita3R); end fid=fopen('chuandi3','rt'); x=fscanf(fid,'%f',[1,200001]); t=1:200001; plot(0、01*t,x);grid,xlabel('频率rad/s'),ylabel('第四个质量块得转角(rad/s)'),title('用传递矩阵法求固有频率') function zuoye8 %矩阵迭代法求系统得三阶固有频率与主阵型 clear all close all fid1=fopen('A-2','wt'); %建立主振型文件 fid2=fopen('B-2','wt'); %建立固有频率文件 %输入质量矩阵 M(1,1)=1; M(2,2)=1; M(3,3)=1; %输入刚度矩阵 K(1,1)=2;K(1,2)=-1;K(2,1)=- 1;K(2,2)=2;K(2,3)=- 1;K(3,2)=- 1;K(3,3)= 1 %计算特征值与特征向量 D=inv(K)*M; %原始动力矩阵 A=ones(3,1); %初始振型 for i=1:3 %计算三阶固有频率与主振型 pp0=0; i B=D*A; pp=1、0/B(3); %B(3)为B中得最后一个元素 A=B/B(3); while abs((pp-pp0)/pp)>1、e-6 pp0=pp; B=D*A; pp=1、0/B(3); A=B/B(3); end f=sqrt(pp) fprintf(fid1,'%20、5f',A); %输入主振型数据 fprintf(fid2,'%20、5f',f); %输入固有频率数据 D=D-A*A'*M/(A'*M*A*pp); end fid1=fopen('A-2','rt'); %打开主振型文件 A=fscanf(fid1,'%f',[3,3]) %主振型写成矩阵 fid2=fopen('B-2','rt'); %打开固有频率文件 f=fscanf(fid2,'%f',[3,1]) %固有频率写成矩阵 t=1:3; h1=figure('numbertitle','off','name','0','pos',[50 200 420 420]); bar(t,f(t,1)),xlabel('频率阶级次'),ylabel('Hz'), title('固有频率'),hold on,grid h1=figure('numbertitle','off','name','1','pos',[50 200 420 420]); bar(t,A(t,1)),xlabel('自由度(质量块)'),ylabel('振型向量'), title('1阶主振型'),hold on,grid pause(0、1) h1=figure('numbertitle','off','name','2','pos',[50 200 420 420]); bar(t,A(t,2)),xlabel('自由度(质量块)'),ylabel('振型向量'), title('2阶主振型'),hold on,grid pause(0、1) h1=figure('numbertitle','off','name','3','pos',[50 200 420 420]); bar(t,A(t,3)),xlabel('自由度(质量块)'),ylabel('振型向量'), title('3阶主振型'),hold on,grid pause(0、1) end function zuoye9 %矩阵迭代法求系统得三阶固有频率与主阵型 clear all close all fid1=fopen('A-3','wt'); %建立主振型文件 fid2=fopen('B-3','wt'); %建立固有频率文件 %输入质量矩阵 M(1,1)=4; M(2,2)=2; M(3,3)=1; %输入刚度矩阵 K(1,1)=4;K(1,2)=-1;K(2,1)=- 1;K(2,2)=2;K(2,3)=- 1;K(3,2)=- 1;K(3,3)= 1 %计算特征值与特征向量 D=inv(K)*M; %原始动力矩阵 U=inv(K) A=ones(3,1); %初始振型 for i=1:3 %计算三阶固有频率与主振型 pp0=0; i B=D*A; pp=1、0/B(1); %B(1)为B中得第一个元素 A=B/B(1); while abs((pp-pp0)/pp)>1、e-6 pp0=pp; B=D*A; pp=1、0/B(1); A=B/B(1); end f=sqrt(pp) fprintf(fid1,'%20、5f',A); %输入主振型数据 fprintf(fid2,'%20、5f',f); %输入固有频率数据 D=D-A*A'*M/(A'*M*A*pp); end fid1=fopen('A-3','rt'); %打开主振型文件 A=fscanf(fid1,'%f',[3,3]) %主振型写成矩阵 fid2=fopen('B-3','rt'); %打开固有频率文件 f=fscanf(fid2,'%f',[3,1]) %固有频率写成矩阵 t=1:3; h1=figure('numbertitle','off','name','0','pos',[50 200 420 420]); bar(t,f(t,1)),xlabel('频率阶级次'),ylabel('Hz'), title('固有频率'),hold on,grid h1=figure('numbertitle','off','name','1','pos',[50 200 420 420]); bar(t,A(t,1)),xlabel('自由度(质量块)'),ylabel('振型向量'), title('1阶主振型'),hold on,grid pause(0、1) h1=figure('numbertitle','off','name','2','pos',[50 200 420 420]); bar(t,A(t,2)),xlabel('自由度(质量块)'),ylabel('振型向量'), title('2阶主振型'),hold on,grid pause(0、1) h1=figure('numbertitle','off','name','3','pos',[50 200 420 420]); bar(t,A(t,3)),xlabel('自由度(质量块)'),ylabel('振型向量'), title('3阶主振型'),hold on,grid pause(0、1) end function cdjz2 %chuandijuzhen、m; %传递矩阵方法求固有频率 clear all,clear close J1=0、5;J2=1; k2=10000;k3=10000; fid=fopen('chuandi3','wt'); %建立(打开)速度文件 M1L=0; for WN=0:0、01:2000 shita1R=1;M1R=-WN^2*J1; shita2R=shita1R+1/k2*M1R;M2R=shita1R*(-WN^2*J2)+(1+(-WN^2*J2)/k2)*M1R; shita3R=shita2R+1/k3*M2R; if abs(shita3R)<0、005 WN %搜索到得固有频率(rad/s),并显示 shita=[shita1R;shita2R;shita3R;] %搜索到振型,并显示 bar(shita),xlabel('对应得质量块'),ylabel('振型向量') pause(1、0) end fprintf(fid,'%30、15f',shita3R); end fid=fopen('chuandi3','rt'); x=fscanf(fid,'%f',[1,200001]); t=1:200001; plot(0、01*t,x);grid,xlabel('频率rad/s'),ylabel('第三个质量块得转角(rad/s)'),title('用传递矩阵法求固有频率') 第3章 function vtb3(m,c,k,x0,v0,tf,w,f0,delt) %用欧拉法计算单自由度系统谐迫振动响应 wn=sqrt(k/m); %计算固有频率 fid1=fopen('disp','wt'); %建立一个位移文件disp、dat for t=0:delt:tf; %delt为时间步长 xdd=(f0*sin(w*t)-k*x0-c*v0)/m; %计算加速度 xd=v0+xdd*delt; %计算速度 x=x0+xd*delt; %计算位移x fprintf(fid1,'%10、4f',x0); %向文件中写数据 x0=x;v0=xd; t end fid2=fopen('disp','rt'); %打开disp、dat文件 n=tf/delt; %disp、dat文件中位移得个数 x=fscanf(fid2,'%f',[1,n]); %将disp、dat文件中文艺写成矩阵 t=1:n; plot(t,x),grid xlabel('时间(s)') ylabel('位移(s)') title('位移与时间得关系') function vtb4(m,c,k,x0,v0,tf,w,f0,delt) %用改进得欧拉法计算单自由度系统谐迫振动响应 wn=sqrt(k/m); %计算固有频率 fid1=fopen('disp','wt'); %建立一个位移文件disp、dat for t=0:delt:tf; %delt为时间步长 xdd=(f0*sin(w*t)-k*x0-c*v0)/m; %计算加速度 x3d=(f0*w*cos(w*t)-k*v0-c*xdd)/m; xd=v0+xdd*delt+x3d*delt^2/2; %计算速度 x=x0+xd*delt+xdd*delt^2/2; %计算位移x fprintf(fid1,'%10、4f',x0); %向文件中写数据 x0=x;v0=xd; t end fid2=fopen('disp','rt'); %打开disp、dat文件 n=tf/delt; %disp、dat文件中位移得个数 x=fscanf(fid2,'%f',[1,n]); %将disp、dat文件中文艺写成矩阵 t=1:n; plot(t,x),grid xlabel('时间(s)') ylabel('位移(s)') title('位移与时间得关系') function vtb5(tf,delt) %用线性加速度法计算三自由度系统谐迫振动响应,tf为仿真时间,delt为仿真时间步长delt close all;clc fid1=fopen('disp5','wt'); %建立一个位移文件dip5、dat m=2*[1 0 0;0 1 0;0 0 1]; %质量矩阵 c=1、5*[2 -1 0;-1 2 -1;0 -1 2]; %阻尼矩阵 k=50*[2 -1 0;-1 2 -1;0 -1 2]; %刚度矩阵 x0=[1 1 1]'; %初始位移 v0=[1 1 1]'; %初始速度 md=inv(m+delt/2*c+1/6*delt^2*k); m1=inv(m); [E,F]=eig(m1*k); diag(sqrt(F)); %计算固有频率(rad/s) for t=0:delt:tf; %delt为时间步长 f=[2、00*sin(3、754*t) -2、00*cos(2、2*t) 1、00*sin(2、8*t)]'; if t==0; xdd0=m1*(f-k*x0-c*v0); %计算初始加速度 else x=md*(m*(x0+delt*v0+delt^2/3*xdd0)+c*(delt/2*x0+delt^2/3*v0+delt^3/12*xdd0)+delt^2/6*f);%计算位移 xdd=6/delt^2*(x-(x0+delt*v0+delt^2/3*xdd0)); %计算加速度 xd=v0+delt/2*(xdd0+xdd);%计算速度 xdd0=xdd;v0=xd;x0=x; fprintf(fid1,'%10、4f',x0);%向文件中写数据 t %显示计算时间步长 end end fid2=fopen('disp5','rt'); %打开disp5、dat文件 n=tf/delt; %disp5、dat文件中位移得个数 x=fscanf(fid2,'%f',[3,n]); %将disp5、dat文件中得位移写成矩阵 t=1:n; figure('numbertitle','off','name','自由度-1得位移','pos',[450 180 400 420]); plot(t,x(1,t)),grid,xlabel('时间*0、1秒'),title('自由度-1得位移与时间得关系') figure('numbertitle','off','name','自由度-2得位移','pos',[350 160 400 420]); plot(t,x(2,t)),grid,xlabel('时间*0、1秒'),title('自由度-3得位移与时间得关系') figure('numbertitle','off','name','自由度-3得位移','pos',[250 140 400 420]); plot(t,x(3,t)),grid,xlabel('时间*0、1秒'),title('自由度-3得位移与时间得关系') function vtb6(tf,delt) %用线纽马克-β法计算三自由度系统谐迫振动响应,tf为仿真时间,delt为仿真时间步长delt close all;clc fid1=fopen('disp6','wt'); %建立一个位移文件dip6、dat m=2*[1 0 0;0 1 0;0 0 1]; %质量矩阵 c=1、5*[2 -1 0;-1 2 -1;0 -1 2]; %阻尼矩阵 k=50*[2 -1 0;-1 2 -1;0 -1 2]; %刚度矩阵 x0=[1 1 1]'; %初始位移 v0=[1 1 1]'; %初始速度 bita=1/6; md=inv(m+delt/2*c+bita*delt^2*k); m1=inv(m); [E,F]=eig(m1*k); diag(sqrt(F)); %计算固有频率(rad/s) for t=0:delt:tf; %delt为时间步长 f=[2、00*sin(3、754*t) -2、00*cos(2、2*t) 1、00*sin(2、8*t)]'; if t==0; xdd0=m1*(f-k*x0-c*v0); %计算初始加速度 else xdd=md*(f-c*(v0+delt/2*xdd0)-k*(x0+delt*v0+(1/2-bita)*delt^2*xdd0)); %计算加速度 xd=v0+delt/2*(xdd0+xdd);%计算速度 x=x0+delt*v0+delt^2/2*xdd0+bita*delt^3*(xdd-xdd0)/delt; %计算位移 v0=xd;x0=x; fprintf(fid1,'%10、4f',x0);%向文件中写数据 t %显示计算时间步长 end end fid2=fopen('disp6','rt'); %打开disp6、dat文件 n=tf/delt; %disp6、dat文件中位移得个数 x=fscanf(fid2,'%f',[3,n]); %将disp6、dat文件中得位移写成矩阵 t=1:n; figure('numbertitle','off','name','自由度-1得位移','pos',[450 180 400 420]); plot(t,x(1,t)),grid,xlabel('时间*0、1秒'),title('自由度-1得位移与时间得关系') figure('numbertitle','off','name','自由度-2得位移','pos',[350 160 400 420]); plot(t,x(2,t)),grid,xlabel('时间*0、1秒'),title('自由度-2得位移与时间得关系') figure('numbertitle','off','name','自由度-3得位移','pos',[250 140 400 420]); plot(t,x(3,t)),grid,xlabel('时间*0、1秒'),title('自由度-3得位移与时间得关系') function vtb7(tf,delt) %用威尔逊θ法计算三自由度系统谐迫振动响应,tf为仿真时间,delt为仿真时间步长delt close all;clc fid1=fopen('disp7','wt'); %建立一个位移文件dip6、dat m=2*[1 0 0;0 1 0;0 0 1]; %质量矩阵 c=1、5*[2 -1 0;-1 2 -1;0 -1 2]; %阻尼矩阵 k=50*[2 -1 0;-1 2 -1;0 -1 2]; %刚度矩阵 x0=[1 1 1]'; %初始位移 v0=[1 1 1]'; %初始速度 theta=1、4; md=inv(k+3*c/theta/delt+6/(theta*delt^2)*m); m1=inv(m); [E,F]=eig(m1*k); diag(sqrt(F)); %计算固有频率(rad/s) for t=0:delt:tf; %delt为时间步长 f=[2、00*sin(3、754*t) -2、00*cos(2、2*t) 1、00*sin(2、8*t)]'; if t==0; xdd0=m1*(f-k*x0-c*v0); %计算初始加速度 else xtheta=md*(m*(2*xdd0+6/theta/delt*v0+6/(theta*delt)^2*x0)+c*(theta*delt/2*xdd0+2*v0+3/theta/delt*x0)+f); %计算(t+θdelt)时刻得速度 xddtheta=6/(theta*delt)^2*(xtheta-x0)-6/theta/delt*v0-2*xdd0; %计算(t+θdelt)时刻得加速度 xdd=(1-1/theta)*xdd0+1/theta*xddtheta; %计算(t+delt)时刻得加速度 xd=v0+delt/2*(xdd0+xdd); %计算(t+delt)速度 x=x0+delt*v0+delt^2*(2*xdd0+xdd)/6; %计算(t+delt)位移 v0=xd;x0=x;xdd0=xdd; fprintf(fid1,'%10、4f',x0);%向文件中写数据 t %显示计算时间步长 end end fid2=fopen('disp7','rt'); %打开disp6、dat文件 n=tf/delt; %disp7、dat文件中位移得个数 x=fscanf(fid2,'%f',[3,n]); %将disp7、dat文件中得位移写成矩阵 t=1:n; figure('numbertitle','off','name','自由度-1得位移','pos',[450 180 400 420]); plot(t,x(1,t)),grid,xlabel('时间*0、1秒'),title('自由度-1得位移与时间得关系') figure('numbertitle','off','name','自由度-2得位移','pos',[350 160 400 420]); plot(t,x(2,t)),grid,xlabel('时间*0、1秒'),title('自由度-2得位移与时间得关系') figure('numbertitle','off','name','自由度-3得位移','pos',[250 140 400 420]); plot(t,x(3,t)),grid,xlabel('时间*0、1秒'),title('自由度-3得位移与时间得关系')
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服