1MATLAB在科学计算中的应用•开课单位:数学系2学分/40课时•任课教师:韩丛英•考试方式:作业完成、结合本专业撰写小论文并用MATLAB求解、上机开卷考。公共邮箱:MATLAB321@163.com123456•考试方式:作业完成、上机开卷考平时作业及撰写的论文共占50%,最后占50%2课程其他事项的说明•所有课件、作业均会发布在课程网站上•其他未注明事项直接联系助教3主要参考书:•高等应用数学问题的MATLAB求解薛定宇陈阳泉著清华大学出版社•精通MATLAB科学计算王正林等编著电子工业出版社•科学计算引论-基于MATLAB的数值分析[美]ShoichiroNakamura电子工业出版社•MATLAB与科学计算王谟然编著电子工业出版社•MATLAB6.0数学手册蒲俊等编著蒲东电子出版社4第一章计算机数学语言概述•1.1数学问题计算机求解概述–数学问题求解•手工推导(只解决部分问题)•借助计算机–用数值分析技术,从底层编写起采用成形的数值分析算法、数值软件包与手工编程相结合的求解方法。–用专门计算机语言来求解MATLAB、Mathematica、Maple等5例:求方程的解(带参数问题的求解)在是给定数值时,数值分析的方式是可用。当不是给定数值时,数值分析的方式不可用。必须使用计算机数学语言来求解。3xaxcd,,acd6例:求矩阵行列式求解问题(时间复杂性)•用代数余子式方法–一个n阶行列式可以表示成n个n-1阶行列式的和,…–可以将高阶矩阵行列式转换成1阶矩阵行列式•结论:任意矩阵行列式解析解存在•问题:忽略了可计算性•n=20,运算次数为,用每秒亿次的银河机需3000年.忽略了复杂度和可行性.nn209.7073107•例:Hilbert矩阵,n=20(求解精度的问题)•传统数值分析:容易得出矩阵奇异的错误结论•用MATLAB:在双精度级别下容易快速得到数值解8•该矩阵行列式的精确结果•近似值•计算时间0.4秒91.1.1数学问题的解析解与数值解•数学家和其他科学技术工作者的区别–数学家:理论严格证明、存在性–工程技术人员:如何直接得出解•解析解不能使用的场合–不存在–数学家解决方法,引入符号erf(a)–工程技术人员更感兴趣积分的值=数值解10•解析解不能使用的场合–解析解不存在:无理数,无限不循环小数p–数学家:尽量精确地取值–工程技术人员:足够精确即可–祖冲之3.1415926—3.1415927•解析解存在但不实用或求解不可能–高阶矩阵行列式111.1.2数值解应用场合•在力学领域,常用有限元法求解偏微分方程;•在航空、航天与自动控制领域,经常用到数值线性代数与常微分方程的数值解法等解决实际问题;•工程与非工程系统的计算机仿真中,核心问题的求解也需要用到各种差分方程、常微分方程的数值解法;•在高科技的数字信号处理领域,离散的快速Fourier变换(FFT)已经成为其不可或缺的工具。•…………121.1.3数学运算问题软件包发展概述•享有国际声望的软件包–线性代数LINPACK–矩阵特征值计算EISPACK–NAG(Oxford:NumericalAlgorithmGroup)–PressWH,FlanneryBP,TeukolskySA,andVitterlingWT.Numericalrecipes,theartofscientificcomputing.Cambridge:CambridgeUniversityPress,1986(C,Fortran,Pascal算法语言源程序软件包)–线性代数计算LaPACK13软件包作用•从历史发展角度,起了不可替代的作用•对计算机数学语言的强有力支持•但不能过多依赖•使用烦琐•应该在计算机数学语言的意义下利用之14考虑一个实际编程例子•如何编写一个能求出两个矩阵相乘的计算机通用子程序?该程序正确吗?错误,未考虑矩阵是否可乘15是否正确?错误,未考虑其一为标量加入标量判定,是否就是通用程序了?错误,应考虑其一或二者为复数矩阵MATLAB实现:C=A*B可见,用最底层的编程语言需要考虑的内容要多得多,所以调试起来不容易,容易出现漏洞161.2计算机数学语言概述•计算机数学语言–MATLAB1984v1TheMathWorksInc•MATrixLABoratory•1980CleveMoler教授,NewMexicoUniversity•自动控制学科的应用(正赶上状态空间的控制理论的兴起发展阶段)–Mathematica(WolframResearch公司)–Maple(WaterlooMaple公司)–SciLAB:免费,全部源代码公开17数学软件四大家---Maple、MATLAB、MathCAD和Mathematica目前在科技和工程界上比较流行和著名的数学软件主要有四个,分别是Maple、MATLAB、MathCAD和Mathematica。它们在各自针对的目标都有不同的特色。你是否认为Matlab可以处理好所有的数学问题?18一、Maple系统Maple是由Waterloo大学开发的数学系统软件,它不但具有精确的数值处理功能,而且具有无以伦比的符号计算功能。MapleV的符号计算能力还是MathCAD和MATLAB等软件的符号处理的核心(亲戚关系)。Maple提供了2000余种数学函数,涉及范围包括:普通数学、高等数学、线性代数、数论、离散数学、图形学。它还提供了一套内置的编程语言,用户可以开发自己的应用程序,而且Maple自身的2000多种函数,基本上是用此语言开发的。Maple采用字符行输入方式,输入时需要按照规定的格式输入,虽然与一般常见的数学格式不同,但灵活方便,也很容易理解。输出则可以选择字符方式和图形方式,产生的图形结果可以很方便地剪贴到Windows应用程序内。19想一窥Maple的奥秘么?二、MathCAD系统MathCAD是美国Mathsoft公司推出的一个交互式的数学系统软件。从早期的DOS下的1.0和Windows下的4.0版本,到今日的8.0版本,功能也从简单的数值计算,直至引用Maple强大的符号计算能力,使得它发生了一个质的飞跃。MathCAD是集文本编辑、数学计算、程序编辑和仿真于一体的软件。MathCAD7.0Professional(专业版)运行在Win9X/NT下,它的主要特点是输入格式与人们习惯的数学书写格式很近似,采用WYSWYG(所见所得)界面,特别适合一般无须进行复杂编程或要求比较特殊的计算。MathCAD7.0Professional还带有一个程序编辑器,对于一般比较短小,或者要求计算速度比较低时,采用它也是可以的。这个程序编辑器的优点是语法特别简单。MathCAD可以看作是一个功能强大的计算器,没有很复杂的规则;同时它也可以和Word、Lotus、WPS2000等字处理软件很好地配合使用,可以把它当作一个出色的全屏幕数学公式编辑器。21跟我学数学软件包MathCAD~long/book/mathcad.htm22三、Mathematica系统Mathematica是由美国物理学家StephenWolfram领导的WolframResearch开发的数学系统软件。它拥有强大的数值计算和符号计算能力,在这一方面与Maple类似,但它的符号计算不是基于Maple上的,而是自己开发的。Mathematica的基本系统主要是用C语言开发的,因而可以比较容易地移植到各种平台上,Mathematica是一个交互式的计算系统,计算是在用户和Mathematica互相交换、传递信息数据的过程中完成的。Mathematica系统所接受的命令都被称作表达式,系统在接受了一个表达式之后就对它进行处理,然后再把计算结果返回。Mathematica对于输入形式有比较严格的规定,用户必须按照系统规定的数学格式输入,系统才能正确地处理,不过由于3.0版本引入输入面板,并且可以修改、重组输入面板,因此以前版本输入指令时需要不断切换大小写字符的繁琐方式得到很好的改善。3.0版本可以用各种格式保存文件和剪贴内容,包括RTF、HTML、BMP等格式。23数学世界这个名为数学世界的网站(EricWeisstein'sWorldofMathematics),目前这个网站属于著名的数学软件公司WolframResearch(他们的产品是Mathematica)。这个被称为“网络数学百科全书”的网站收录了10,141条信息,88,200条参考文献(网址或图书杂志),和几千幅彩色图片,实时动态模拟软件。24四、MATLAB系统MATLAB原是矩阵实验室(MatrixLaboratory)在70年代用来提供Linpack和Eispack软件包的接口程序,采用C语言编写。从80年代出现3.0的DOS版本,逐渐成为科技计算、视图交互系统和程序语言。MATLAB可以运行在十几个操作平台上,比较常见的有基于Windows9X/NT、OS/2、Macintosh、Sun、Unix、Linux等平台的系统。MATLAB程序主要由主程序和各种工具包组成,其中主程序包含数百个内部核心函数,工具包则包括复杂系统仿真、信号处理工具包、系统识别工具包、优化工具包、神经网络工具包、控制系统工具包、μ分析和综合工具包、样条工具包、符号数学工具包、图像处理工具包、统计工具包等。而且5.x版本还包含一套几十个的PDF文件,从MATLAB的使用入门到其他专题应用均有详细的介绍。MATLAB是数值计算的先锋,它以矩阵作为基本数据单位,在应用线性代数、数理统计、自动控制、数字信号处理、动态系统仿真方面已经成为首选工具,同时也是科研工作人员和大学生、研究生进行科学研究的得力工具。MATLAB在输入方面也很方便,可以使用内部的Editor或者其他任何字符处理器,同时它还可以与Word6.0/7.0结合在一起,在Word的页面里直接调用MATLAB的大部分功能,使Word具有特殊的计算能力。25MATLAB是一套组合工具是大而全好还是专而精好?26四种软件的比较选用何种数学软件?如果仅仅是要求一般的计算或者是普通用户日常使用,首选的是MathCAD,它在高等数学方面所具有的能力,足够一般客户的要求,而且它的输入界面也特别友好。如果要求计算精度、符号计算和编程方面的话,最好同时使用Maple和Mathematica,它们在符号处理方面各具特色,有些Maple不能处理的,Mathematica却能处理,诸如某些积分、求极限等方面,这些都是比较特殊的。如果要求进行矩阵方面或图形方面的处理,则选择MATLAB,它的矩阵计算和图形处理方面则是它的强项,同时利用MATLAB的NoteBook功能,结合Latex,Word6.0/7.0的编辑功能,可以很方便地处理科技文章。27开源软件Scilab强烈的n次方地推荐:一个堪与matlab相媲美的开源软件:ScilabScilab是一个开放源代码的数学软件,是由法国INRIA科学机构编写的,它的函数和matlab是兼容的,而且包括仿真模块Scicos(类似与simulink),更重要的可以实现并行计算。它唯一的好处是:开放源代码。如果大家有志向从事于科学研究的话.就开始学习使用scilab吧。如果你对自己的要求更高,你可以查看scilab的源代码(要知道:matlab这一款商业软件是不可能给你这样的权限的,他早就封装起来了).还要提醒大家:scilab也只是你学习的一个跳板而已.它不是你的终结.因为绝大多数开放源代码的软件,往往等它成熟,稳定的时候,就是它商业化的开始.附:scilab主页显而易见的言论:2930Scilab-中国官方网站31SCILAB在世界的发展状