




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、常用数学软件的功能及特点比较1 常用数学软件简介从计算机发明到现在已经有50 多年的时间了, 随着计算机的普及, 计算机技术已被广泛应用于各行各业,对科学发展起到了巨大的推动作用伴随科学研究的不断深入,科技工作者经常需要对大量数据进行分析处理或者对复杂问题进行计算求解为了减轻科技工作者的压力,许多数学软件被相继开发常用的数学软件包括符号计算软件,如Mathematica、 Maple 等;数值计算软件,如Matlab、MathCAD等;求解最优化问题软件,如 Lingo、Lindo等.数学软件的优越性主要在于它能够进行大规模的代数运算.通常我们用笔和纸进行代数运算只能处理符号较少的算式 , 当
2、算式的符号上升到百位数后,手工计算便成为可能而不可行的事,主要原因是在做大量符号运算时,我们很容易出错,并且缺乏足够的耐心.当算式的符号个数上升到四位数后,手工计算便成为不可能的事,这时用计算机代数系统进行运算就可以做到准确 ,快捷 ,有效 .下面介绍三个比较常用的数学软件 Mathematica 、 Matlab 和 Lingo 1.1 Mathematica 软件Mathematica 是由美国物理学家Stephen Wolfram 领导的 Wolfram Research 公司 1986 年开发的数学软件, 1988年发布 Mathematica 系统的 1.0 版,因为系统精致的结构和
3、强大的计算能力而被广为流传,经过不断扩充和修改后,在 1991 年和 1997 年推出了功能更加充实和完善的Mathematica 2.0 版和 Mathematica 3.0 版, 1999 年又推出了 Mathematica 4.0 版,现在的最新版本是Mathematica 5.2.2 版Mathematica 是一个拥有强大的符号计算和数值计算能力的软件,它将数值、符号、计算引擎、图形运算、编程语言、文字处理和与其他应用程序的高级连接等众多功能 有机地结合在一起 Mathematica 是一个很容易扩充和修改的系统它提供了一套描述方法,相当于编程语言,用这个语言可以编写程序,解决各种特
4、殊问题.Mathematica的基本系统主要是用C语言开发的,因而可以比较容易地移植到各种平台上 Mathematica 还是一个交互式的计算系统,计算是在用户和Mathematica 互相交换、 传递数据信息的过程中完成的 Mathematica 系统所接受的命令称作表达式,系统在接受了一个表达式以后就对它进行处理,然后再把计算结果返回 Mathematica 是最大的单应用程序之一, 它内容丰富功能强大的函数覆盖了初等数学、 微积分和线性代数等众多的数学领域Mathematica 软件虽然功能强大,但它的语言非常简单,很容易学会并且熟练掌握1.1.1 Mathematica 具有强大的运算
5、功能114 1 T -4 2例1求S00 83 的精确解及近似解.99In1:= 100A(1/4)*(1/9)A(-1/2)+8A(-1/3)*(4/9F(1/2)*PiOut1=3 M -(精确解)3In2:= N%Out2= 10.543(近似解)1.1.2 Mahematica具有强大的绘图功能例2描绘函数z sin xy在3,3上的图形.11In1:= Plot3DSinx y,x,-Pi,Pi,y,-3,31 0.50 -0.5-1Out1= -Graphics3D-1.1.3 Mathematica 还具有一些专用的函数,主要用来查看和设置日期、时间、目录;测试、 提高表达式的计
6、算速度等例 3 ln1=DateOut1=2008,5,1,13,58,26输出的元素依次是当前的年、月、日、时、分、秒.设置时间上限,表示如果担心计算时间太长,还可以使用TimeConstrainedexpr,t,failexpr 当计算表达式expr花费的时间超过t秒后,强制中止计算,返回表达式 failexpr例 4 ln2=TimeConstrained,2,0k 1 Pr imekOut2=0.1.2 Matlab 软件Matlab是MAT rix Laboratory 的缩写,是矩阵实验室的意思.70年代中期,美国的Cleve Morler教授在给学生开设线性代数课程时,为了让学生
7、能使用子程序又不至于在编程上花费过多的时间便为学生编写了使用子程序的接口程序,取名为 Matlab. 80年代初期,Cleve Morler教授采用C语言编写了 Matlab 的核心 1984 年, Cleve Morle 和 John Little 成立 Math Works 公司,正式把Matlab推向市场 1992 年 MathWorks 公司于推出了 Matlab 4.0 版本, 1994 年的 4.2 版本扩充了 4.0 版本的功能, 尤其在图形界面设计方面更提供了新的方法 1997 年推出的 5.0 版允许了更多的数据结构,如单元数据、多维矩阵、对象与类等,使其成为一种更方便编程的
8、语言 1999 年推出的 Matlab 5.3版在很多方面又进一步改进了 Matlab 语言的功能 2000 年 10 月底推出了其全新的 Matlab 6.0 正式版,在核心数值算法、界面设计、外部接口、应用桌面等诸多方面有了极大的改进经过不断的改进与完善,在 2007 年秋季推出了 Matlab 的最新版本R2007b Matlab 是集数值计算、符号计算和图形处理等功能于一体的工程计算应用软件 Matlab 不仅可以处理代数问题和数值分析问题,而且还具有强大的图形处理和仿真模拟等功能他的图形功能既包括对二维和三维数据可视化、图形处理、动画制作等高层次的绘图命令,也包括可以完全修改图形局部
9、及编制完整图形界面的低层次绘图命令可以从线型、边界面、色彩、渲染、光线、视角等方面把数据的特征表现出来它的图象处理工具包是由一系列支持图象处理操作的函数组成的,所支持的图象处理操作有:几何操作、区域操作和块操作、线性滤波和滤波器设计、变换、图象分析和增强、二值图象操作等图象处理工具包的函数,按功能可以分为以下几类:图象显示、图象文件输入与输出、几何操作、象素值和统计、图象分析与增强、图象变换、领域和块操作、二值图象操作、颜色映射和颜色空间转换、图象类型和类型转换、工具包参数获取和设置等现在, Matlab 已经成为线性代数、数理统计、数值分析、优化技术、自动控制、数字信号处理、图像处理、动态系
10、统仿真等高级课程的基本教学工具1.2.1 Matlab在数值计算中的应用Matlab 语言中提供了丰富的统计函数,使用这些函数可以完成对数据的各种统计分析工作例 5 如下给出8 个学生的英语、数学、物理和化学的成绩,求各科成绩总分和各科平均成绩score =90979897779067875667899976677778889876895666754586677889758588788975857663848390 score_sum=sum(score)score_sum =634636696574656(各科成绩总分) score_avg=score_sum./8score_avg =79
11、.250079.500087.000071.750082.0000(各科平均成绩)1.3 Lingo 软件美国芝加哥大学的Linus Schrage教授于1980年前后开发了一套专门用于求解优化问题的软件包,后来又经过多年的不断完善与扩充,并成立了 Lindo 系统公司 2006 年初, Lindo 系统公司在全球推出 Lingo 的最新版本LingoV10.0 版 Lingo 是英文 Linear Interactive and General Optimizer 字首的缩写形式,即 “交互式的线性和通用优化求解器”, 它除了可以用于求解线形规划和二次规划问题外, 还可以用来求解非线形规划问
12、题, 也可以用于一些线形和非线形方程 (组) 的求解等等 Lingo软件的最大特色在于可以允许优化模型中的决策变量是整数,即整数规划,而且执行速度快Lingo 还是最优化问题的一种建模语言,包括许多常用的数学函数可以让使用者在建立优化模型时调用,并且可以接受其他的数据文件,如:文本文件、数据库文件、 Excel 电子表格文件等,即使对优化方面的知识了解不多的使用者,也能方便地建模和输入、有效地求解和分析实际中遇到的大规模优化问题,并能快速得到复杂优化问题的高质量的解2 常用数学软件的功能比较通过上面的介绍可以发现不同的数学软件之间既有相同点又有不同点,比如它们都可以进行简单的符号运算,数值计算
13、和图形显示等,但在一些具体应用上也是有差别的 与同类软件相比, Matlab是以数值计算为主,而Mathematica 以符号运算为主所谓符号运算是指它所处理的对象不仅仅是常见的数字(如 12 或 3.14) ,而是一些带有代数符号的表达式(如 2x+3y=b 等) 它还建立了输入各种数学符号和函数的专用模板, 使输入数学公式和各种操作命令更加简便直观 Mathematica 带有扩展的绘图软件包,使绘图功能更加完善,操作方面比Matlab 手续也更为简便另外,在数值计算方面, Mathematica 注重计算精度,为精确计算的首选软件; Matlab 是一种高度集成的科学计算软件,以矩阵为基
14、本数据单位,复数或实数则可以理解为1X1的矩阵.Matlab的很多运算都是直接针对矩阵的,所以表示起来也就特别方便例如,复数“A=3 2i ”,在Matlab 中表示就是“ A=3+ 2i” .又如,要计算两个矩阵C D的乘积,可以表示为“ CX D,而不像大多数计算机语言那样需要用户编写循环语句来实现等下面仅就其中的某些方面加以比较2.1用 Mathematica 和 Matlab 作三维图形例6作jx2y2的三维图形应用 Mathematica命令:Plot3DSqrtxA2+yA2,x,-4,4,y,-4,4应用Matlab命令: X,Y=meshgrid(-4:0.5:4); Z=sq
15、rt(X.A2+Y .人2); mesh(Z)注 从此例可以看出 Mathematica可直接作出函数 Jx2 y2在区间-4, 4 * -4, 4上的图象,其中x,y为符号;而Matlab作图是产生一个数值矩阵,然后作出图形,其中的 x, y不是符号而是数值向量.2.2 用Mathematica和Matlab作微积分计算例7求y sin xn的二阶导数应用Mathematica命令:In1:=DsinxAn,x,2n 2n 2 2n 2n ,Out1= (-1 + n) n x sinx + n x sin x 应用Matlab命令: n=sym(n); x=sym(x); diff(sin
16、(xAn) , 2)Ans=(n-1)* n *xA(n-2)*cos(xAn)- nA2*xA(2*n-2)*sin (xAn)注由上面例题可知Mathematica和Matlab软件都可以进行简单的符号微积分的运算,但Mathematica用起来很方便,而 Matlab软件是将变量n, x转化为符号变量才能计算的.2.3用Mathematica、Matlab和Lingo作线性规划问题例8某企业生产甲、乙两种产品,需要用到A,B,C三种设备,关于产品的盈利与使用设备的工时及限制如下表所示.问:该企业应如何安排生产,使得在计划期内总利润最大?生产产品使用设备的工时、限制和产品的盈利甲乙设备的生
17、产能力/hA/(h/件)2212B/(h/件)4016C/(h/件)0515盈利/ (元/件)200300设甲、乙产品的产量分别为 x1, x2,建立线性规划模型:Max z=200 x1+300 x2;s.t.2 x1 +2 x212,4x116,5x215,x1 ,x2 0.应用Mathematica命令:In1:= ConstrainedMax200 x 1+300 x 2 ,2 x 1 +2 x 2 =12,4 x 1 =16,5 x 2 3, x 2 - 3应用Matlab命令:f=-200,-300;A=2,2;4,0;0,5;b=12,16,15;x,f=linprog(f,A,
18、b,zeros(1,2);x,-fOptimization terminated successfully.x =3.00003.0000ans =1.5000e+003应用 Lingo 命令:max=200*x1+300*x2;2*x1+2*x2=12;4*x1=16;5*x2=0;x2=0;Global optimal solution found at iteration:2Objective value:1500.000VariableValueReduced CostX13.0000000.000000X23.0000000.000000RowSlack or Surplus Dua
19、l Price11500.0001.00000020.000000100.000034.0000000.00000040.00000020.0000053.0000000.00000063.0000000.000000注 利用 Mathematica、 Matlab 和 Lingo 这三个软件均可以求出此题的最优解为x1=3, x2=3,z=1500 比较起来可知Mathematica 和 Matlab 只能求出最优解,而Lingo 除了可以求出最优解还可以得到灵敏度分析结果,而且 Lingo 更适用于求解整数线性规划2.4 用 Matlab 和 Lingo 作二次规划问题22例 9 min
20、f (x1 , x2) 2x1 6x2 x1 2x1x2 2x2s.t. X1 + x2 0, X2 A 0应用 Matlab 命令:首先写成标准形式:1Min z=(x 1 ,x2)11x1+2x2T2x16x211x1212x22s.t.x1x2输入命令:H=1 -1; -1 2;c=-2 ;-6;A=1 1; -1 2;b=2;2;Aeq=;beq=; VLB=0;0;VUB=;x,z=quadprog(H,c,A,b,Aeq,beq,VLB,VUB)x =0.66671.3333 z = -8.2222应用 Lingo 命令:x1+x2=2;min=-2*x1-6*x2+x1A2-2*
21、x1*x2+2*x2A2;-x1+2*x2=0;x2=0;Local optimal solution found at iteration:42Objective value:VariableValue Reduced CostX10.80000010.8909355E-08X21.2000000.000000RowSlack or SurplusDual Price10.0000002.7999992-7.200000-1.00000030.40000020.00000040.80000010.00000051.2000000.000000-7.200000注 此题在运算过程方面体现了 M
22、atlab 以矩阵为基本数据单位, 但求解过程较为复杂, 而用 Lingo求解过程则更简便;在运算结果方面,用Matlab软件的运算结果精确到小数点后面第四位,而用Lingo软件的运算结果精确到小数点后面第七位,由此可知 Lingo 为求二次规划问题的首选软件2.5 用 Mathematica 和 Matlab 作矩阵的特征值和特征向量122例 10 求方阵 a= 2 1 2 的特征值和特征向量221应用 Mathematica 命令:In1:= a=1,2,2,2,1,2,2,2,1;In2:= MatrixFormaOut2/MatrixForm= 122212221In3:= EigenvaluesaOut3= 5, -1, -1In4:= EigenvectorsaOut4= 1, 1, 1, -1, 0, 1, -1, 1, 0In5:= EigensystemaOut5= 5, -1, -1, 1, 1, 1, -1, 0, 1, -1, 1, 0应用 Matlab 命令:a=1,2,2;2,1,2;2,2,1;C,D=eig(a)Mathematica 求矩阵的特征值和特征向量过程较为繁琐,而用Matlab 则更V=0.60150.55220.57740
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论