MatLab在有限元刚度矩阵推导中的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第26卷第2期重庆交通学院学报v01.26No.22007年4月JOURNALOFCHONGQING:姒07rONGUNⅣERSrrYApr..2007·____I____目一rr自目l_==日日一
MatLab在有限元刚度矩阵推导中的应用
周水兴1’2,陈山林1
(1.重庆大学,重庆400045;2.重庆交通大学土木建筑学院,重庆400074)摘要:MatLab具有强大的符号运算功能.以平面梁单元刚度矩阵为例,详细介绍MatLab在单元刚度矩阵推导中的具体应用,编写了平面梁单元刚度符号运算程序,运算结果与手工推导完全一致,该方法可进一步推广到其它单元甚至到更复杂非线性单元刚度矩阵推导中.
关键词:MatLab;符号运算;刚度矩阵;推导
中图分类号:0242.21文献标识码:A文章编号:1001.716X(2007)02.0029.03
MatLabApplicationtotheMatrixDeductionofFiniteElementStiffness
ZHOUShui—xin91..。CHENShan.1inl
(1.ChongqingUniversity,Chongqing400045,China;
2.SchoolofCivilEngineering&Architecture,ChongqingJiaotongUniversity,Chongqing400074,China)Abstract:MatLabhasstrongsymbolicoperationfunction.Withtheexampleofstiffnessmatrixofplane
beamelement,theapplicationofdeducingelementstiffnessmatrixisintroducedindetailforthefirsttime,andthesymbolicoperationprocedure
ofplanebeamelementisdevdoped,andtheoperationresultis
completelyin
accordancewiththehandicraftdeduction.Thismethodcanfurtherexpandtheapplicationofdeducingmatrixtootherelementsmorecomplicatednonlinearelement.KeywordsiMatl.ab,symbolicoperation,elementstiffnessmatrix,deduce
MatLab是美国MathWork公司开发的用于数值计算、概念设计、算法研究、建模仿真、实时实现理想的集成环境,因其完整的专业体系和强大的运算功能,已广泛应用于工业、电子、信号处理、控制、医疗、建筑、教学等各个领域….
MatLab本意是矩阵实验室(MatrixLaboratory),以向量和矩阵运算为基础,强大的数值计算功能是其最具代表性的特点.MatLab的数学计算包括数值计算和符号计算,前者主要用于矩阵、向量的各种数值计算;后者主要是计算式中带有符号变量、表达式的运算.该运算符由符号数学工具箱提供支持,有复合、简化、微分、积分及求解代数方程和微分方程的工具.MatLab符号数学工具箱中的工具建立在功能强大的Maple软件基础上.
有限元是近代数值计算最有效方法之一.有限元法的基础是单元刚度矩阵的推导,目前,刚度矩阵推导已有一个相对固定的模式,而烦琐、复杂的矩阵运算、微分、积分是刚度矩阵推导中的主要内容.通常,这种矩阵运算是由手工来完成的,工作量大,而且极易出错.利用MatLab丰富的符号运算功能,完成刚度矩阵推导过程中的符号运算,不但速度快,而且准确性高.
Maflab的命令和函数相当多,本文仅就涉及到MatLab符号运算作一些简要介绍,然后结合平面梁单元刚度矩阵的推导,用MatLab完成该单元刚度矩阵的符号运算,结果完全一致.
1MatLab符号运算的一般规定
1.1符号标变量和表达式的创建
收稿日期:2006-02-07;修订日期:2006-02-23
基金项目:重庆市教委项目(KJ050407);交通部西部交通建设科技项目(20033188142024)
作者简介:周水兴(1967-),男,浙江嘉兴人,教授,主要从事桥梁设计理论研究.e-mall:shuixingzhou@cquc.edu.cn
30重庆交通学院学报第26卷
MatLab中符号标量、变量和表达式是通过命令sym、syms来创建的.如:
>>x=sym(’x’);
>>abc=sym(’alpha’)
>>fun=sym(’a宰x'2+b'lcX+c’)
这里,>>是MatLab命令提示符,上述命令中前两个创建符号标量x,alpha,最后一个创建符号表达式a木x2+b半x+c.对符号表达式,还需指定表达式中的各个标量,如a,b,C,X.MatLab中,除了上面介绍的方法外,还提供了一种简洁的方法,syms命令,如:
>>symsabCX
1.2符号矩阵
在MatLab中,符号矩阵的元素为符号表达式,可用函数sym产生,如:
>>S=sym(’[x,Y,z;a,b,c;u,v,W]’)
该命令等价于:
>>symsxYzabcuVW
>>S=[x,Y,z;a,b,c;u,v,w]
两者效果是一致的.对数值矩阵,也可以用sym把数值矩阵转换为符号形式.在转换过程中,函数sym尽可能地把数值矩阵中的非整元素指定为小的整数之比,以有理方式表示,如果元素是无理数,则在符号形式中sym将用符号浮点数表示元素.1.3符号矩阵的化简和格式化
符号运算后,符号表达式有时非常复杂,为此,MatLab提供了能够化简复杂符号表达式的诸多命令,有pretty(用于将符号表达式以常用方式显示)、collect(用于将表达式中同类项合并、合并后的多项式以变量的幂次方按大小依次排列)、expand(用于展开符号表达式中的各项子式)、factor(用于符号分解)、subs(较长子表达式的置换)、simplify(用于符号表达式中进行等式的恒等替换)、simple等.1.4符号微积分
Matlab符号工具箱中提供了多种符号表达式的微分diff和积分int函数形式,有:
diff(f),diff(f,’t’),dill(f,n),diff(f,’t’n),int(f),int(f,’t’),int(f,a,b),int(f,’t’,a,b)和int(f,’m’,’n’).有关微分diff和积分int的详细内容可参考MatLab教程,这里不再赘述.
2平面梁单元刚度矩阵
为便于读者更好的理解MatLab在单元刚度矩阵推导中的应用,文中简要列出了平面梁单元刚度矩阵的推导过程.
2.1平面梁单元位移模式‘21
对平面梁单元,单元的位移模式为
Ⅱ=ao+aI石
(1)秽=bo+bl省+62菇2+bsx3(2)
单元节点位移列向量:
…。=[u;吼0i叶吩岛]7
利用单元ij的边界条件,解出上述系数,有
u=[(1一x/1)00x/l00]{6}。=札(髫){艿}。(3)tJ=[0(1—3x2/12+2戈3/Z3)(%一2x2/l+菇3/22)0(3x2/12—2x3/13)(一搿2/Z+
戈3/Z2)]{艿}。=[^L(菇)]{6}。(4)2.2用结点位移表示应变和应力
忽略剪切影响,梁单元受到拉压和弯曲变形后的线应变为:
…=hdu/d…x:)=一■…。=
[B]{艿}。(5)式中,
[日]:∥引,1
L一∥:(髫)J
(6)[B]为应变矩阵.由胡克定律,单元中的应力表达式为:
{矿}=[D]{占}=[D][B]{艿}‘(7)
2.3梁单元刚度矩阵
根据虚位移原理,梁单元刚度矩阵为
[k]=『JJ[B]’[D][B]dy(8)3符号矩阵的运算
3.1应变矩阵[B]的计算
应变矩阵中,有两个形函数表达式[札(菇)]、[见(石)]的微分,在Matlab中定义应变矩阵和微分的程序段如下:
Nu=[1一x/L00x/L00]%定义形函数矩阵Nu
Nv=[01—3,lcx'2/L'2+2,lcx'3/L3戈一
2拳x'2/L+x^3/L'203’lcx'2/L"2—2木x^3/L^3一x'2/L+x^3/L'。2]
B=[diff(Nu,’菇’,1);一Y术diff(Nv,’戈’,2)]%两个形函数分别进行变量戈一阶微分,然后形成