logo资料库

matlab在机械中的应用-Matlab语言在机械振动中的应用.pdf

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
 第 25 卷 第 3 期      佳 木 斯 大 学 学 报 ( 自 然 科 学 版 )     2007  年 05 月      Journal of Jiamusi University (Natural Science Edition)    Vol. 25 No. 3 May  2007 文章编号 :1008 - 1402 (2007) 03 - 0356 - 03 Matlab 语言在机械振动中的应用 董宇欣 (哈尔滨工程大学计算机科学与技术学院 ,黑龙江 哈尔滨 150001) ①摘  要 :  例举了振动课程中的一个典型的实例 ,用 Matlab 语言编制了计算机程序 ,并进行了仿真. 文中给出了程序执行过程及动画演示. 关键词 :  Matlab 语言 ;仿真 ;动画 ;模拟 中图分类号 :  O321     文献标识码 :  A   在进行机械振动和分析力学课程的讲授过程 中 ,本文作者采取计算机计算语言 MATLAB ,大胆 地制作了一些课件 ,达到了用计算机仿真机械振动 和分析力学经典实例的目的. 在实际应用和讲授 中 ,取得了一定效果 ,下面以机械振动单自由度系 统为例介绍一下设计思路. 1  机械振动的计算机仿真实例 研究振动问题的思路 ,一般是建立数学模型 , 列出微分方程 ,进而求解得出位移 、速度 、加速度随 时间变化的表达式. 作为机械振动课程的一项内 容 ,教学上以前主要把精力放在讲授方程的求解方 法上 ,对启发与引导学生独立思考 ,实验探索影响 振动的各因素之间的关系这一方面重视不够 ,而从 学生接受知识的角度出发 ,本文认为如果能够给学 生以实践的机会 ,学生的学习效果会更好 ,知识的 掌握程度会更高. 正是认识到这一点 ,本文作者才 开始探索如何利用计算机这一现代化工具为学生 提供一个互动平台 ,以促进学生对所学知识的理 解. 考虑到对微分方程求解 ,Matlab 编程语言是一种 十分有效的工具 ,而且 Matlab 还有强大的图形界面和 交互处理功能 ,因此选择这种语言作为工作语言. 从单自由度系统振动微分方程入手 ,其方程为 m¨x + c x + k ( x + βx3 ) = F0 sinωt 其中各参数意义如下 : m 为振动体质量 , c 为阻尼 系数 , k 为振子刚度 ,β为振子非线性系数 , F0 为激 振力 ,ω为激振力频率. 设计的程序执行界面如图 1 所示. 从此图可以看到软件具有极强的可视性和人 机交互性. 界面各区功能如下 : 1. 参数设定区 ,位于界面有上方. 用户可设定 振子运动的全部参数. 包括 :弹簧原长 、初位移 、初 速度 、质量 、刚度 、非线性系数、阻尼 、激振力 、激振 频率 、运动演示最大时间. 2. 运动演示和函数图像区. 图形窗口 1 根据用 户设定的参数 ,实时演示振子运动情况. 图形窗口 2 绘制时间 —位移函数图像. 图形窗口 3 绘制位移 —速度函数图像 ,即振子的相轨线. 3. 运动状态描述区、数据求解区和按钮操作 区. 这三区分布在界面的中部. 下面简要介绍程序设计. % % % 振动试验数值仿真软件主程序 spring main. m % % % % % % % % % % % % % 另四个子程序分别为 subfun. m —解方 程子程序 ;helpdown - 帮助按钮按下时执行程序 ; % % % % solvedown. m - 求解按钮按下时执行 程序 ;startdown - 开始按钮按下时执行程序. % % % % 以上程序应放在同一目录下. clear ;g = 9. 8 ;L0 = 40 ; % % 弹簧原长 L0 % % % % % % % % % % % 做图形 1 静态画面 % % % % % % % % % figure (1) set ( gcf ,’unit’,’normalized’,’position’, [ 0. 00 0. 42 0. 99 0. 52 ] ,. . .   ’name ’,’振 动 试 验 数 值 仿 真 软 件 ’) ; 从此模型出发进行编程 ,可以为学生完整认识 % % % % % % % 图形 1 位置设置 单自由度系统振动问题提供有效帮助. set (gca ,’unit’,’normalized’,. . . ① 收稿日期 :2007 - 02 - 08 作者简介 :董宇欣 (1974 - ) ,女 ,哈尔滨工程大学 ,硕士 ,主要研究方向为移动数据库、仿真智能机器人.
3 Π 3 3 3 3 3 3 753 3 第 3 期 董宇欣 :Matlab 语言在机械振动中的应用   ’position ’, [ 0. 03 0. 54 0. 64 0. 38 ]) ; ’horizontal’,’center’,’string’, [ {’弹簧原长 L0 % % % % % % % 坐标轴原点位置设定 = ’} {’(cm) ’} ] ,’fontsize’,11) ; title1 = title ( ’单自由度振子运动演示’,’col h edit l0 = uicontrol ( hf1 ,’style’,’edit’,’ or’,[0. 5 0. 1 0. 9 ] ,’fontsize’,12) ; unit’,’normalized’,’position’,. . . % % % % % % % % % % % 做图形 2 静态画面    [ btntext left + 0. 18 ,btn btm1 ,btnedit % % % % % % % % % % figure (2) set ( gcf ,’unit’,’normalized’,’position’, [ 0. 00 0. 08 0. 52 0. 33 ] ,. . .  ’name’,’时间 ———位移函数图象’) ; set (gca ,’unit’,’normalized’,’position’, [ 0. 06 0. 1 0. 95 0. 77 ] ,. . .  ’fontsize’,10) ; % % % % % % % 坐标轴原 点位置设定 hold on title2 = title (’时间 (x 轴) ———位移 (y 轴) 函数 图象’,’color’,[0. 5 0. 1 0. 9 ]) ; % % % % % % % % % % % 做图形 3 静态画面 % % % % % % % % % % % figure (3) set ( gcf ,’unit’,’normalized’,’position’, [ 0. 53 0. 08 0. 46 0. 33 ] ,’name’,’振子的相轨线’) ; set (gca ,’unit’,’normalized’,’position’, [ 0. 06 0. 1 0. 95 0. 77 ]) ; % % % % % % % 坐标轴原点位 置设定 axis on hold on title3 = title (’位移 (x 轴) ———速度 (y 轴) 函数 图象 , 即 振 子 的 相 轨 线’,’color’, [ 0. 5 0. 1 0. 9 ]) ; % 图形标题 以下面方式形成框架 : hf1 = figure (1) ; FrmBKcolor = [0. 2 0. 5 0. 5 ] ; % % %所有框架 背景颜色 frm1left = 0. 68 ; frm1btm = 0. 27 ; frm1wid = 0. 32 ; frm1het = 0. 73 ; frm1Pos = [frm1left frm1btm frm1wid frm1het ] ; h = uicontrol ( hf1 , ’Style’,’frame’,’Units’,’ normalized’, . . .     ’Position’, frm1Pos ,’BackgroundColor ’, FrmBKcolor) ; 以下面方式建立参数文本框 : % % 弹簧原长 L0 文字说明框和可编辑框 h l0 = uicontrol ( hf1 ,’style’,’text’,’ text unit’,’normalized’,’position’,. . . wid ,0. 6 btn het ] ,. . .   ’backgroundcolor’,editColor ,. . .     ’horizontal ’,’left ’,’string ’, num2str (L0) ,’callback’,. . .   ’number l0 ,’’string’’) ) ;’) ; l0 = str2num (get ( h edit 以下面方式建立运动状态显示文本框 : h v = uicontrol ( hf1 ,’style’,’text’,’ text unit’,’normalized’,’position’,. . . [frm2 ] left + 3 09 ,2 textWid + 0. 5 spacing2 + 2 spacing ,0. 7 textWid ,frm2btm + 0. het ] ,. . . btn   ’backgroundcolor’,[0. 2 0. 9 0. 3 ] ,. . .   ’horizontal’,’center’,’string’,. . .    [ ’速度 v = ’num2str (number v0) ’m s’] ,’fontsize’,11) ; 各命令按钮以下面方式形成 : % % % % 开始按钮 % % % % % % % % startHndl = uicontrol (hf1 ,’Style’,’pushbutton’,’ Units’,’normalized’, . . .   ’Position’,[0. 68 0. 15 0. 10 0. 1 ] , . . .   ’String’,’开始绘图’,’fontsize’,12 ,. . . ’Callback’,’figure (3) ; cla ;figure (2) ; cla ;figure (1) ;cla ;Startdown ’) ; 对于解方程只用两条语句就完成了 : function ydot = subfun (t ,y ,flag ,m ,k ,c ,g ,F0 ,w , bata) ;  ydot = [ y(2) ; ( - c sin (w (y(1) )^3) + F0 y (2) - k t) ) m] ; (y (1) + bata 对于振动的动画模拟 ,用下面的语句来完成 : for i = 1 :length (t)   %根据质点的位置来形成弹簧端点坐标 , 进而去画弹簧  xx = 0 :0. 1 :100  yy = R (l0 + 100 4 sin ( ( (xx - 100 pi) x (i) ) ) ; %调整弹簧伸缩时外径的 x(i) - l0) 5 x(i) + l0 ; 变化.   %由于弹簧一端固定不动 ,故只需提供另 [ btntext left + 0. 07 ,btn btm1 ,1. 5 btntext 一端的数据. wid ,0. 6 btn het ] ,. . .  set (spring ,’xdata’,xx ,’ydata’,yy) ;
853 佳 木 斯 大 学 学 报 ( 自 然 科 学 版 ) 2007 年  set (ball ,’xdata’,100  drawnow 由于力学中的振动和电学中的方程有相似性 , x(i) + l0) ; 如果将编程使用的方程参数变化一下 ,这一仿真实 例就可以应用于电学的教学环节. 图 1  程序执行界面 2  结束语 从本文的分析中可以看出 ,开发的软件充分结 合了 MATLAB 较强的运算功能 ,一方面采用数值方 法解方程 ,使用户从复杂的求解过程中解脱出来 , 另一方面 ,采用面向对象的设计技术 ,用户界面友 好 ,用户可以设定参数 ,自己试验 ,从动态演示中了 解振动状态. 参考文献 : [1 ]  吴福光 ,蔡承武 ,徐兆. 振动理论 [ M] . 上海 : 高等教育出版 社 ,1987 ,p16 - 35. [2 ]  张宜华. 精通 Matlab 5 [M] . 北京 :清华大学出版社 ,1999 ,61 - 92.   [3 ]  彭芳麟 ,管靖 ,胡静 ,卢圣治. 理论力学计算机模拟[ M] . 北京 : 清华大学出版社 ,2002 ,108 - 217. Application of Matlab in Mechanics Vibration DONG Yu - xin (School of Computer Science and Technology , Harbin Engineering University , Harbin 150001 , China) Abstract :  A typical example in vibration course is given in the paper , and using Matlab language computer program and emulate is compiled. Performing process of the program and demo animate are given. Key words :  Matlab ; emulate ; animate ; simulation
分享到:
收藏