MATLAB在实际问题中的分析与应用32542.pdf
MATLAB 在实际问题中的分析与应用 班级 号次 目录 1.实验目的 2.叙述问题 3.分析问题 4.模型建立及求解 4.1 塑性区(Ri r Rc)4.2 弹性区(c o R r R)4.2.1 应力分析 4.2.2 计算流程 4.2.3 程序编写 4.2.4 求解结果.4.2.5 计算验证 4.2.6 应力求解 4.3 应力分布曲线的绘制 4.3.1 程序编写 4.3.2 图形输出 5.结果分析 6.实验总结 摘要:Matlab 因其强大的功能而在世界围得以流行,特别在工程领域的应用甚为广泛。本文从弹性力学中的一个问题出发,先简要叙述并分析了目前厚壁筒弹塑性应力分析中所遇到的问题及其Matlab 在其中应用的思考;后建立了厚壁筒弹塑性区的模型,进行了各应力分析,用Matlab 中介绍的相关方法求解了弹塑性分界面半径并绘制了各应力关于半径的变化曲线,最后根据模型求解的结果进行了简要的分析。关键词:Matlab 弹塑性应力 厚壁筒 前言 自20世纪80年代以来,出现了多种科学计算语言,亦称数学软件,比较流行的有MATLAB、Mathematica、Maple等。因为他们具有功能强、效率高、简单易学等特点,在在许多领域等到广泛应用。MATLAB便是一种影响大、流行广的科学计算语言。MATLAB的语法规则简单,更加贴近人的思维方式。MATLAB是英文MATrix LABoratory(矩阵实验室)的缩写。自1984年由美国MathWorks公司推向市场以来,得到了广泛的应用和发展。在欧美各高等院校MATLAB已经成为线性代数、自动控制理论、数字信号处理、时间序列分析、动态系统仿真、图像处理等诸多课程的基本教学工具,成为大学生、硕士生以及博士生必须掌握的基本技能。在设计研究单位和工业部门,MATLAB已被广泛的应用于研究和解决各种具体的工程问题。近年来,MATLAB在我国也开始流行,应用MATLAB的单位和个人急剧增加。可以预见,MATLAB将在我国科学研究和工程应用中发挥越来越大的作用。Matlab 是当前数值计算方面应用地非常广泛的一种计算机软件,特别是在工程应用求解中发挥了重要作用。其所具有的浅显易懂的编程语言、强大的绘图功能、大量的部函数等都深深地吸引了我认真地去学习它。同时在上过程装备力学基础时,其中涉及有很多的问题是超越方程、微积分的问题,难以用普通的线性方法求解,而Matlab 在此方面有强大的功能,特别是超越方程的精确求解以及图形的绘制方面。数学当中的绘制函数图象、绘制立体图形的交线(如绘制两个等直径圆柱体的交线)、求多项式的根等问题,这些问题如果依靠我们人工进行操作,则需要很多的时间和精力,当我们掌握了基本原理后,借助于MATLAB进行解决则会大大提高效率和精确度。1.实验目的 1 结合实际问题展现MATLAB 在生活和学习方面的广泛应用 2 学会利用 MATLAB 编程并求解实际问题 3 学会并运用for循环和switch 结构,以及MATLAB中已有函数如sum 4 了解单元数组cell和结构数组struct的作用,学会创建这些数组.2、叙述问题 厚壁筒在承受压载荷的作用下,随着压力的增加,筒壁应力不断增加。厚壁筒在承受逐渐增加压力的过程中,会经历弹性阶段、筒体部分屈服阶段、整体屈服阶段、材料硬化、筒体过度变形、直至爆破失效阶段。而在分析厚壁筒的弹塑性应力分布时,遇到两个问题:【1】弹塑性区分界面的半径的精确确定较为困难,因此半径是一个非线性方程;【2】弹塑性应力的分布曲线绘制难以精确,不能真实反映不同半径处的应力状况。3、分析问题 针对厚壁筒弹塑性应力分析时遇到的两个问题,可利用 Matlab 软件中的相关知识解决。对于弹塑性区分界面半径的确定,可利用方程求根的相关方法,从二分法、开方法、Newton 法、Newton 下山法以及弦截法中选取精度和收敛速度均较佳的方程求根数值方法进行求解;同时还可以利用Matlab 中的Solve 函数求其精确解。对于弹塑性应力分布曲线的绘制,可以根据求出的各应力分布的具体方程,用Plot 函数进行绘制,同时要注意曲线后期的处理工作,以便更好地从图中得到各应力随半径分布的情况。4、模型建立及求解 图2 受压厚壁圆筒 图3 弹性区 图4 塑性区 为简化分析,假设厚壁圆筒为理想弹塑性体,不考虑材料在塑性变形过程中塑性强化,筒体仅受压 pi 作用,筒体的半径为Ri,外半径为Ro。初始假设厚壁圆筒的半径为Ri 152.5mm,外半径为Ro 254mm,壁所受的压力为pi MPa,取其屈服极限为MPa 先分析筒体仅受压Pi作用的情形。当压pi 大于弹性极限压力pe 时,圆筒壁的屈服区向外扩展,筒体沿壁可以分成塑性区和弹性区两个区域,其中侧为塑性区,外侧为弹性区。假想两区域的交界圆面的半径为Rc,则塑性区的外半径分别为Ri 和Rc,承受的外压力分别为Pi和Pc,见图4;弹性区的外半径分别为Rc 和Ro,承受压力为Pc,见图3。4.1 塑性区(Ri r Rc)4.2 弹性区(c o R r R)4.2.1应力分析 弹性区壁面即为弹塑性区交界面,即弹性区壁面呈塑性状态。由式7、8、9 可知在r=Rc有弹性区壁面处各应力表达式为:4.2.2 计算流程 其中 为下山因子,为精度指标,0 x 为迭代初值,N 为预设迭代次数。0 1的选择是个逐步探索的过程,从 1开始反复将因子 的值减半进行计算,一旦单调性条件式22成立,则下山成功。在此可取为 10 (3)即可达到要求。4.2.3 程序编写(1)编写文件名为Mendnewton.m 的Matlab 文件 function x,k=Mendnewton(f,x0,emg)f1,d1=feval(f,x0);k=1;x(1)=x0;x(2)=x(1)-f1/d1;while abs(f1)emg u=1;k=k+1;f1,d1=feval(f,x(k);x(k+1)=x(k)-u*f1/d1;f2,d2=feval(f,x(k+1);while abs(f2)abs(f1)u=u/2;x(k+1)=x(k)-u*f1/d1;f2,d2=feval(f,x(k+1);end end(2)编写文件名为func1.m 的函数文件 functionf,d=func1(x)f=(2542-x2)/(2542)+2*log(x/152.5)-0.9067;d1=(2542-x2)/(2542)+2*log(x/152.5)-0.9067;d=subs(diff(d1);(3)在命令窗口输入 f=func1;x,k=Mendnewton(f,180,0.001)4.2.4 求解结果 迭代次数k x 值 1 196.0559 2 196.0592 3 196.0594 可知当迭代次数为3 次时,有196.0594196.0592 0.0002 0.001成立,故x的取值已符合要求,迭代成功。4.2.5 计算验证 运用matlab 系统中的求解各类代数方程精确公式解的函数Solve 求解此方程的精确解。Solve 函数的调用格式为Solve(方程或方程组,未知量)。编写程序如下:syms x solve(-2*log(x/152.5)+0.9067=(2542-x2)/(2542),x)执行后屏幕显示:ans=196.060371 可以看出由Newton 下山法求解所得的值与精确解的差值为:196.0594196.06037 0.00097 0.001,可知Newton 下山法所求的解的精度已足够高。取196 c R mm。4.2.6 应力求解 利用与塑性区各应力分析相同的方法,可求出弹性区各应力分量表达式:至此弹性区和塑性区各应力的表达式已全部求出。4.3 应力分布曲线的绘制 从上述的各应力关于半径r 的表达式中可以看出,此六个方程皆具有一般的显式方程y f x的形式,可以利用曲线绘制法中的plot 函数绘制。plot函数的调用格式为(,)plot x y,其中x为曲线上点的横坐标,y为纵坐标,中可包含确定曲线颜色、线形、两坐标轴上的比例等参数。4.3.1 程序编写 x1=152.5:0.1:196;x2=196:0.1:254;y1=750*log(x1)-4110.37;y2=750*log(x1)-3360.37;y3=750*log(x1)-3735.37;y4=223.29-1.44*10.7./(x2.2);y5=223.29+1.44*10.7./(x2.2);y6=223.29;plot(x1,y1,r+,x1,y2,b+,x1,y3,c+,x2,y4,r+,x2,y5,b+,x2,y6,c+)grid on axis(0,260,-400,600)xlabel(半径);ylabel(应力);title(厚壁筒弹塑性区应力分布曲线)gtext(轴向应力);gtext(周向应力);gtext(径向应力)box on 说明:grid on 表示在图形窗口中画上网格线,以便更清楚分析各量的具体数值。gtext(字符串)表示将字符串放在鼠标所指定的位置。xlabel(字符串)和ylabel(字符串)分别表示在x 轴下方中部位置和y 轴左边中部位置输出字符串作为标题。Plot 括号后的r+,b+,c+分别表示红色,蓝色和青色。4.3.2 图形输出 在Matlab 软件中将图形画好后,在将其导入到Visio 软件中进行优化处理后可得此图。图6 厚壁筒弹塑性区应力分布图 5、.结果分析 从应力分析图我们可以得出如下结论:6、实验总结 通过用Matlab 的相关数值求解方法及曲线绘制函数去系统地解决弹性力学中或者说是工程实际中的一个问题,这是一个理论与实践有机结合的过程,也是一个理论在实践中运用并不断检验的过程,一方面自己通过求解弹性力学中的厚壁筒弹塑性应力问题,加深了对厚壁筒相关知识的了解,特别是利用Matlab 软件绘制了各应力关于半径的分布曲线图,自己对厚壁筒的认识也更趋理性;同时,通过对Matlab 相关知识的运用,加强了Matlab 软件的应用能力,加深了方程求根方法的理解,特别是对Matlab 软件编程中的一些细节的把握中有了较大的提高。无疑这次论文的写作过程是一个不断学习、不断提高的过程,如果Matlab 的考核只是一次简单的考试,可能我只学会了如何去解题,而对Matlab 的理解还只是停留于表面,但是一次真正的实践,通过用Matlab 中所学的去解决一个实际问题,这个锻炼无疑是更大的,其意义也更大。对于这次编程任务的完成,我想一方面靠自己的努力,一方面依靠科技的对我们的帮助。同时我也意识到自己对 MATLAB 还不够了解,今后需要花更多时间在这门课上,以求更好的掌握 MATLAB。