第一讲第一讲 数学软件概述数学软件概述一、计算机代数系统l科学计算可分为两类:一类是纯数值的计算,例如求函数的值,方程的数值解;另一类计算是符号计算,又称代数运算,这是一种智能化的计算,处理的是符号.符号可以代表整数,有理数,实数和复数,也可以代表多项式,函数,还可以代表数学结构如集合,群的表示等等.我们在数学的教学和研究中用笔和纸进行的数学运算多为符号运算. l从计算机发明到现在的50多年时间里,用计算机进行的科学计算主要是数值计算,如天气预报,油藏模拟,航天等领域的大规模数值计算.长期以来,人们一直盼望有一个可以进行符号计算的计算机系统.早在50年代末,人们就开始了研究.进入80年代后,随着计算机的普及和人工智能的发展,用计算机进行代数运算的研究在国外发展非常迅速,涉及的数学领域也在不断地扩大,相继出现了多种功能齐全的计算机代数系统,这些系统可以分为专用系统和通用系统,专用系统主要是为解决物理,数学和其他科学分支的某些计算问题而设计的,专用系统在符号和数据结构上都适用于相应的领域,而且多数是用低级语言写成的,使用方便,计算速度快,在专业问题的研究中起着重要的作用. l通用系统具有多种数据结构和丰富的数学函数,应用领域广泛.其中Mathematica 、MATLAB和Maple是用户教为广泛的通用数学软件.最近的计算机代数系统都是用C语言写成的,这种语言为软件开发者提供了编写有效的可移植的计算机程序的平台,所以这种计算机代数系统可以在绝大多数计算机上使用.Mathematica、 MATLAB和Maple就是这样的系统.lMathematica是第一个将符号运算,数值计算和图形显示很好地结合在一起的数学软件,用户能够方便地用它进行多种形式的数学处理. lMATLAB语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,自1984年由美国 Math Works公司推向市场以来,历经十多年的发展与竞争,现已成为国际公认的最优秀的工程应用开发环境。
MATLAB功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎 lMaple是80年代初就开始研制的计算机代数系统,起初并不为人们所注意,但这个软件发展很快.自从1992年MapleVR2出版后,更多的用户就发现它是一个功能强大而且界面友好的计算机代数系统. 二、二、常用的数学软件常用的数学软件l目前流行的数学软件主要有以下几种:目前流行的数学软件主要有以下几种:l符号运算软件:符号运算软件: Mathematica, Maplel矩阵处理软件:矩阵处理软件: Matlabl统计处理软件:统计处理软件: SAS, Spss, Originl数学数学CAD软件:软件: MathCAD四种数学软件:四种数学软件:MatlabMatlabMathematicaMathematicaMapleMapleMathCADMathCAD符号运算符号运算符号运算符号运算数值计算数值计算数值计算数值计算图形显示图形显示图形显示图形显示高效编程高效编程高效编程高效编程l目前在科技和工程界上比较流行和著名的数学软件主要有四个,分别是Maple、Matlab、MathCAD和Mathematica它们在各自针对的目标都有不同的特色。
(一一) Maple V 系统系统 lMaple V是由Waterloo大学开发的数学系统软件,它不但具有精确的数值处理功能,而且具有无以伦比的符号计算功能Maple V的符号计算能力还是MathCAD和MATLAB等软件的符号处理的核心Maple提供了2000余种数学函数,涉及范围包括:普通数学、高等数学、线性代数、数论、离散数学、图形学它还提供了一套内置的编程语言,用户可以开发自己的应用程序,而且Maple自身的2000多种函数,基本上是用此语言开发的 lMaple采用字符行输入方式,输入时需要按照规定的格式输入,虽然与一般常见的数学格式不同,但灵活方便,也很容易理解输出则可以选择字符方式和图形方式,产生的图形结果可以很方便地剪贴到Windows应用程序内 (二二)MATLAB 系统系统 lMATLAB原是矩阵实验室(Matrix Laboratory)在70年代用来提供Linpack和Eispack软件包的接口程序,采用C语言编写从80年代出现3.0的DOS版本,逐渐成为科技计算、视图交互系统和程序语言MATLAB可以运行在十几个操作平台上,比较常见的有基于Windows 9X/NT、OS/2、Macintosh、Sun、Unix、Linux等平台的系统。
lMATLAB程序主要由主程序和各种工具包组成,其中主程序包含数百个内部核心函数,工具包则包括复杂系统仿真、信号处理工具包、系统识别工具包、优化工具包、神经网络工具包、控制系统工具包、μ分析和综合工具包、样条工具包、符号数学工具包、图像处理工具包、统计工具包等而且5.x版本还包含一套几十个的PDF文件,从MATLAB的使用入门到其他专题应用均有详细的介绍 lMATLAB是数值计算的先锋,它以矩阵作为基本数据单位,在应用线性代数、数理统计、自动控制、数字信号处理、动态系统仿真方面已经成为首选工具,同时也是科研工作人员和大学生、研究生进行科学研究的得力工具MATLAB在输入方面也很方便,可以使用内部的Editor或者其他任何字符处理器,同时它还可以与Word6.0/7.0结合在一起,在Word的页面里直接调用MATLAB的大部分功能,使Word具有特殊的计算能力 (三三)MathCAD 系统系统 lMathCAD是美国Mathsoft公司推出的一个交互式的数学系统软件从早期的DOS下的1.0和Windows下的4.0版本,到今日的8.0版本,功能也从简单的数值计算,直至引用Maple强大的符号计算能力,使得它发生了一个质的飞跃。
lMathCAD是集文本编辑、数学计算、程序编辑和仿真于一体的软件MathCAD7.0 Professional(专业版)运行在Win9X/NT下,它的主要特点是输入格式与人们习惯的数学书写格式很近似,采用WYSWYG(所见所得)界面,特别适合一般无须进行复杂编程或要求比较特殊的计算MathCAD 7.0 Professional 还带有一个程序编辑器,对于一般比较短小,或者要求计算速度比较低时,采用它也是可以的这个程序编辑器的优点是语法特别简单 MathCAD可以看作是一个功能强大的计算器,没有很复杂的规则;同时它也可以和Word、Lotus、WPS2000等字处理软件很好地配合使用,可以把它当作一个出色的全屏幕数学公式编辑器(四四)Mathematica 系统系统 lMathematica是由美国物理学家Stephen Wolfram领导的Wolfram Research开发的数学系统软件它拥有强大的数值计算和符号计算能力,在这一方面与Maple类似,但它的符号计算不是基于Maple上的,而是自己开发的 lMathematica的基本系统主要是用C语言开发的,因而可以比较容易地移植到各种平台上,Mathematica是一个交互式的计算系统,计算是在用户和Mathematica互相交换、传递信息数据的过程中完成的。
Mathematica系统所接受的命令都被称作表达式,系统在接受了一个表达式之后就对它进行处理,然后再把计算结果返回Mathematica对于输入形式有比较严格的规定,用户必须按照系统规定的数学格式输入,系统才能正确地处理,不过由于3.0版本引入输入面板,并且可以修改、重组输入面板,因此以前版本输入指令时需要不断切换大小写字符的繁琐方式得到很好的改善3.0版本可以用各种格式保存文件和剪贴内容,包括RTF、HTML、BMP等格式 (五)四种软件的比较五)四种软件的比较 l选用何种数学软件?如果仅仅是要求一般的计算或者是普通用户日常使用,首选的是MathCAD,它在高等数学方面所具有的能力,足够一般客户的要求,而且它的输入界面也特别友好如果要求计算精度、符号计算和编程方面的话,最好同时使用Maple和Mathematica,它们在符号处理方面各具特色,有些Maple不能处理的,Mathematica却能处理,诸如某些积分、求极限等方面,这些都是比较特殊的如果要求进行矩阵方面或图形方面的处理,则选择MATLAB,它的矩阵计算和图形处理方面则是它的强项,同时利用MATLAB的NoteBook功能,结合Word6.0/7.0的编辑功能,可以很方便地处理科技文章。
三、三、 Mathematica实例实例 二、代数运算四、四、 MATLAB 实例实例 l【例1】 求解线性方程组AX=B l 1 1.5 2 9 7 3 l 0 3.6 0.5 -4 4 -4 l其中A= 7 10 -3 22 33 , B= 20 l 3 7 8.5 21 6 5 l 3 8 0 90 -20 16 在MATLAB命令窗口输入命令:l l a=[1,1.5,2,9,7;0,3.6,0.5,-4,4;7,10,-3,22,33;3,7,8.5,21,6;3,8,0,90,-20];l b=[3;-4;20;5;16];l x=a\bl得到的结果是:l x =l 3.5653l -0.9255l -0.2695l 0.1435l 0.0101l 【例2】 求方程 x^4+7x^3 +9x-20=0的全部根。
l 在MATLAB命令窗口输入:l p=[1,7,0,9,-20]; %建立多项式系数向量l x=roots(p) %求根l得到的结果是:l x =l -7.2254l -0.4286 + 1.5405il -0.4286 - 1.5405il 1.0826l【例3】求极限lsyms x; %定义符号变量lf=(x*(exp(sin(x))+1)-2*(exp(tan(x))-1))/sin(x)^3; %确定符号表达式lw=limit(f) %求函数的极限lw = -1/2l【例4】 在一个图形窗口中同时绘制正弦、余弦、正切、余切曲线,程序为:lx=linspace(0,2*pi,60);ly=sin(x);lz=cos(x);lt=sin(x)./(cos(x)+eps); %eps为系统内部常数lct=cos(x)./(sin(x)+eps);lsubplot(2,2,1); %分成2×2区域且指定1号为活动区lplot(x,y);ltitle('sin(x)'); laxis ([0 2*pi -1 1]); lsubplot(2,2,2);plot(x,z);title('cos(x)');axis ([0 2*pi -1 1]);subplot(2,2,3);plot(x,t);title('tangent(x)');axis ([0 2*pi -40 40]);subplot(2,2,4);plot(x,ct);title('cotangent(x)');axis ([0 2*pi -40 40]); 程序如下: screen=get(0,'ScreenSize'); W=screen(3);H=screen(4); hf=figure('Color',[1,1,1],'Position',[1,1,0.4*W,0.3*H],... 'Name','菜单设计示例一','NumberTitle','off','MenuBar','none'); hfile=uimenu(hf,'label','&File'); hhelp=uimenu(hf,'label','&Help'); uimenu(hfile,'label','&New','call','disp(''New Item'')'); uimenu(hfile,'label','&Open','call','disp(''Open Item'')'); hsave=uimenu(hfile,'label','&Save','Enable','off'); uimenu(hsave,'label','Text file','call','k1=0;k2=1;file01;'); uimenu(hsave,'label','Graphics file','call','k1=1;k2=0;file10;'); uimenu(hfile,'label','Save &As','call','disp(''Save As Item'')'); uimenu(hfile,'label','&Exit','separator','on','call','close(hf)'); uimenu(hhelp,'label','About ...','call',... ['disp(''Help Item'');','set(hsave,''Enable'',''on'')']);例例5 5:菜单设计:菜单设计Maple绘图绘图-初等曲线初等曲线plot({x,x^2,x^3,ln(x),sin(x)},x=-2*Pi..2*Pi, color=[red,black,yellow,blue,maroon], view=[-2..2,-4..4],title=“maple draw simple functions”)2024/9/429Maple 简介五、五、Maple实例实例Maple作图作图-对隐式方程作图对隐式方程作图l?implicitplotlwith(plots):leq:=(x-1)^2/3+(y-1)^2/4=12024/9/430Maple 简介六、数学软件的共同特点:六、数学软件的共同特点:1.可以进行符号运算,数值计算和图形显示,这是通用数学软件包的三大基本功能.具有高效的可编程功能.2.多数计算机代数系统都是交互式的,人们通过键盘输入命令,计算机计算后显示结果.好的系统都有Windows操作系统下的版本,人机界面友好,命令输入方便灵活,很容易寻求帮助.结果的输出有多种形式,好的数学软件都提供了人们习惯的数学符号表达形式.3.各个系统都在不断地发展完善,不断地更新换代,更新的速冻也在逐渐加快.数学软件在向着智能化,自动化方向发展.数学软件的实质是数学方法及其算法在计算机上的实现,这些方法是千百年来无数数学家的工作与智慧的结晶.4.参与软件开发和应用的人员的数量在不断增加,而且日趋国际化.随着Internet的普及,软件用户可以很方便地与软件开发者进行沟通,反映软件中存在的问题,也把新的应用情况和好的程序提供给软件的开发者.软件的开发不再只是软件开发者的事情,也是广大用户的事情. 七、数学软件的局限性七、数学软件的局限性 ::l首先,多数计算机代数系统对计算机硬件有较高的要求,在进行符号运算时,通常需要很大的内存和较长的计算时间,而精确的代数运算以时间和空间为代价的.一些人工计算的简单问题,计算机代数系统却做不出来.l用数学软件的第二个问题是计算结果往往很长,人们很难从结果中看到问题的要害.用计算机代数系统进行数值计算,虽然计算精度可以到任意位,但由于计算机代数系统是用软件本身浮点运算代替硬件算术运算,所以在速度要比用Fortran语言算同样的问题慢百倍甚至千倍.l另外,虽然计算机代数系统包含大量的数学知识,但这仅仅是数学的一小部分,目前有许多数学领域计算机代数系统还未能涉及. 八、数学实验简介八、数学实验简介 l数学实验是工科数学教学改革的产物,它既提供了一些新的教学内容,又构成了一个新的教学环节。
计算机科学的发展,为我们学习和应用数学提供了一个科学的现代化的手段,把计算机引入到数学学习中,使用计算机进行数学运算我们把这种用计算机代替纸和笔以及部分脑力劳动进行数学学习和应用的手段称为数学实验虽然这个定义不太确切,但这种把计算机作为工具研究和学习数学的方法,确实达到了通过实践的手段来实现数学的研究和学习的目的数学实验为从事与数学研究有关的人们提供了实验手段和研究工具,有着非常重要的作用,代表着数学研究的方向,是未来科学研究中不可缺少的方法 l数学实验的基本内容是数值计算,符号演算,图形描绘,还有取自应用领域的各种实际问题和科学研究中的基础问题,介绍如何通过建模方法将实际问题转化为数学问题,讲述解决问题的方法,包括解析的方法和数值的方法,并且介绍各种常用的数学软件通过在计算机上做实验,使学生掌握用数值模拟的方法解决实际问题的全过程 九、数学实验与数学建模的区别与联系九、数学实验与数学建模的区别与联系l数学建模课与数学实验课都要用到计算机但数学建模课是会利用数学知识和计算机手段来解决实际问题,而数学实验课侧重于在计算机的帮助下学习数学知识一个是用,一个是学,两者的目标不同但数学建模强调问题的实用性而不强调普遍意义,解决问题本身就是目的;而数学实验课可以从理论问题出发,也可由实际问题出发,但这个理论问题或实际问题最好是比较经典的、具有普遍意义,让学生以解决问题为线索总结规律,学到知识。
当然,数学实验课可以作为数学建模课的预备课程,使学生更快地掌握数学建模的基本方法和基本机能。