引言
记得在做本科毕设时,需要推导一个振动系统的运动方程,于是自己就在纸上推导,推着推着,发现了前面一个小错误,然后刚才推导的就全作废了。这时我不禁自问:现在技术这么发达,难道就没有一个软件代替手工推导吗?
于是,自己便开始找相关软件。首先找到了Matlab,为此特意去学习了Matlab的符号推导,但是发现:Matlab的公式推导时,公式的显示形式与平常手写的不一样,比如a的平方显示a^2;Matlab强于数值计算,它的公式推导实际上是调用Maple的内核进行计算的。所以,我便转向了Maple的学习,接触Maple之后,有点相见恨晚的感觉。
本人自从接触Maple之后,便爱不释手。用Maple做过矩阵论的作业,因为矩阵论里的初等变换、矩阵分解等计算相当繁琐;也用Maple做过有限元作业(因为矩阵计算、方程组求解很费事),并使用Maple语言编写了自定义功能的函数,实现了输入参数就自动计算出结构刚度、质量矩阵的效果;再接下来,就是做项目和论文了。
经由研究生期间的两个项目的实际使用,自己对Maple公式推导的掌握已经有了实质性的提高,并发现使用Maple推导公式有如下好处:
① 公式显示形式能够实现与纸面书写完全一致;
② 不怕推导过程中出现的错误,因为只需重新计算一遍即可;
③ 推导出来的成果,易于课题组传承;
④ 推导结果能够自动转成Matlab代码,用于编程计算,Maple+Matlab实为绝配;
为了让更多的人学习使用Maple,故在此将自己的使用心得分享出来。本文不讲述Maple的基础使用内容,诸如如何赋值、插入文本块等,重点讲述公式推导中经常用到的操作和函数。
1. Maple的数学知识
公式推导中难免会遇到求导、积分、解方程等,求导函数diff,积分函数int,解方程用solve具体使用可以查看帮助文档。
另外,由于经常要涉及多自由系统,所以线性代数相关的知识要掌握。比如:
① 行向量、列向量、矩阵的创建;
② 矩阵元素、行、列的索引;
③ 向量和矩阵的运算,如矩阵的乘、逆、转置等;
上述操作(当然还有其他的,不一一列出了)是经常会遇到的,必须掌握在Maple中如何实现。另外,需注意:使用Maple中线性代数相关的函数需要加载LinearAlgebra函数包。
2. Maple的表达式化简
(1)表达式序列
表达式化简的操作对象是表达式,所以首先要明白Maple中表达式的结构(这个很多出版教程不会提)。一个表达式,Maple将其视为一个表达式序列,比如
上式就含有四个子表达式:
(2)化简步骤
表达式化简实际就是对整个或部分表达式进行化简操作,主要涉及以下方面的内容:
① 了解该表达式的信息
要对一个长的表达式进行化简,首先需要了解该表达式由哪些量组成,哪些是变量,哪些是常量,常量或变量的最高次是多少。对于一些很长的表达式,肯定不能用眼睛去看,需要借助Maple的自带函数。
② 确定对该表达式的全部还是部分进行化简
若式子短,那就整个化简;若是对部分化简,就需要取出表达式中的一些项,或者取出分子,又或者取出方程的右边,这时就会涉及取项函数;
③对取出表达式执行化简操作
化简操作主要有展开和替换,需要明白的是,展开能化简表达式是因为它能合并同类项和约分,比如展开之后出现3a-5a,软件肯定自己计算为-2a。
替换能化简,是因为我们使用短的表达式去替换长的表达式。替换是表达式化简中最常用的操作,使用过程相当灵活,这里不多说,可以在QQ上交流。
④ 美化表达式
这一般是表达式化简的收尾工作,美化表达式是为了跟平常手推公式保持一致,也可以缩短其长度,比如xy+2xz,可以将其写成x*(y+2z),又比如2x+2y,可以将其写成2(x+y)等。当然,推导过程中有时也会涉及表达式的美化,目的是为了能清楚了解表达式的组成信息。
总而言之,化简表达式的基本原则就是,人要完全控制软件的每一步操作,并能够大致预测软件的计算结果,因为Maple只是工具,是我们的“笔和纸”而已。
(3)例子
下面展示个例子吧,该实例是我第一次使用Maple时推导的公式,算是有点纪念意义。如下图所示,是振动中常见的动力吸振器模型,现需要求解m1、m2的振幅X1、X2。
Maple推导的具体步骤如下:
我的另一篇博客展示了一个使用Maple软件推导直升机旋翼气动力和力矩的例子,感兴趣的同志可以浏览一下。
3 结语
既然Maple这类数学软件功能如此强大、完美,我们为什么不将它们作为自己学习、工作的工具,用它们推导那些计算繁琐、长而复杂的公式,彻底赶走自己对公式的畏惧,大幅提高自己学习的深度、效率和兴趣。
本次的分享暂时到这里,如果有需要了解或讨论的地方,欢迎加Q。最后,需要说明的是,Maple的使用绝不限于文中描述的内容,它更多的功能需要个人的实际使用和需求去解锁、挖掘。另外,针对文中的第1、2部分,本人研究生期间分别整理了几个详细的Maple计算文件及相关的推导实例,有需要的同志可以联系我。有了这几个Maple学习文件,应付常用的公式推导应该绰绰有余。本人联系方式如下:
Q Q:2481720766
邮箱:2481720766@qq.com