《MATLAB与工程应用 第7章 动力学与振动ppt课件.ppt》由会员分享,可在线阅读,更多相关《MATLAB与工程应用 第7章 动力学与振动ppt课件.ppt(28页珍藏版)》请在三一办公上搜索。
1、第七章 动力学与振动,7.1轨迹7.2单自由度系统7.3多自由度系统,7.1轨迹举例说明:重力场中有两个物体,其中质量为m2的物体固定,而质量为m1的物体绕m2做平面圆周运动.做圆周运动的m1物体的轨道半径用变量r表示,角度用变量a表示. m1 r a m2 两物体系统,卫星绕地球转动时,m2等于地球的质量,m1等于卫星的质量,r为卫星球心与地球球心间的距离。其运动轨迹由下列方程组决定:式中: ,其中t是时间变量,p为物体在地球表面做圆周运动的周期。在地球表面,r=6.373x106 m。,用龙格库塔法可以实现求解:引入新状态变量:带入前面的微分方程组,可得四个一阶微分方程。,建立函数文件or
2、bit.mfunction xd=orbit(t,x)xd=x(2);x(1)*x(4)2-4.0*pi2/x(1)2; x(4);-2.0*x(2)*x(4)/x(1);三组初始条件(t=0):,由初始条件建立执行文件menu71.minitcond=2 0 0 1.5;1 0 0 2*pi;2 0 0 4;tspan=linspace(0,5,1000);options=odeset(RelTol,1e-6,AbsTol,1e-6 1e-6 1e-6 1e-6);lintype=-. -. -.;for i=1:3 t,x=ode45(orbit,tspan,initcond(i,:),o
3、ptions); polar(x(:,3),x(:,1),lintype(2*(i-1)+1:2*i); hold onendtext(0.5,-1.2,椭圆轨迹);text(-1.2,1,圆轨迹);text(1.75,2,双曲线轨迹);,程序运行结果,7.2单自由度系统7.2.1概述一.力学模型 弹簧质量阻尼系统其中:振体质量为m,弹簧的线性系数为k,非线 性系数为a,阻尼系数为c,外力F(t)。,二.运动微分方程用x表示系统的位移,则运动微分方程为:式中: 固有频率 非线性系数 阻尼因子引入新变量转化状态空间方程形式:,7.2.2 线性系统的自由振动一.运动微分方程当 时,得到线性振动系统
4、的自由振动方程。二.MATLAB求解对应的函数文件FreeOcillation.mfunction xdot=FreeOcillation(t,x,dummy,zeta)xdot=x(2);-2.0*zeta*x(2)-x(1);三种阻尼系数(1)阻尼系数为0.1时是欠阻尼情况(2)阻尼系数为1时是临界阻尼情况(3)阻尼系数为5时是过阻尼情况,由初始条件(位移和速度均为1时)建立执行文件menu72.mzeta=0.1 1.0 5.0;tspan=linspace(0,40,400);%生成0-40的四百个线性点lintype=-b -r -r;for i=1:3 t,x=ode45(Free
5、Ocillation,tspan,1 1,zeta(i); subplot(2,1,1); plot(t,x(:,1),lintype(2*(i-1)+1:2*i); hold on subplot(2,1,2); plot(x(:,1),x(:,2),lintype(2*(i-1)+1:2*i); hold onendsubplot(2,1,1);,xlabel(Time( tau);ylabel(Displacement x( tau);title(Displacement as a function of( tau);axis(0 40 -2.0 2.0);text(2.7,-1.3,阻
6、尼系数=0.1);text(3.6,-0.1,1.0);text(3.6,1.0,5.0);subplot(2,1,2);xlabel(Displacement);ylabel(Velocity);title(Phase portrait);axis(-2.0 2.0 -2.0 2.0);text(0.7,-1.25,阻尼系数=0.1);text(0.8,-0.65,1.0);text(0.8,0.1,5.0);,程序运行结果,7.2.3 线性系统的强迫振动一.运动微分方程二.MATLAB求解若对应的函数文件ForceOcillation.mfunction xdot=ForceOcillat
7、ion(t,x,dummy,zeta,Omega,x0)xdot=x(2);-2.0*zeta*x(2)-x(1)+x0*cos(Omega*t);,为了获得频谱图,建立函数文件AmplitudeSpectrum.mfunctionf,amplitude=AmplitudeSpectrum(yy,Fs,Nstart,N);f=(Fs*(0:N-1)/N)*2.0*pi;amplitude=abs(fft(yy(Nstart:Nstart+N),N)/N;采样速率30/6000=0.005,则采样频率1/0.005=200,这个频率远远超出了必须达到的采样频率,结果显示截短频谱图,需设置Nsta
8、rt=3200,N=211=2048。fft的应用见Help编制执行文件menu72f.m,zeta=0.4;Omega=3.0;x0=50;tspan=linspace(0,30,6000);options=odeset(RelTol,1e-8,AbsTol,1e-8);lintype=-b; t,x=ode45(ForceOcillation,tspan,0 0,options,zeta,Omega,x0); subplot(2,1,1); plot(t,x(:,1); axis(0 30 -8 8); hold on subplot(2,1,2);,function xdot=Force
9、Ocillation(t,x,dummy,zeta,Omega,x0)xdot=x(2);-2.0*zeta*x(2)-x(1)+x0*cos(Omega*t);,yy=x(:,1); N=2048;Nstart=3200;Fs=200;f,Amplitude=AmplitudeSpectrum(yy,Fs,Nstart,N); semilogy(f(1:40),2*Amplitude(1:40);xlabel(Frequency);ylabel(Amplitude);title(Response spectrum of a linear system); hold onsubplot(2,1
10、,1);xlabel(Time( tau);ylabel(Displacement x( tau);title(Response of a linear system);hold on,程序运行结果,7.2.4 线性系统的频率响应、阶跃响应及脉冲响应单自由度振动系统的强迫振动微分方程可为:通过LAPLACE变换,得传递函数:其中:,Logspace, rad2deg, loglog, semilogx see help,一.编制执行文件frequency72.m,求频率响应。m = 1;zeta = 0.1:0.1:1;k = 1;wn = sqrt(k/m);10w = logspace(-
11、1,1,400);rad2deg = 180/pi;s = j*w;for cnt = 1:length(zeta)xfer(cnt,:)=(1/m) ./ (s.2 + 2*zeta(cnt)*wn*s + wn2);mag(cnt,:) = abs(xfer(cnt,:);phs(cnt,:) = angle(xfer(cnt,:)*rad2deg;endfor cnt = 1:length(zeta)figure(1)loglog(w,mag(cnt,:),k-),title(SDOF frequency response magnitudes for zeta = 0.2 to 1.0
12、 in steps of 0.2)xlabel(Frequency(rad/sec)ylabel(Magnitude)gridhold onendhold offfor cnt = 1:length(zeta)figure(2)semilogx(w,phs(cnt,:),k-)title(SDOF frequency response phases for zeta = 0.2 to 1.0 in steps of 0.2)xlabel(Frequency(rad/sec)ylabel(phase)gridhold onendhold off,程序运行结果幅频曲线,程序运行结果相频曲线,二.求
13、时频响应的基本函数命令,可以通过上述命令求线性系统的波得图、乃奎斯特图、阶跃响应、脉冲响应、初始条件响应、输入u的响应,例:博得图编制执行文件bode72.mm=1zeta=0.1k=1wn=sqrt(k/m)den=1 2*zeta*wn wn2num=1/msys=tf(num,den)bode(sys),Bode,nyquist see help,例:求正弦输入激励响应编制执行文件sin72.mt=0:0.01:50;u=sin(t);lsim(sys,u,t),Lsim see help,INITIAL的使用,对方程,建立状态向量,方程写为,其中,则输出为:,编制执行文件initial72.mm=1;c=0.1;k =1;A=0 1;-k/m -c/m;C=1 0;sys=ss(A,C,);x0=10,0;initial(sys,x0),C、D确定要输出的量,initial see help,