根据MATLAB的平面刚架静力分析
平面刚架静力分析
平面刚架静力分析程序使用说明为了便于使用,下面把程序的功能和程序使用中的一些规定说明如下: 1.程序的功能(1)能计算并输出任意平面刚架(内部结点全为刚结)结构的结点位移和单元杆端内力帮助QQ68350612。
(2)能直接处理固定支座、固定铰支座、活动铰支座、定向支座和有已知位移的支座的支承条件,但其支座中的线位移约束必须平行于结构坐标轴方向。
对固定支座采用"前处理",其余采用“后处理”。
(3)能直接计算下表中所列的8种荷载(包括温度改变的影响)引起的位移和内力。
2.关于程序使用中的规定和说明(1)结构中单元的划分必须使各单元为均质、等截面直杆。
(2)结点编号时,必须先编可动结点(包括非固定支座和有已知位移的固定支座),后编不动结点。
(3)各单元的局部坐标系为由小号端到大号端,即对于任意单元I,有JL(I)<JR(I)。
(4)数据输入除抗拉、抗弯刚度采用E型外,其余采用自由格式。
(5)程序中所有变量和数组的类型均符合隐含的i-n规则。
(6)程序中的维数定义可根据实际应用中的情况进行调整。
设刚架结构上共有npe个下表所示的非结点荷载,将这些单元从1至npe 编号,并以数组mf(npe)记录这些单元的总体编号;以数组ind(npe)记录非结点荷载的类型;以数组aq(npe)、bq(npe)、q1(npe)和q2(npe)分别表示表2.3中的a、b、q1和q2值。
设第i个具有非结点荷载作用的单元的单元号为k,则k=mf(i)。
于是,k单元的固端力k{F}可以根据ind(i)、aq(i)、bq(j)、q1(i)和q2(i)的值下表中的相应公式算出。
需要说明的是:(1)当某单元上作用的荷载类型不止一类时,可以采用叠加的方法求固端力;(2)同一单元上受几种类型的荷载作用,就要对该单元进行几次荷载编号。
例单元①上有两种类型的荷载作用,故应对该单元进行两次荷载编号。
也即认为整个结构共有4个非结点荷载(3个杆但npe=4)。
Matlab辅助工程静力学分析
Matlab辅助工程静力学分析曾德惠【摘要】以静力学中的核心内容(力系简化和力系平衡)为研究对象,介绍了力学模型和数学模型的建立过程以及Matlab软件编程方法.结合具体实例,编制了计算机辅助静力计算的通用子程序.结果表明:利用Matlab解决工程静力计算问题快捷、准确和有效,提高了学生和设计人员利用计算机解决实际问题的能力,为处理类似计算提供了有效的参考.【期刊名称】《湖北民族学院学报(自然科学版)》【年(卷),期】2010(028)001【总页数】4页(P72-75)【关键词】静力学;Matlab;力系的简化;力系的平衡【作者】曾德惠【作者单位】湖北民族学院,理学院,湖北,恩施,445000【正文语种】中文【中图分类】TP391.9;TB121静力学在工程实际中有着极其广泛的应用,对零件结构的设计和改进,都应当首先进行受力分析.静力学是理论力学的重要组成部分,它研究物体的受力分析、力系的简化方法以及受力物体的平衡条件,其目的是求解未知力,为零件结构的进一步设计打下基础.静力学问题的求解,涉及大量符号运算和数值计算.采用传统计算方法需花费大量的时间,许多复杂问题的求题不得不过多地依赖技巧实现.用计算机取代计算器[1]早已是不争的现实.文献[2]中提出处理理论力学问题的新途径:把力学、计算数学和计算机软件结合起来,形成了理论力学问题→理论分析→选择合理的数值计算方法→程序编制→用计算机求得结果的解决模式.文献[3]中提出了在理论力学教学中应充分利用矢量、矩阵等数学工具,重视对学生计算机数值求解方法的训练,在具体的求解过程中选用Matlab或Maple软件工具. Matlab是一种面向科学与工程计算的高级语言,提供了强大的矩阵处理和绘图功能,给出了一个融合计算、可视化和程序设计的交互环境,操作简便,能高效求解各种复杂工程问题并实现计算结果的可视化[4,5].本文以静力学中的核心内容(力系简化和力系平衡)为研究对象,较为详细地讲述了Matlab辅助静力分析计算的过程,编制出的程序具有一定的普遍性,并给出了具体实例加以说明和验证.1 Matlab求解静力学问题的方法步骤1.1 建立力学模型力学模型的建立是求解静力学问题的基础.模型的正确与否,直接关系到计算精度和计算工作量.针对具体问题,首先应确定研究对象;然后根据已知条件和约束类型,分清主动力和约束力,结合静力学基本概念和有关原理分析受力情况并画出受力图,建立坐标系.对于特定的工程问题,涉及各式各样的物体,其实际状况有时是很复杂的.在建立力学模型时必须对这些物体进行必要的、合理的简化.由于静力分析与物体外形有关的只是载荷与约束的位置及类型,而与载荷和约束无关的外形是次要因素可以忽略.因而直接采用简单的线条来绘制研究对象,按照国家标准的规定画法表达力和约束的作用位置及类型,用计算简图来描述实际物体的全部受力情况.1.2 建立数学模型将力学模型转换为数学模型是编程计算的关键.工程实物抽象为力学模型后,要应用力学原理,充分利用矢量、矩阵、线性方程等数学工具,将力学模型用数学方法简洁地描述出来.例如:将力用矢量表示、力系简化用矢量运算求得、平衡方程组写成矩阵形式等等.1.3 Matlab编程求解Matlab编程方式有两种[6]:①行命令方式.即在命令窗口中输入一条或多条命令,然后执行,再输入-执行,完全以交互的方式进行.②M文件方式.即把程序写成一个由多行语句组成的文件,通过在命令窗口中输入文件名回车来执行这个文件.M文件分为脚本文件和函数文件两种,可以在其他的文本编辑器如记事本、写字板中编写,也可以在Matlab的程序编辑器中编写,并以“.m”为扩展名加以存储.Matlab软件用C语言编写,其语法与C语言十分相似,编写却更加简单方便.2 Matlab用于力系的简化力系的简化是静力学中一种重要的力学分析方法.只有运用力系简化才能将复杂的受力问题抽象成简洁的力学模型.比如运用力系的简化可以建立平衡方程,可以推导固定端约束处的约束反力、合力矩定理、物体重心位置等等[7].又如对刚体动力学问题,可以将刚体上每个质点的惯性力组成惯性力系,用力系简化的方法得出简化结果.然后根据达朗伯原理,用静力学建立平衡方程的方法求解动力学问题.力系的简化,就是用一个最简单的力系等效地代替复杂力系,简化结果得到一个主矢和主矩.主矢是各力的矢量和,主矩是各力对简化中心的力矩求和[7].工程上常见的力系为两种:平面力系和空间力系.其中空间力系是最一般的力系,平面力系是空间力系的特例.许多工程结构和机械构件都受空间力系的作用,如车床主轴、桅式起重机、闸门等.Matlab求解时可以用向量或矩阵的形式将各个力表示出来,力系的简化即对这些向量或矩阵进行操作:如向量相加、向量点积和叉积.下面以一个空间力系为例,应用Matlab软件将力系的简化归纳为一个通用函数子程序,可以重复调用,力系中力的数目不受限制.2.1 空间力系主矢、主矩的计算公式如图1所示,假设一刚体上作用一空间力系(F1,F2,…,Fn),将力系中各力向任选的简化中心O简化.首先以O为原点建立空间直角坐标系oxyz,将力系中的各力用其在x、y、z轴上的投影表示为矢量形式,即Fi=Fixi+Fiyj+Fizk,其主矢、主矩的计算计算公式为[7]:主矢:主矢的方向余弦:cos(FR,i)=FRx/FR,cos(FR,j)=FRy/FR,cos(FR,k)=FRz/FR主矩:主矩的方向余弦:cos(Mo,i)=Mx/MO,cos(Mo,j)=My/MO,cos(Mo,k)=Mz/MO 2.2 空间力系主矢、主矩的计算举例如图2所示构件力系的三力分别为F1= 350 N, F2= 400 N, F3=600 N,其作用线的位置如图所示,将此力系向原点O简化[7].图1 空间力系的简化过程Fig.1 The process of space force-system simplification图2 空间力系简化实例Fig.2 The example of space force-system simplification求解时首先整理已知力数据列成表1,用力在坐标轴x、y、z轴上的投影表示成矢量形式.已知数据可以在运行程序时由键盘交互输入,也可以启动有关编辑程序或Matlab 文本编辑器输入,以纯文本方式存盘为.m或.mat格式[6],调用力系简化子程序,直接访问Matlab工作空间中所有变量,运行程序得出简化结果(包括主矢和主矩的大小和方向角).Matlab力系简化函数程序如下,它的主要功能是实现空间力系的简化,对其他力系同样适用.表1 空间力系已知数据Tab.1 The known data of space force-system各力编号力系中各力/N各力作用点坐标/mmxiyizi各力在坐标轴上的投影/Nx轴投影y轴投影z轴投影1F190600350×60602+802+902350×80602+802+902350×-90602+802+9022F2012000400×cos45°-400×cos45°3F3-90600-600×cos60°600×cos30°0function lixijianhua(N1,F,r)%N1为力系中已知力总数%F、r分别为已知力矢、已知力作用点坐标矩阵load N1-F-r.mat;disp('空间一般力系简化结果:');%计算主矢S=sum(F(1:N1,1:3)); %计算合力投影矩阵FR=sqrt(S(1)^2+S(2)^2+S(3)^2); %计算合力大小disp(['主矢大小=',num2str(FR),'N']);FRangles=acos(S/FR)*180/pi;disp(['主矢方向角[α β γ]=[',num2str(FRangles),']度']);%计算主矩Mo=zeros(1,3); %主矩向量赋初值for i=1:N1Mo=Mo+cross(r(i,1:3),F(i,1:3));enddisp(['主矩矢Mo=[',num2str(Mo),']N.mm']);MoNum=norm(Mo);%计算主矩大小Moangles=acos(Mo/MoNum)*180/pi;disp(['主矩大小=',num2str(MoNum),'N.mm']);disp(['主矩方向角[α β γ]=[',num2str(Moangles),']度']);运行程序得到结果如下:主矢大小=1 144.225N主矢方向角[α β γ]=[97.225 18 27.969 1 116.860 3]度主矩矢Mo=[-47 989.384 9 21 072.389 -19 399.865 6]N.mm主矩大小=55 887.220 6 N.mm主矩方向角[α β γ]=[149.169 67.848 8 110.311 6]度图3 空间力系平衡举例Fig.3 The example of space force-system equilibrium 3 Matlab用于力系的平衡静力学的核心是平衡方程.空间力系作用下单个物体的静定问题有6个平衡方程,n 个构件组成的物系可列出6n个独立的平衡方程,解6n个未知数.随构件数目的增多,线性方程组的数目也就越多.因此需要用到线性代数的知识,利用计算机求解. 运用Matlab语言,可以把复杂的线性方程组用矩阵的形式表示出来.一般可选用直接法和迭代法求解.直接法分为运算符求解和矩阵分解求解,通过对矩阵和Matlab相关函数的操作实现.3.1 空间力系平衡计算举例如图3(a)所示,装有两个带轮C和D的水平传动轴AB,支承于径向轴承A、B上,轮半径R1=200 mm,R2=250 mm,距离a=c=500 mm,b=1 000 mm.已知轮C上胶带拉力的方向成水平,其大小T2=2T1=5 kN;轮D上两边的胶带互相平行,并与铅垂线夹角α=30°,其拉力大小T3=2T4.不计轮和轴的重量,试求在平衡状态下胶带拉力T3、T4及轴承A、B的约束反力[9].具体求解步骤如下:(1)建立力学模型取轴与轮整体系统为研究对象,建立坐标系oxyz,画出受力图如图3(b).(2)建立数学模型系统受空间力系的作用,根据受力图,静力平衡方程表示如下:∑Fx=0, FAx+FBx+T1+T2+(T3+T4)sinα=0∑Fz=0, FAz+FBz-(T3+T4)cosα=0∑Mx(F)=0, FBz(a+b+c)-(T3+T4)cosα×(a+b)=0∑My(F)=0, (T3-T4)R2+(T1-T2)R1=0∑Mz(F)=0, -FBx(a+b+c)-(T1+T2)a-(T3+T4)sinα×(a+b)=0T3=2T4方程中包含轴承A、B的约束反力FAx、FAz、FBx、FBz及T3、T4共6个未知数,将已知力移到等式右边,整理为标准的矩阵方程AX=B的形式:编制Matlab程序求解clear;R1=200;R2=250; a=500; b=500;c=1000; alpha=30*pi/180; T1=2.5; T2=5;A=[1 0 1 0 sin(alpha) sin(alpha);0 1 0 1 -cos(alpha) -cos(alpha);0 0 0 a+b+c -cos(alpha)*(a+b) -cos(alpha)*(a+b);0 0 0 0 R2-R2;0 0 -(a+b+c) 0 -sin(alpha)*(a+b)-sin(alpha)*(a+b);0 0 0 0 1 -2 ];B=[-T1-T2;0;0;(T2-T1)*R1;(T1+T2)*a ; 0];% [L,U]=lu(A); X=U\(L\B) %LU分解求解X=A\B;%矩阵除法求解X=X';%显示结果disp(['[FAx FAz FBx FBz T3 T4]=[',num2str(X),'] [KN]'程序运行结果如下:[FAx FAz FBx FBz T3 T4]=[-6.375 1.299 -4.125 3.8971 4 2] [KN]负值表明反力FAx、FBx的指向与图示方向相反.5 结束语Matlab语言具有强大的计算功能,编写简单、调试方便.借助于计算机辅助手段,拓宽了分析和处理工程实际问题的范围,把学生和设计人员从繁杂的数学计算和枯燥的编程中解放出来,使他们拥有更大的想象和发挥的空间,能够投入更多时间和精力去面向问题,专注于创造性的工作.参考文献:[1]陈怀琛.大学理工科要把“科学计算能力”当作一个重要培养目标[J].中国大学教学,2005,27(9):15-17.[2]王国源.数值计算在理论力学中的应用[J].力学与实践,1990,12(1):62-63.[3]邵小军,刘永寿,岳珠峰.谈工科理论力学教学中数学工具的应用[J].力学与实践,2007,29(5):68-69.[4]曾德惠.基于Matlab实现函数逼近[J].现代电子技术,2009,32(18):141-143.[5]管靖,彭芳麟,胡静,等.理论力学教学现代化-“理论力学计算机模拟实验”课程的探索[J].大学物理,2001,20(8):38-40.[6]王正林,刘明.精通MATLAB7[M].北京:电子工业出版社,2006.[7]哈尔滨工业大学理论力学教研室.理论力学(第6版)[M].北京:高等教育出版社,2002.[8]赵秉新,郑来运.MATLAB在求解线性方程组中的多种应用[J].通化师范学院学报,2007,28(12):13-15.[9]张毅.建筑力学(上)[M].北京:清华大学出版社,2006.。
基于Matlab平面梁四单元的分析
基于Matlab平面梁四单元的分析摘要:Matlb平面梁单元分析目标:通过对两单元的分析,掌握梁单元分析的一般方法和步骤,了解两单元的应变状态。
模型:如图一方形截面的悬臂梁,截面每边长为5cm,长度为10m,在左端约束固定,在右端施以一个沿y轴负方向的集中力w=100N,求其绕度与转角。
图一内容:解:将这个两分成4个平面梁单元,求出每个单元的刚度矩阵,然后将4个单元刚度矩阵组集成总体刚度矩阵。
引入边界条件后,再求解出各节点的挠度和转角。
Matlab程序如下:>>clearx1=0;x2=sym('L');x=sym('x');j=0:3;v=x.^jm=...[1 x1 x1^2 x1^30 1 2*x1 3*x1^21 x2 x2^2 x2^30 1 2*x2 3*x2^2]mm=inv(m);N=v*mm%N=[1 x x^2 x^3]*(inv(mm))B=diff(N,2)k=transpose(B)*B;Ke=int(k,0,'L')%Element 1: E=4.0e11, I=bh^3/12=5.2e-7EI=4.0e11*5.2e-7Ke1=EI*subs(Ke,'L',2.5)Ke2=Ke1Ke3=Ke1Ke4=Ke1T=eye(4,4)Ke1=T*Ke1*T';Ke2=T*Ke2*T';Ke3=T*Ke3*T';Ke4=T*Ke4*T';% system analysis F=[K]uG1=...[1 0 0 0 0 0 0 0 0 00 1 0 0 0 0 0 0 0 00 0 1 0 0 0 0 0 0 00 0 0 1 0 0 0 0 0 0];G2=...[0 0 1 0 0 0 0 0 0 00 0 0 1 0 0 0 0 0 00 0 0 0 1 0 0 0 0 00 0 0 0 0 1 0 0 0 0];G3=...[0 0 0 0 1 0 0 0 0 00 0 0 0 0 1 0 0 0 00 0 0 0 0 0 1 0 0 00 0 0 0 0 0 0 1 0 0];G4=...[0 0 0 0 0 0 1 0 0 00 0 0 0 0 0 0 1 0 00 0 0 0 0 0 0 0 1 00 0 0 0 0 0 0 0 0 1];K1=G1'*Ke1*G1K2=G2'*Ke2*G2K3=G3'*Ke3*G3K4=G4'*Ke4*G4K=K1+K2+K3+K4F=[0,0,0,0,0,0,0,0,-100,0]'%u=F*inv(K) u=[v1,xta1,v2,xta2,v3,xta3,v4,xta4,v5,xta5]', v1=xta1=0 %K(1,:)=0;K(:,1)=0;K(2,:)=0;K(:,2)=0;KX=K(3:10, 3:10)F(1,1)=0;F(2,1)=0;FX=F(3: 10, 1);u=inv(KX)*FX%求得悬臂梁节点2、3、4、5处得挠度和转角为:u =-0.0138-0.0105-0.0501-0.0180-0.1014-0.0225-0.1603-0.0240结果分析:(1)上述实验结果可知,悬臂梁在端点处的挠度和转角最大,这和材料力学得出的结论是一致的。
基于Matlab的变载荷刚架力学计算实验报告
基于Matlab的变载荷刚架力学计算实验报告姓名:L.H.M学号:专业名称:机械理论设计二〇二二年XX月目录一、实验要求 (1)二、实验内容 (1)三、实验数据 (1)四、实验目的 (1)五、计算方法及算法流程 (1)(一)力学法 (1)(二)有限元法 (4)六、实验结果与分析 (9)七、 Matlab代码清单 (10)(一)力学法的Matlab代码清单 (10)(二)有限元法的Matlab代码清单 (16)八、参考文献 (19)一、实验要求1、利用力学的方法,求变载荷作用下的悬臂刚梁的外力、变形和应力2、利用有限元的方法,求变载荷作用下的悬臂刚梁的外力、变形和应力二、实验内容如图1,悬臂刚梁结构。
AB段与BC段长度均为l,BC段上受到均布荷载q 的作用、且AB或BC段上还受到垂直于杆件的集中力F的作用(均布荷载q的大小与方向以及力F的作用位置、大小与方向可以自行定义)。
试编写程序,通过输入以上结构尺寸参数与荷载参数数值,绘制对应结构的剪力图、弯矩图和变形图。
图1 悬臂刚梁结构三、实验数据已知:1、刚架尺寸L=2 m(输入可变)2、均匀分布载荷q=20 kN/m(输入可变)3、集中力F=100 kN(输入可变)4、集中力距B点位置(输入可变)5、刚架的截面尺寸为a×a=100×100 mm(输入可变)6、刚架的材料为Q235-A四、实验目的1、熟悉matlab数学软件的操作2、掌握数学建模的基本方法3、会用基本的数学软件解决力学基本问题4、熟悉数学方法解决问题的流程五、计算方法及算法流程(一)力学法由理论力学知识,悬臂刚梁结构可以拆成两个杆体(即横杆BC和竖杆AB),得到如下受力图(图1-b,图1-c)由平衡方程,我们可以得到横杆BC图1-c中的D点处和B点处的弯曲、剪力和应力,以及竖杆AB图1-b中的B点处和A点处的弯曲、剪力和应力。
D点处:M D=q·(l-x)²/2;Q D=F+q·(l-x)/2;σD=6M D/a³;τD=Q D/a²B点处:M B=F·x+q·l²/2;Q B=F+q·l/2;σB=6M B/a³;τB=Q B/a²B点处:M’B=-M B;Q’B=-Q BA点处:M A=-M B;R Ax=0;R Ay=Q B;σA=6M A/a³;σAB=Q B/a²有了上述分析,就可以用matlab来计算并绘制刚架结构图、弯矩图、剪力图、应力图等。
基于Matlab的平面机构分析解析法
分类号 密级: UDC
第9讲 Matlab静力学求解
my_function 是函数名 p1, p2是参数名
例1 运用前面介绍的几个命令, 求以下力系的主矢和主矩
R i 1 Fi Fx i + Fy j Fz k
n
MO i 1 MO (Fi ) i 1 ri Fi
n n
正方体ABCD-EFGH边为a DA、HB、CG受力作用 大小均为P 求力系的主矢 力系对E点和对G点的矩
这是命令行
数组x=[1 2 3 4],若要求其中每个数的平方值: 输入:x.^2结果是?
正确结果
12
4)常用函数
sqrt(x) 开平方
abs(x) 绝对值
abs(3-4i)
exp(x) ex; log(x) 以e为底,x的对数 log(exp(2))
round(x)取整
syms x; 定义x为符号变量
M文件还可以写函数 例如前面的命令, dot, cross等,都是函数
M文件的函数,请见王沫然的书第五章
M文件函数的要点总结: 1. 函数名的形式:result = my_function(p1, p2) 2. 函数名与文件名一致,如my_function.m 3. 变量有局部变量,全局变量之分 result 是函数返回的结果
一点说明: matlab使用了非常高深的数学知识,若想了解内涵,则要看数值分析的 内容,若只看自带的帮助是学不来的内涵的,需要数学基础。 自带的帮助只是学习命令是干啥的,怎么调用命令
20
M文件
在命令行里写命令,写完就丢失了! 将命令保存到一个文件中,以.m结束,即M文件
相当于C或C++的.cpp文件
13
5)构造矩阵
(1)简单创建方法 row = [e1,e2,…,em]; A = [row1;row2;…;rown]
平面刚架静力分析有限元程序
有限单元法平面刚架静力分析程序#include<io.h>#include"string.h"#include"stdlib.h"#include"stdio.h"#include"math.h"void hbw();void sncs(int nel);void fix(int np);void trmat();void fis(int nel);void fpj();void force();void stiff();void addsm();void restr();void matmul();void soleq();void outdis();float sm[6][6],tsm[300][30],res[60][2],pj[300],t[6][6],d[6][6],r[300],fo[6],foj[6],pf[200][4],x[100],y[100],ae[10][3],sl,sn,cs,eal,eil;int nj,ne,nt,nr,npj,npf,nn,mbw,jel[100][2],nae[100],is[6];FILE *infile,*outfile;/************主函数**************/void main(){char name1[30],name2[30];int i,j,nel,np;printf("please enter data-filename\n");scanf("%s",name1);printf("please enter result-filename\n");scanf("%s",name2);if((infile=fopen(name1,"r"))!=NULL){fscanf(infile,"%d%d%d%d%d%d",&nj,&ne,&nt,&nr,&npj,&npf);for(i=0;i<ne;i++) fscanf(infile,"%d%d%d",&jel[i][0],&jel[i][1],&nae[i]);for(i=0;i<nj;i++) fscanf(infile,"%f%f",&x[i],&y[i]);for(i=0;i<nt;i++) fscanf(infile,"%f%f%f",&ae[i][0],&ae[i][1],&ae[i][2]);for(i=0;i<nr;i++) fscanf(infile,"%f%f",&res[i][0],&res[i][1]);}else{printf("the data-file not exit!");exit(1);}nn=3*nj;outfile=fopen(name2,"w");if(outfile==NULL){printf("the result-file not exist!");exit(1);}fprintf(outfile," statis analysis of plane frame\n");fprintf(outfile,"input data\n");fprintf(outfile,"************\n");fprintf(outfile,"control data\n");fprintf(outfile,"the num.of node:%3d\n",nj);fprintf(outfile,"the num.of mem:%3d\n",ne);fprintf(outfile,"the num.of type of section characteristic:%3d\n",nt);fprintf(outfile,"the num.of restricted degrees of freedom:%3d\n",nr);fprintf(outfile,"the num.of nodal loads:%3d\n",npj);fprintf(outfile,"the num.of non-nodal loads:%3d\n",npf);fprintf(outfile,"the num.of nodal degrees of freedom:%3d\n",nn);fprintf(outfile,"information of mem.\n");fprintf(outfile,"mem. start node end node type\n");for(i=0;i<ne;i++)fprintf(outfile,"%5d%10d%10d%10d\n",i+1,jel[i][0],jel[i][1],nae[i]);fprintf(outfile,"coordinates x and y of nodes\n");fprintf(outfile,"node x y\n");for(i=0;i<nj;i++)/*第二次输入*/fprintf(outfile,"%10d%10.2f%10.2f\n",i+1,x[i],y[i]);fprintf(outfile,"information of cross section each mem.\n");fprintf(outfile,"type aera moment of interia elastic modulus\n");for(i=0;i<nt;i++)fprintf(outfile,"%8d%15.5f%15.5f%20.2f\n",i+1,ae[i][0],ae[i][1],ae[i][2]);fprintf(outfile,"information restriction\n");fprintf(outfile,"rester.-no r estr.-disp.-no restr.-disp.\n");for(i=0;i<nr;i++)fprintf(outfile,"%10d%19.3f%19.3f\n",i+1,res[i][0],res[i][1]);hbw();for(i=0;i<nn;i++) pj[i]=0.0;if(npj==0) goto aa;fprintf(outfile,"nodal loads\n");fprintf(outfile,"node px py zm\n");for(i=0;i<npj;i++){ int no;float px,py,zm;fscanf(infile,"%d%f%f%f",&no,&px,&py,&zm);fprintf(outfile,"%10d%10.2f%10.2f%10.2f\n",no,px,py,zm);pj[3*no-3]=px; pj[3*no-2]=py; pj[3*no-1]=zm;}aa:for(i=0;i<nn;i++) r[i]=0.0;for(i=0;i<nr;i++){int ni;ni=floor(res[i][0]+0.1)-1;if(pj[ni]!=0.0) r[ni]=r[ni]-pj[ni];}if(npf==0) goto bb;fprintf(outfile,"non-nodal loads\n");fprintf(outfile,"loads leng.supp.to load mem type\n");for(i=0;i<npf;i++){fscanf(infile,"%f%f%f%f%f",&pf[i][0],&pf[i][1],&pf[i][2],&pf[i][3]);fprintf(outfile,"%15.2f%15.2f%15.2f%15.2f\n",pf[i][0],pf[i][1],pf[i][2],pf[i][3]);}for(np=0;np<npf;np++){nel=floor(pf[np][2]+0.1);sncs(nel-1);fix(np);trmat();fis(nel-1);fpj();}bb:for(i=0;i<nn;i++)for(j=0;j<mbw;j++) tsm[i][j]=0.0;for(nel=0;nel<ne;nel++){sncs(nel);trmat();stiff();matmul();fis(nel);addsm();}restr();soleq();outdis();force();}/*===================求最大半带宽========================*/ void hbw(){int nel;mbw=0;for(nel=0;nel<ne;nel++){int ma=abs(jel[nel][0]-jel[nel][1]);if(mbw<ma) mbw=ma;}mbw=3*(mbw+1);fprintf(outfile,"Half_Bandwidth Mbw:%5d\n",mbw);}/*矩阵相乘*/void matmul(){int i,j,k;for(i=0;i<6;i++)for(j=0;j<6;j++) d[i][j]=0.0;for(i=0;i<6;i++)for(j=0;j<6;j++)for(k=0;k<6;k++) d[i][j]=d[i][j]+t[k][i]*sm[k][j];for(i=0;i<6;i++)for(j=0;j<6;j++) sm[i][j]=0.0;for(i=0;i<6;i++)for(j=0;j<6;j++)for(k=0;k<6;k++)sm[i][j]=sm[i][j]+d[i][k]*t[k][j];}/*求单元常数*/void sncs(int nel){int ii,jj,k;float xi,yi,xj,yj;ii=jel[nel][0];jj=jel[nel][1];xi=x[ii-1];xj=x[jj-1];yi=y[ii-1];yj=y[jj-1];sl=sqrt((xj-xi)*(xj-xi)+(yj-yi)*(yj-yi));sn=(yj-yi)/sl;cs=(xj-xi)/sl;k=nae[nel];eal=ae[k-1][0]*ae[k-1][2]/sl;eil=ae[k-1][1]*ae[k-1][2]/sl;}/*求单元坐标转换矩阵*/void trmat(){int i,j;for(i=0;i<6;i++)for(j=0;j<6;j++)t[i][j]=0.0; t[0][0]=cs; t[0][1]=sn;t[1][0]=-sn; t[1][1]=cs; t[2][2]=1.0;for(i=0;i<3;i++)for(j=0;j<3;j++) t[i+3][j+3]=t[i][j];}/*求单元固端力*/void fix(int np){float w,c,c1,c2,cc,cc1,cc2;int i,im;w=pf[np][0];c=pf[np][1];c1=c/sl; c2=c1*c1; cc=sl-c;cc1=cc/sl; cc2=cc1*cc1;for(i=0;i<6;i++) fo[i]=0.0;im=floor(pf[np][3]+0.1);if(im==1){fo[1]=-w*c*(1.0-c2+c2*c1/2.0);fo[2]=-w*c*c*(6.0-8.0*c1+3*c2)/12.0;fo[4]=-w*c-fo[1];fo[5]=w*c1*c*c*(4.0-3.0*c1)/12.0;}else if(im==2){fo[1]=-w*(1+2*c1)*cc2;fo[2]=-w*c*c2;fo[4]=-w*(1+2*cc1)*c2;fo[5]=w*cc*c2;}else if(im==3){fo[1]=6*w*c1*cc1/sl;fo[2]=w*cc1*(2-3*cc1);fo[4]=-fo[2];fo[5]=w*c1*(2-3*c1);}else if(im==4){fo[1]=0.25*w*c*(2.-3.*c2+1.6*c2*c1);fo[2]=-w*c*c*(2.-3.*c1+1.2*c2)/6.0;fo[4]=-w*c/2.0-fo[2];fo[5]=0.25*w*c*c*c1*(1.-0.8*c1);}else if(im==5){fo[0]=-w*cc1;fo[3]=-w*c1;}else if(im==6){fo[0]=-w*c*(1.-0.5*c1);fo[3]=-0.5*w*c*c1;}}/*形成总结点荷载向量*/void fpj(){ int i,j,k,ii,jj;for(k=0;k<6;k++)foj[k]=0.0;for(i=0;i<6;i++)for(j=0;j<6;j++) foj[i]=foj[i]+t[j][i]*fo[j];for(ii=0;ii<6;ii++) pj[is[ii]]=pj[is[ii]]-foj[ii]; }/*形成单元刚度矩阵*/void stiff(){ int i,j;float s1,s2;for(i=0;i<6;i++)for(j=0;j<6;j++)sm[i][j]=0.0; sm[0][0]=eal;sm[3][0]=-eal; sm[3][3]=eal;s1=12.*eil/(sl*sl);s2=6.*eil/sl;sm[1][1]=s1; sm[4][1]=-s1;sm[4][4]=s1; sm[2][1]=s2;sm[5][1]=s2; sm[4][2]=-s2;sm[5][4]=-s2; sm[2][2]=4*eil;sm[5][5]=4*eil; sm[5][2]=2*eil;for(i=0;i<6;i++)for(j=0;j<i;j++)sm[j][i]=sm[i][j];}/*由单元位移分量码L形成总刚位移分量码IS(L)*/void fis(int nel){ int i,j;for(i=0;i<2;i++)for(j=0;j<3;j++) is[3*i+j]=3*(jel[nel][i]-1)+j; }/*形成结构原始总刚度矩阵*/void addsm(){ int i,j;for(i=0;i<6;i++)for(j=0;j<6;j++){ int kc;kc=is[j]-is[i];if(kc>=0) tsm[is[i]][kc]=tsm[is[i]][kc]+sm[i][j];}}/*约束处理*/void restr(){ int i;for(i=0;i<nr;i++){ int ni;ni=floor(res[i][0]+0.1); tsm[ni-1][0]=1.0e25;pj[ni-1]=tsm[ni-1][0]*res[i][1]; }}/*解线性方程组*/void soleq(){ float c1;int k,ni,im,i,m,j,nm,jm;for(k=1;k<nn;k++){ if(fabs(tsm[k-1][0])<=0.000001){ fprintf(outfile,"*****singularity in row %4d*****\n",k+1);goto fin;}ni=k+mbw-1; im=ni;if(ni>nn) im=nn;for(i=k+1;i<im+1;i++){ m=i-k+1;c1=tsm[k-1][m-1]/tsm[k-1][0];for(j=1;j<mbw-m+2;j++)tsm[i-1][j-1]=tsm[i-1][j-1]-c1*tsm[k-1][j+i-k-1];pj[i-1]=pj[i-1]-c1*pj[k-1]; }}if(fabs(tsm[nn-1][0])<=0.000001){ fprintf(outfile,"******singularity in row %4d******\n",nn);goto fin; }pj[nn-1]=pj[nn-1]/tsm[nn-1][0];for(i=nn-1;i>0;i--){ nm=nn-i+1;jm=nm;if(nm>mbw)jm=mbw;for(j=2;j<jm+1;j++)pj[i-1]=pj[i-1]-tsm[i-1][j-1]*pj[j+i-2];pj[i-1]=pj[i-1]/tsm[i-1][0]; }fin:return;}/*输出位移向量*/void outdis(){ int i;fprintf(outfile,"output results\n");fprintf(outfile,"******\n");fprintf(outfile,"nodal displacements\n");fprintf(outfile," node u v ceta\n");for(i=0;i<nj;i++)fprintf(outfile,"%10d%15.6f%15.6f%15.6f\n",i+1,pj[3*i],pj[3*i+1],pj[3*i+2]); }/*求单元杆端力、支座反力或结合点力*/void force (){ float dj[6],f[6],fj[6],dd[6];int nel,np,i,j,ip;fprintf(outfile,"Mem.N1 Q1 M1 N2 Q2 M2 \n");for(nel=0;nel<ne;nel++){sncs(nel);trmat();stiff();fis(nel);for(i=0;i<6;i++) dj[i]=pj[is[i]];for(i=0;i<6;i++) {dd[i]=0.0;f[i]=0.0;}for(i=0;i<6;i++)for(j=0;j<6;j++) dd[i]=dd[i]+t[i][j]*dj[j];for(i=0;i<6;i++)for(j=0;j<6;j++) f[i]=f[i]+sm[i][j]*dd[j];if(npf==0) goto a;for(np=0;np<npf;np++){ip=floor(pf[np][2]+0.1)-1;if(ip==nel){ fix(np);for(j=0;j<6;j++) f[j]=f[j]+fo[j];}}a:fprintf(outfile,"%5d%11.2f%11.2f%11.2f%11.2f%11.2f%11.2f\n",nel+1,f[0],f[1],f[2],f[3],f[4],f[ 5]);for(i=0;i<6;i++)fj[i]=0.0;for(i=0;i<6;i++)fj[i]=0.0;for(i=0;i<6;i++)for(j=0;j<6;j++)fj[i]=fj[i]+t[j][i]*f[j];for(i=0;i<6;i++) r[is[i]]=r[is[i]]+fj[i]; }fprintf(outfile,"Nodal Reaction\n");fprintf(outfile,"Node RX RY RM\n");for(i=0;i<nj;i++)fprintf(outfile,"%10d%15.4f%15.4f%15.4f\n",i+1,r[3*i],r[3*i+1],r[3*i+2]);}。
工程构件受力和刚度计算的MATLAB分析法
工程构件受力和刚度计算的MATLAB分析法工程构件受力和刚度计算是结构设计和分析中非常重要的一部分,它涉及到对构件受力和刚度进行计算的理论基础和方法。
而MATLAB作为一种广泛应用于科学计算和工程领域的软件工具,其强大的数学和算法功能使得其成为进行工程构件受力和刚度计算的理想选择。
在进行工程构件的受力和刚度计算时,首先需要建立合适的受力与形变模型。
其次,需要根据受到的外力和形变条件,建立构件的力平衡方程和形变方程。
最后,利用MATLAB的数值计算功能,对这些方程进行求解,以获得构件的受力和刚度。
在进行受力计算时,常用的方法包括静力方法、动力方法和有限元方法等。
其中,静力方法基于构件的受力平衡条件,通过求解受力方程组得到构件的受力分布。
动力方法则基于构件的振动特性,利用动力学方程求解得到构件的受力状态。
而有限元方法则是将结构离散为有限数量的单元,通过求解单元的刚度矩阵和载荷矩阵得到整个结构的受力情况。
在进行刚度计算时,常用的方法包括弹性刚度法和刚度矩阵法等。
其中,弹性刚度法是基于构件材料的弹性行为,通过求解弹性力学方程得到构件的刚度。
刚度矩阵法则是将结构离散为有限数量的节点,通过求解节点的刚度矩阵和载荷矩阵得到整个结构的刚度。
利用MATLAB进行工程构件受力和刚度计算时,用户可以编写自定义的函数和脚本来实现对受力和刚度方程的求解。
MATLAB提供了丰富的数学函数和工具箱,包括线性方程组的求解、特征值和特征向量的计算、矩阵运算等功能,这些功能可以大大简化受力和刚度计算的过程。
用户可以使用MATLAB的函数库来进行构件的受力和刚度计算,也可以根据实际需要进行函数的编写和修改。
总之,MATLAB分析法在工程构件受力和刚度计算中具有广泛的应用前景。
它通过提供强大的数学和算法功能,简化了受力和刚度计算的过程,并且可以根据实际需要进行函数的编写和修改。
工程师和科研人员可以利用MATLAB进行受力和刚度计算,以实现对工程构件的准确设计和分析。
Matlab辅助工程静力学分析
V0 . 8 No 12 .1
M8 . 0 0 2 2 1 "
Ma a t b辅 助 工 程 静 力 学分 析 l
曾德 惠
( 湖北 民族 学 院 理 学院 , 北 恩施 4 5 0 ) 湖 4 oo
摘要 : 以静 力学中的核 心 内容( 力系简化和 力系平衡 ) 为研 究对 象, 绍 了力学模 型和数 学模型 的建 立过程 以 介 及 Maa d b软件 编程 方法. 结合具体 实例 , 编制 了计算机辅助静 力计 算的通 用子程序 . 结果表 明 : 用 Ma a 利 tb解 决工 l 程静力计算 问题快捷、 准确 和有效 , 高了学生和设计人 员利 用计 算机解决 实际问题 的能力 , 提 为处理类似 计算提供 了有效的参考. 关键 词 : 力学; d b 力 系的简化 ; 系的平衡 静 Maa ; 力 中图分类号 :P 9 . ;B 2 T 3 19 T 1 1 文献标识码 : A 文章编号 :08 82 (0 0 0 — 0 2 0 10 — 4 3 2 1 ) 1 0 7 — 4
Co p e -ade m ut r i d Anay i fEn i e rng St tc s d o a l b lsso g n e i a is Ba e n M ta
ZE G De- i hu
( h o o cec , b i nvr t f ai a t sE si4 00 C a c S ol f i eHue U esy o N t n ie, nh 50 ,  ̄n ) S n i i r ol i 4
第2 第1 8卷 期 21 0 0年 3月
湖北民族学院学报( 自然 科 学 版 ) Junl f u e U ie i r aoat sN tr c neE io ) ora o bi nvr tf tn ie( a a Si c d i H sy o N i l i ul e tn
基于matlab的平面应力问题研究
基于matlab的平面应力问题研究
把握平面应力问题的发展趋势,不仅可以更好地解决工程问题,而且可以更精准地预测结构安全性。
Matlab作为一种计算数学软件,可以模拟平面应力问题,并有效解决相关问题,因此基于Matlab技术的平面应力分析研究受到社会各界的高度重视。
一、Matlab技术在平面应力分析中的应用
(1)Matlab技术可以求解平面应力分析问题,实现非线性状态的力学分析,可以模拟结构的动态变化,以最大程度地测量结构的稳定性。
(2)Matlab技术可以模拟复杂的平面应力分析问题,预测应力的变化情况,确定各种不同环境平面应力的影响因素,以确保结构的安全性。
(3)Matlab技术可以在非线性应力状态下进行模拟,实现对材料强度及变形性能的准确评估,以分析材料对结构安全性的影响,从而更好地保证安全可靠。
二、基于Matlab的平面应力分析的研究方法
(1)首先,建立数学模型,包括应力场模型、变形模型等,以用于模拟应力场分布,研究基于Matlab的平面应力分析问题;
(2)其次,运用Matlab对建立的数学模型进行对应的数值求解,将平面应力分析问题转化为适当的线性或非线性方程;
(3)最后,运用Matlab进行数据分析,并提出有效的解决方案,实现平面应力分析问题的有效解决。
三、结论
Matlab技术在平面应力分析中的应用使其能够实现非线性状态的力学分析,借助Matlab对复杂的平面应力分析问题进行有效模拟,研究分析实现了结构安全性的预测。
Matlab技术为平面应力分析提供了有效的计算方法,使得分析更准确,有助于提高工程的安全性及可靠性。
在未来,基于Matlab 的平面应力分析研究将不断发展,以更好地解决工程应用中的问题。
利用Matlab求解如下静力学题目
利用Matlab求解如下静力学题目,并撰写实验报告。
构架受力如图,各杆自重不计,销钉E固结在DH杆上,与BC槽杆为光滑接触。
已知:AD=DC=BE=EC=20cm,M=200。
试求A、B、C处的约束力。
mN⋅方法一步骤:1 画受力图,列平衡方程;图2-22 将平衡方程写成矩阵形式;3 利用matlab求解。
执行过的代码:clear%eq1、eq2、eq3为杆ADC平衡方程eq1='FAy-FDy+FCy=0';eq2='FAx+FDx-FCx=0';eq3='FDy-2*FCy-FDx+2*FCx=0';%eq4、eq5、eq6为杆DE平衡方程eq4='FE*cos(pi/4)-FDx=0';eq5='FDy-FE*cos(pi/4)=0';eq6='100-FE*0.1=0';%eq7、eq8、eq9为杆CEB平衡方程eq7='FCx+FE*cos(pi/4)-FBx=0';eq8='FBy-FE*cos(pi/4)-FCy=0';eq9='-2*FCy*cos(pi/4)-2*FCx*cos(pi/4)-FE=0';%用solve函数求解代数方程,得到其代数解s=solve(eq1,eq2,eq3,eq4,eq5,eq6,eq7,eq8,eq9,'FAx','FAy','FDx','FDy','FCx','FCy','FE','FBx','FBy'); FAx=subs(s.FAx)FAy=subs(s.FAy)FCx=subs(s.FCx)FCy=subs(s.FCy)FBx=subs(s.FBx)FBy=subs(s.FBy)FAx =-1.0607e+03FAy =1.0607e+03FCx =-353.5534FCy =-353.5534FBx =353.5534FBy =353.5534M=200;L=0.2;%M的单位为N*m,L单位为m A=[1 0 0 0 -1 0 1 0 00 1 0 0 0 -1 0 1 00 0 0 0 -2 2 1 -1 00 0 0 0 0 0 -2 0 sqrt(2)0 0 0 0 0 0 0 -2 sqrt(2)0 0 0 0 0 0 0 0 -10 0 -2 0 2 0 0 0 -sqrt(2)0 0 0 -2 0 2 0 0 -sqrt(2)0 0 0 0 sqrt(2) sqrt(2) 0 0 -1];B=[0;0;0;0;0;M/L;0;0;0];x=inv(A)*B复摆研究%%%%%子函数function ydot=fubai(t,y) global m g a Jydot=[y(2)-m*g*a*sin(y(1))/J]; %%%%%主函数global m g a J fm=1;g=9.8;a=2;J=3;f=pi/4;tmax=100;step=0.01;[t,y]=ode45('fubai',[0:step:tmax],[f,0]); subplot(2,2,1);plot(t,y)subplot(2,2,2);plot(t,y(:,1))。
平面连杆机构运动分析&动态静力分析及机械运动方程求解的Matlab语言m文件使用说明及算例
构件上点的运动分析函数文件(m文件)格式:function [ 输出参数] = 函数名(输入参数)p_crank.m function [p_Nx,p_Ny]=p_crank(Ax,Ay,theta,phi,l1)v_crank.m function [v_Nx,v_Ny]=v_crank(l1,v_Ax,v_Ay,omiga,theta,phi)a_crank.m function [a_Nx,a_Ny]=a_crank(l1,a_Ax,a_Ay,alpha,omiga,theta,phi)函数中的符号说明函数文件(m 文件)格式: function [ 输出参数 ] = 函数名( 输入参数 )p_RRR.m function [cx,cy,theta2,theta3]=p_RRR(bx,by,dx,dy,l2,l3,m)v_RRR.m function [vcx,vcy,omiga2,omiga3]=v_RRR(vbx,vby,vdx,vdy,cx,cy,bx,by,dx,dy)a_RRR.m function [acx,acy,alpha2,alpha3]=a_RRR(abx,aby,adx,ady,cx,cy,bx,by,dx,dy,omiga2,omiga3)函数中的符号说明m =1 m = -1RRR Ⅱ级杆组运动分析函数文件(m 文件)格式: function [ 输出参数 ] = 函数名( 输入参数 )p_RRP.m function [cx,cy,sr,theta2]=p_RRP(bx,by,px,py,theta3,l2,m)v_RRP.m function [vcx,vcy,vr,omiga2]=v_RRP(bx,by,cx,cy,vbx,vby,vpx,vpy,theta2,theta3,l2,sr,omiga3) a_RRP.m function [acx,acy,ar,alpha2]=a_RRP(bx,by,cx,cy,px,py,abx,aby,apx,apy,theta3,vr,omiga2,omiga3,alpha3)函数中的符号说明1 1∠BCP < 90︒,∠BC 'P > 90︒,m =1RRP Ⅱ级杆组运动分析函数文件(m 文件)格式: function [ 输出参数 ] = 函数名( 输入参数 )p_RPR.m function [dx,dy,sr,theta3]=p_RPR(bx,by,cx,cy,e,l3,m)v_RPR.m function [vdx,vdy,omiga3,vr]=v_RPR(bx,by,cx,cy,dx,dy,vcx,vcy,vbx,vby,theta3) a_RPR.m function [adx,ady,alpha3,ar]=a_RPR(bx,by,cx,cy,dx,dy,acx,acy,abx,aby,vr,omiga3,theta3)RPR Ⅱ级杆组运动分析实线位置,m =1 虚线位置,m = -1函数文件(m 文件)格式: function [ 输出参数 ] = 函数名( 输入参数 )F_RRR.m function [R12x,R12y,R23x,R23y,R34x,R34y]=F_RRR(bxy,cxy,dxy,s2,s3,m2,m3,Js2,Js3,M2,M3,F2,F3,as2,as3,alpha2,alpha3)RRR Ⅱ级杆组力分析R 23xF 2R F 3xR 23函数文件(m 文件)格式: function [ 输出参数 ] = 函数名( 输入参数 )F_RRP.m function [R12x,R12y,R23x,R23y,R34x,R34y,lcn]=F_RRP(bxy,cxy,s2,s3,m2,m3,Js2,Js3,M2,M3,F2,F3,theta3,as2,as3,alpha2,alph3)RRP Ⅱ级杆组力分析R 34函数文件(m 文件)格式: function [ 输出参数 ] = 函数名( 输入参数 )F_RPR.m function [R12x,R12y,R23x,R23y,R35x,R35y,lcn]=F_RRP(bxy,cxy,dxy,s2,s3,m2,m3,Js2,Js3,M2,M3,F2,F3,R34,theta3,as2,as3,alpha3)RPR Ⅱ级杆组力分析238. 作用有平衡力的构件力分析作用有平衡力的构件力分析函数文件(m文件)格式:function [ 输出参数] = 函数名(输入参数)F_Bar.m function [R01x,R01y,Mb]=F_Bar(axy,bxy,s1,m1,Js1,M1,F1,R12,as1,alpha1)函数中的符号说明9. 平面连杆机构运动分析算例例1图示曲柄摇杆机构,已知l 1=150mm ,l 2=220mm ,l 3=250mm ,l 4=300mm ,曲柄以n 1=100r/min 逆时针匀速转动,分析该机构的运动。
平面刚架静力分析程序
SUBROUTINE NJDIS COMMON/COM1/ NE,NJ,NTYPE,NDISP,NW COMMON/COM2/ X(200),Y(200),JN(3,200) NDISP=0 DO 20 J=1,NJ DO 20 I=1,3 IF(JN(I,J).GT.1) THEN JN(I,J)=-JN(I,J) ELSE IF (JN(I,J).EQ.1) THEN JN(I,J)=0 ELSE IF (JN(I,J).EQ.0) THEN NDISP=NDISP+1 JN(I,J)=NDISP END IF 20 CONTINUE DO 30 J=1,NJ DO 30 I=1,3 IF(JN(I,J).LT.0) THEN ID=-JN(I,J) JN(I,J)=JN(I,ID) END IF 30 CONTINUE RETURN
SUBROUTINE INPUT COMMON /COM1/ NE, NJ,NTYPE,NDISP,NW COMMON /COM2/ X(200), Y(200),JN(3,200) COMMON /COM3/JE(3,150),TYPEE(3,50) COMMON /COM4/ NPJ,NPF,PJ(3,150),PF(4,120) READ (5,*) NE,NJ,NTYPE WRITE(6,111) NE,NJ,NTYPE READ (5,*)(NJJ,X(J),Y(J),(JN(I,J),I=1,3),J=1,NJ) WRITE (6,112) (J,X(J),Y(J),(JN(I,J),I=1,3),J=1,NJ) READ (5,*) (NEE,(JE(I,J),I=1,3),J=1,NE) WRITE (6,113)(J,(JE(I,J),I=1,3),J=1,NE) READ (5,*) (NTP,(TYPEE(I,J),I=1,3),J=1,NTYPE) WRITE (6,114) (J,(TYPEE(I,J),I=1,3),J=1,NTYPE) READ (5,*) NPJ,NPF WRITE (6,115) NPJ,NPF IF (NPJ.NE.0) THEN READ (5,*) ((PJ(I,J),I=1,3),J=1,NPJ) WRITE (6,116) ((PJ(I,J),I=1,3),J=1,NPJ) END IF IF (NPF.NE.0) THEN READ (5,*) ((PF(I,J),I=1,4),J=1,NPF) WRITE (6,117) ((PF(I,J),I=1,4),J=1,NPF)
matlab矩阵位移法求解钢架
结构力学大作业一、 编程原理如图1-1,所计算结构为4层高,6跨在第3跨布置斜杆,节点为刚接的框架。
图1-1 框架结构简图(1) 位移编码以杆件为单元,将结构拆分,建立整体坐标系,并对节点位移按图1-2所示编码。
图1-2 位移编码图(2) 单元分析所有单元均为平面弯曲式自由单元如图1-3所示。
LLLLLLhhhhLLLLL图1-3 自由式单元干段位移和杆端力杆件的单元刚度矩阵322222223222000012612600646200000012612600626400EAEAllEI EI EI EI l l l l EI EI EI EI l ll l K EA EAl lEI EI EI EI l l l l EI EI EI EI l l l l ⎡⎤-⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥=⎢⎥-⎢⎥⎢⎥⎢⎥---⎢⎥⎢⎥⎢⎥-⎢⎥⎣⎦其中32112001260640EAlEIEIl l K EI EI l l⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦ 22122001260620EAl EI EI l l K EI EI l l ⎡⎤-⎢⎥⎢⎥⎢⎥-⎢⎥=⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥⎣⎦21222001260620EA lEI EI K l l EI EI l l⎡⎤⎢⎥⎢⎥-⎢⎥⎢⎥=--⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦ 22322001260640EAl EI EI K l l EI EI l l ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=-⎢⎥⎢⎥⎢⎥⎢⎥-⎢⎥⎣⎦(3) 建立局部坐标系分别建立如图1-4所示的竖向分体系局部坐标系,水平分体系局部坐标系和斜杆分体系坐标系。
图1-4 分体系局部坐标系的建立(4) 建立分体系刚度分别建立三个分体系的105×105的刚度矩阵,引入循环变量,依次对相应位移刚度赋值。
(5) 坐标转换对竖向坐标系和斜杆体系进行转置,其坐标转换阵为1010100001T ⎡⎤⎢⎥=-⎢⎥⎢⎥⎣⎦3000001L hd d hT d ⎡⎤⎢⎥⎢⎥⎢⎥=-⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦其中d =。
基于matlab的平面应力问题研究
基于matlab的平面应力问题研究平面应力问题是指具有给定的空间位置和尺寸的刚体所受到的平面外的平面力作用。
本文介绍了一种求解平面应力问题的常用方法——matlab分离变量法,并以它为例说明了应用matlab软件求解平面应力问题的一般步骤。
一、确定微分方程根据已知条件,列出应力微分方程。
(1)式中, Y为拉力,τ为应力。
(2)式中,θ为力的作用点到截面的距离; x为力作用点到质点的距离;y为应力; M为材料的弹性模量; a为材料的泊松比;ε为弹性系数。
(3)式中, M为结构的重量;G为物体的重力。
(4)式中, H为结构自身的重量。
(5)式中, F 为结构对支座的力。
(6)式中, B为结构对基础的力。
(7)式中, E为结构对地面的压力。
(8)式中, F′为结构对外部荷载的力矩。
(9)式中, E′为结构对外部荷载的力矩。
(10)式中, E′′为结构对外部荷载的力矩。
(11)式中, P′为结构的外加荷载; P为地面上物体的压力。
(12)式中, E′为结构对物体的力矩; F为结构对基础的力矩; a为结构的惯性矩; E为结构对地面的压力。
二、求解微分方程(1)分别在微分方程的两边取和,代入数值得到微分方程的近似解。
(2)计算系数即式中, X和M分别为求解的一对多边形元素,γ为导数。
(3)令,代入上式得到近似的积分关系式。
(4)代入解得到求解的积分表达式。
(5)设,代入式求解即可得到近似解。
(6)因此,由式求解。
(7)令,代入式得到积分表达式。
(8)令,代入上式得到近似的积分关系式。
(9)令,代入式得到近似的积分关系式。
(10)令,代入式得到积分表达式。
(11)因此,由式求解。
(12)因此,由式求解。
(13)若应力计算是线性的,则应力计算是线性的。
(14)若应力计算是非线性的,则应力计算是非线性的。
(15)三、整理数据进行回归分析整理出的应力分布曲线,并对应力分布曲线进行回归分析。
四、最后结论通过应用matlab软件对有限元方法求解平面应力问题的应用,实现了对平面应力问题的求解,将有限元方法应用于求解平面应力问题,能够使得复杂问题更容易被解决。
基于Matlab的超静定刚架计算和内力图绘制
基于Matlab的超静定刚架计算和内力图绘制李继生【摘要】在解算超静定刚架时,系数和自由项多,计算量大,内力图多。
根据力学方法,运用数学变换,基于Matlab大型数学计算软件,给出了刚架的一种算法,分步编制了横杆和竖杆的计算和绘图程序。
Matlab的这一应用减少了计算量,提高了绘图质量,拓展了Matlab在力学中的应用范围,在结构力学计算和绘图中具有普遍的适用性。
【期刊名称】《长江大学学报(自然版)理工卷》【年(卷),期】2011(008)006【总页数】3页(P121-123)【关键词】超静定刚架;内力图;Matlab【作者】李继生【作者单位】黄淮学院数学科学系,河南驻马店463000【正文语种】中文【中图分类】TU391;O342用结构力学[1]求解超静定刚架,当结构的超静定次数n较大或未知量数目较多时,系数和自由项的计算量和绘图量很大。
以力法为例,对于n×n阶系数矩阵,根据位移互等定理可知系数矩阵中, 有n+(n2-n)/2=(n2+n)/2个计算量,再加上n个自由项,所以一个n次超静定应有(n2+3n)/2个计算量;同时,也要绘制(n+1)个弯矩图。
应用Matlab[2-8]软件的丰富可靠的程序编制、矩阵运算、数据处理和图形绘制等便利工具,可高效简捷地解决计算量和作图问题。
下面,笔者基于Matlab大型数学计算软件,给出了刚架的一种算法,分步编制了横杆和竖杆的计算和绘图程序。
基于Matlab,用力法计算超静定刚架一般可分为4个步骤:①依据力学知识建立超静定刚架的力法基本方程;②建立各杆段的弯矩方程,用Matlab中的积分函数int[9]计算系数和自由项;③把系数和自由项代入力法基本方程,用Matlab中的矩阵除法X=A/b来计算多余未知力;④用Matlab语言编制的程序和其中的图形编辑窗口来绘制弯矩图和剪力图。
例1 用力法求图1所示刚架B点处的反力并作刚架的弯矩图和剪力图,抗弯刚度EI=常数。
基于matlab GUI的平面四杆机构的运动分析
基于matlab GUI的平面四杆机构的运动分析一、目的通过matlab对平面四杆机构进行运动仿真,并以GUI界面方式实现输入输出的参数化,对平面四杆机构进行位置分析、速度分析、加速度分析和静力学分析。
此外,通过动画演示,更加形象直观地观察机构的运动过程。
最后,将程序编译成.exe独立可执行文件,可以在其它没有安装matlab的机器上运行。
二、设计思路通过matlab的GUI功能模块,创建一个图形用户界面,在自动生成的代码框架中对初始化函数和回调函数等进行编辑,建立与控件相关联的程序:控件属性、位置分析、速度分析、加速度分析、静力学分析、动画演示等。
图1是平面四杆机构的示意图,输入角q的运动规律为q=pi/50*t^2+q0,r1、r2是从动角。
对t时刻沿着杆长距离原点A的任意一点进行分析。
注意:输入输出角的单位为度,时间t的取值范围为0:0.05:10,任意点lx的取值范围为0~a1+a2+a3,估算的从动角r1、r2的迭代初始值不能偏离平衡位置太大。
图1、平面四杆机构示意图三、设计流程1、通过GUI模块创建图形用户界面命令方式:在Matlab命令窗口键入>>guide;菜单方式:在Matlab的主窗口中,选择File>New>GUI命令,就会显示GUI的设计模板。
如图1所示。
图2、创建图形界面2、设计图形界面在创建之后的图形界面中插入坐标轴axes,静态文本框static text,编辑文本框edit text,按钮push button等等。
如图所示。
图3、图形界面设计3、编辑回调函数1)位置分析:输入角的函数为:q=pi/50*t^2+q0。
在时间t=0~10s内,每一个时间点估算两个初始从动角,根据牛顿-拉普森迭代得到准确的机构位置。
10s刚好主动角经历了360度,记录每一时刻的位置,便可以动画演示。
2)速度分析:输入角速度为:dq=pi/25*t。
选择杆件上的任意一点(坐标表示为质点沿着杆件到原点A的距离)做分析,正确表达出角速度系数和速度系数,便可以求出质点的速度。
Matlab求解理论力学问题系列(一)刚体系统及桁架受力问题
第43卷第2期力学与实践2021年4月M a tla b 求解理论力学问题系列(_)刚体系统及桁架受力问题高云峰〇(清华大学航天航空学院,北京100084)如果在理论力学教学中引入M a t l a b ,根据经验, 只需要三次课,就可以让学生掌握代数方程和微分 方程的数值求解、符号推导、动画演示等,让学生对 理论力学问题的理解有飞跃式的提升;而教学中某 些解题技巧性的内容则可以压缩,保持总学时不变。
具体来说:(1)在静力学中,以往对于复杂系统的受力分析通常要适当取分离体,有时需要高度的技巧W ;同时 由于传统计算能力的限制,往往只要求解出某些部 件的受力;如果采用M a t l a b 处理,可以采用统一的 处理方式,把系统全部拆开,快速求出所有部件的受 力,对系统的整体和各部件受力有更全面的了解。
(2)在运动学中,以往分析系统运动时,强调求 特定时刻或特定位置某点或刚体的速度和加速度,而 系统的整体运动特点、某些点的运动轨迹有时难以想 象;而采用M a t l a b 处理,可以求出系统任意点或刚 体在任意时刻的速度和加速度等运动量,特别是其 画图和动画演示功能,可以快速直观地显示系统的 整个运动过程、给出任意点的运动轨迹。
(3)在动力学中,以往绝大部分问题都只能列写 动力学方程,通常没有解析解,传统数学分析的方法 也用不上,系统丰富复杂的动力学现象很难从方程 中看出;而采用M a t l a b 处理,可以获得系统整个运 动过程中的受力、速度和加速度等量,还可以快速直 观地演示系统的运动过程。
考虑到目前理论力学教学中对于数值计算、符 号推导很少介绍,为此专门准备系列理论力学教学 文章,每篇介绍1〜2个典型的理论力学问题及如何 利用M a t l a b 进行处理。
系列文章具体计划分为如下本文于2020-06-01收到。
1) E-m ail: gaoyunfeng@专题:(1) 静力学专题1篇:刚体系统及桁架的受力问题(着重介绍M a t l a b 中代数方程的数值求解和符号求解(2)运动学专题1篇:典型机构的运动分析(着重介绍M a t l a b 中非线性方程组的求解、动画显示,如何对运动方程求导数);(3)动力学专题2篇:单摆和椭圆摆的运动和周期(着重介绍M a t l a b 中微分方程的数值求解、计算 可靠性、根据数据的快速傅里叶变换求周期)、乒乓 球滚动问题(着重介绍M a t l a b 中分段积分的处理方法,以及与分段对应的积分中断点问题);(4) 综合运用专题1篇:数据转换问题(着重介绍在不同坐标系中看到结果,包括运动和动力学问 题)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于MATLAB 的平面刚架静力分析
为了进一步理解有限元方法计算的过程,本文根据矩阵位移法的基本原理应用MATLAB 编制计算程序对以平面刚架结构进行了静力分析。
本文还利用ANSYS 大型商用有限元分析软件对矩阵位移法的计算结果进行校核,发现两者计算结果相当吻合,验证了计算结果的可靠性。
一、 问题描述
如图1所示的平面刚架,各杆件的材料及截面均相同,E=210GPa ,截面为0.12×0.2m 的实心矩形,现要求解荷载作用下刚架的位移和内力。
5m
4m
3m
图1
二、矩阵位移法计算程序编制
为编制程序方便考虑,本文计算中采用“先处理法”。
具体的计算步骤如下。
(1) 对结构进行离散化,对结点和单元进行编号,建立结构(整体)坐标系
和单元(局部)坐标系,并对结点位移进行编号; (2) 对结点位移分量进行编码,形成单元定位向量e λ;
(3) 建立按结构整体编码顺序排列的结点位移列向量δ,计算固端力e F P 、等
效结点荷载E P 及综合结点荷载列向量P ;
(4) 计算个单元局部坐标系的刚度矩阵,通过坐标变换矩阵T 形成整体坐标
系下的单元刚度矩阵e T e K T K T = ; (5) 利用单元定位向量形成结构刚度矩阵K ; (6) 按式1=K P δ- 求解未知结点位移; (7) 计算各单元的杆端力e F 。
根据上述步骤编制了平面刚架的分析程序。
程序中单元刚度矩阵按下式计算。
32322
23
2
32
22
0000
1261260
064620
00001261260062640
EA
EA l
l EI EI
EI EI l l l l EI EI EI EI l l l l K EA EA l l EI EI EI EI l l l l EI EI EI EI l l
l l ⎡⎤-
⎢⎥⎢
⎥⎢⎥-
⎢⎥
⎢
⎥⎢⎥-
⎢⎥⎢
⎥=⎢⎥-⎢⎥
⎢
⎥⎢⎥---⎢⎥⎢
⎥⎢⎥-⎢⎥⎣
⎦
^.
转换矩阵则按下式计算。
cos sin 0000sin cos 0000001000000cos sin 0000sin cos 00
1T ααααααα
α⎡⎤⎢⎥-⎢⎥⎢⎥=⎢
⎥⎢⎥⎢⎥-⎢⎥⎣⎦
计算程序框图如图2所示,具体的程序代码见附录1。
图2 MATLAB矩阵分析法程序框图
三、解题步骤
取整体坐标系如图3所示,对结构进行离散化,对结点和单元进行编号如图4所示,局部坐标系用单元中箭头的方向表示,原始数据如下:
1
3
4
5
6
⑤
图3 图4 刚架结点输入矩阵为,
x=[0 0;0 -5;1.63 -6.37;4 -5;4 -1;4 2];
各单元定位向量为,
locvec1=[1 2 3 0 0 0];
locvec2=[1 2 3 4 5 6];
locvec3=[4 5 6 7 8 9];
locvec4=[7 8 9 10 11 12];
locvec5=[10 11 12 0 0 0];
输入截面参数,
E=2.1e11;%E=210GPa
a=0.12; %矩形截面长0.12m
b=0.2; %矩形截面宽0.2m
输入整体坐标系下各单元结点荷载列阵,
f(1,:)=zeros(1,6);
f(2,:)=[0 0 0 0 40e3 0];
f(3,:)=zeros(1,6);
f(4,:)=[0 0 0 -50e3 0 0];
f(5,:)=zeros(1,6);
输入整体坐标系下单元1等效节点荷载
q=10e3; %10kN/m
fe=[0.5*q*l(1),0,-q*l(1)^2/12,0.5*q*l(1),0,q*l(1)^2/12];
由此计算得到平面刚架整体坐标系下的结点位移(m),
d=
0.0035
0.0000
-0.0004
0.0030
-0.0005
-0.0004
0.0027
0.0000
0.0016
-0.0051
0.0000
-0.0006
各个单元的杆端力如表1所示,
四、计算结果校核
在ANSYS中使用beam3单元,按照如图4所示的离散结构建立平面刚架模型施加约束和荷载,得到的有限元模型如图5所示。
计算分析后得到结构的轴力图、剪力图和弯矩图如图6、7、8所示,命令流见附录2。
图5 有限元模型图6 轴力图(kN)
图7 剪力图(kN)
图8 弯矩图(kN·m)
从ANSYS计算结果中提取各结点位移、内力,并与矩阵位移法分析的结果比较,得到表2、3。
节点号项目矩阵位移法ANSYS 误差
1
Ux(m) 0 0 0 Uy(m) 0 0 0 Rotz(rad) 0 0 0
2
Ux(m) 0.003478 0.00348 -2E-06 Uy(m) 0.0000174 0.0000174 0 Rotz(rad) -0.00037 -0.000365 -5E-06
表3 各结点内力比较
由表2、表3的结果对比可知,两种方法的计算结果十分接近,误差均可以忽略不计,从而验证了计算结果的可靠性与准确性。
四、结论
通过对一个平面刚架静力分析问题的求解,本文编制的平面刚架静力分析程序计算结果与有限元软件ANSYS计算结果校核后,发现两者计算结果十分接近,误差可忽略不计,说明该程序计算结果的可靠性与精确性。
附录1 矩阵位移法计算程序
附录2 ANSYS建模计算命令流
/clear
/prep7
B=0.120$H=0.200$E=210000000 et,1,beam3
mp,ex,1,E
mp,prxy,1,0.3
r,1,B*H,B*H*H*H/12,H
k,1
k,2,0,5
k,3,1.6304,6.3681
k,4,4,5
k,5,4,1
k,6,4,-2
*set,i
*do,i,1,5
l,i,i+1
*enddo
lesize,all,0.5
latt,1,1,1
lmesh,all
dk,1,all
dk,6,all
fk,3,fy,-40
fk,5,fx,-50
lsel,s,,,1
esll,s
sfbeam,all,1,pres,10
allsel,all
ftran
sftran
/pbc,all,,2
/psf,pres,norm,2,0,1
eplot
/solu
solve
/post1
/pbc,u,,1 !显示支座约束符号,并图形显示变形pldisp,1 !将当前主要结果列表显示
presol,elem
!/pnum,sval,1
etable,mi,smisc,6
etable,mj,smisc,12
plls,mi,mj,-1 !弯矩图kN.m
etable,qi,smisc,2
etable,qj,smisc,8
plls,qi,qj,-1 !剪力图kN
etable,ni,smisc,1
etable,nj,smisc,7
plls,ni,nj,1 !轴力图kN。