1第二章MATLAB简介一、Matlab使用入门二、数值计算三、符号运算四、图形处理五、程序设计六、在计算方法中的应用2内容讲解安排1.目的意义:掌握Matlab的基本用法2.重点:数值计算、符号运算、图形制作及程序设计3.难点:程序设计4.内容分配:第2次:§1Matlab简介§2Matlab的数值计算功能§3Matlab的符号运算功能§4Matlab的图形制作功能§5Matlab的M文件及程序设计3一、Matlab简介1、Matlab的特点例1.1Lagrange插值:Lagrange.m,Lag.mMATLAB源于MatrixLaboratory一词,原意为矩阵实验室。一开始它是一种专门用于矩阵数值计算的软件。随着MATLAB逐渐市场化,MATLAB不仅具有了数值计算功能,而且具有了数据可视化功能。由于MATLAB的开放性、易学易用性等特点,MATLAB已成为高校学生、老师、科研人员和工程计算人员的最好选择。MATLAB是真正面向21世纪的科学计算语言。4MATLAB语言主要有以下其它语言不可比拟的特点:(1).功能强大MATLAB4.0以上(不包括4.0)的各版本,不仅在数值计算上保持着相对其它同类软件的绝对优势,而且还开发了自己的符号运算功能。特别是MATLAB6.0版本在符号运算功能上丝毫不逊于其它各类软件,如MathCAD、Mathematica等。只要学会了MATLAB,就可以方便地处理诸如矩阵变换及运算、多项式运算、微积分运算、线性与非线性方程求解、常微分方程求解、偏微分方程求解、插值与拟合、统计及优化等问题。5做过数学计算的人都知道,在计算中最难处理的就是算法的选择,但MATLAB中许多功能函数都带有算法的自适应能力,且算法先进,大大解决了用户的后顾之忧。另外,提供了一套完善的图形可视化功能,为用户向别人展示自己的计算结果提供了广阔的空间。MATLAB允许用户以数学形式的语言编写程序,比BASIC语言、FORTRAN语言和C语言等更接近于书写公式的思维方式。(2).语言简单6它的操作和功能函数指令就是以平时计算机和数学书上的一些简单的英文单词表达的。由于它是用C语言开发的,它的不多的几个程序流控制语句同C语言差别甚微,初学者很容易掌握。MATLAB语言的帮助系统的功能也相当强大,用户可以方便地查学到想要的各种信息。另外,MATLAB还专门为初学者(包括其中某一个工具箱的初学者)提供了intro及demo等演示命令,用户可以从中得到兴趣的例子及演示。7(3).扩充能力强、可开发性强MATLAB可扩充性和可开发性起着不可估量的作用。MATLAB本身就像一个解释系统,对其中的函数程序的执行以一种解释执行的方式进行,这样最大的好处是MATLAB完成了一个开放的系统,用户可以方便地看到函数的源程序,也可以方便地开发自己的程序,甚至创建自己的“库”。另外,MATLAB并不“排他”,MATLAB可以方便地与FORTRAN、C语言进行连接,以充分利用各种资源。用户只需将已有的EXE文件转换成MEX文件,就可以方便地调用有关程序和子程序。8(4).编程易、效率高从形式上看,MATLAB程序文件是一个纯文本文件,扩展名为M。用任何字处理软件都可以对它进行编写和修改,因此程序易调试,人机交换型强。另外,MATLAB6.5也具有比较健全的调试系统,调试方便、简单。92、MATLAB的发展历史在20世纪70年代,CleveMoler和其同事在美国国家科学基金的资助下研究开发了LINPACK和EISPACK的Fortran子程序库,这两个程序库代表着当时矩阵计算的最高水平。到20世纪70年代后期,身为墨西哥大学计算机科学系系主任的CleveMoler,在给学生开线性代数课程时,他开始用业余时间为学生编写使用方便的LINPACK和EISPACK的接口程序。CleveMoler给这个接口程序取名为MATLAB,意思是“矩阵实验室”。10不久以后,MATLAB受到了学生的普遍欢迎,并且,MATLAB也成了应用数学界的一个术语。1983年早春,CleveMoler到斯坦福大学访问,身为工程师的JohnLittle意识到MATLAB潜在的广阔应用领域应在工程计算方面,于是在同年,他与Moler、SteveBangert一起合作开发了第二代专业版MATLAB。从这一代开始,MATLAB的核心就采用C语言编写。也是从这一代开始,MATLAB不仅具有数值计算功能,而且具有了数据可视化功能。111984年,Mathworks公司成立,把Matlab推向了市场,并继续Matlab的研制和开发。Matlab在市场上的出现,为各国科学家开发本学科相关软件提供了基础。1993年,Matlab的第一个Windows版本Matlab3.5k问世,同年,支持Windows3.x的Matlab4.0版本推出,同以前的版本比起来4.0版本作了很大的改进,如增加了Simulink(动态仿真)/Control/Network/Optimization/SignalProcessing/Spline/Identification/RobustControl/Mu-analysisandsynthesis(Mu分析与合成)等工具箱。121993年11月,Matnworks公司又推出了Matlab4.1版本,首次开发了SymbolicMath符号运算工具箱。其升级版本Matlab4.2在用户中有着广泛的应用。1997年,Matlab5.0版本问世了相对于Matlab4.x版本来说,它可以说是一个飞跃;真正的32位运算,功能强大,数值计算加快,图形表现有效,变成简洁直观,用户界面十分友好。2000年下半年,Mathworks公司推出了他们的最新产品Matlab6.0(R12)的试用版,并于2001年初推出了正式版,同前面的版本对比起来,Matlab6.0在Matlab5.x的基础上这种在计算速度上作了比较大的改善,计算速度有了明显的提高。133、MATLAB6.x的新特点与MATLAB5.x版本相比较,MATLAB6.x版本在各个方面都进行了较大的改进和增补,增加了许多新功能和更为有效的处理方法,甚至在整个系统的结构上也作了很大的改进。(1).开发环境扩展(2).数值处理功能增强(3).程序及数据结构优化(4).图形处理(5).用户图形界面(6).应用程序接口144、MATLAB6.x的桌面平台(1).Matlab的主窗口(2).命令窗口(3).历史窗口(4).当前目录窗口(5).发行说明窗口(6).工作间管理窗口154、MATLAB6.5的帮助系统1.联机帮助系统:按下主窗口的?及Help下拉菜单的前四项。2.命令窗口查询系统:help,help+函数名,lookfor函数。3.联机演示系统基本介绍窗口:intro;演示界面:demo.165、常用的命令与技巧dir:显示目录下文件type:显示文件内容clear:清理内存变量pack:收集内存碎片,扩大内存空间clc:清除工作窗口例1.2南半球气旋流的曲面图:photo1.m,photo2.m。17二、MATLAB的数值计算功能1、Matlab的数据类型(1).变量(2).常量pi=3.1415926,i,j=,eps=10-52,inf:无穷大。1变量名以字母开头,长度不超过31位,区分大小写。(3).数字变量258*123;x=258*123.注意:加分号不显示结果,不加分号显示结果。(4).字符串s=‘matrixlaboratory’size(s)s(4)(5).向量与矩阵18演示1:jisuan01.m例2.1要求计算水在00C、200C、400C、600C、800C的粘度,已知水的粘度随温度的变化公式为,其中μ0为水在00C的粘度,在00C值为.785×10-3。201btat192、向量及其运算(1).向量的生成(i).直接输入向量:a=[1234]b=[2,1,4,5]c=[1;2;3;4](ii).利用冒号表达式生成向量a=1:2:12,b=1:6,c=12:-2:1(iii).线性等分向量的生成y=linspace(x1,x2)生成100维的行向量y=linspace(x1,x2,n)生成n维的行向量20(2).向量的加、减、数乘、点乘、叉乘等运算已知向量a=[a1,a2,a3]、b=[b1,b2,b3],则有数量加法:a+2=[a1+2,a2+2,a3+2];数量减法:a-2=[a1-2,a2-2,a3-2];数乘向量:a*2=[a1*2,a2*2,a3*2];向量加法:a+b=[a1+b1,a2+b2,a3+b3];向量减法:a-b=[a1-b1,a2-b2,a3-b3];向量相乘:a.*b=[a1*b1,a2*b2,a3*b3];向量右除:a./b=[a1/b1,a2/b2,a3/b3];向量左除:a.\b=[b1/a1,b2/a2,b3/a3];21点乘运算:dot(a,b)=a1*b1+a2*b2+a3*b3,sum(a.*b)=a1*b1+a2*b2+a3*b3;向量混合积:dot(a,cross(b,c))演示0:在命令窗口演示向量的各种运算。向量乘幂:a.^2=[a1^2,a2^2,a3^3];2.^a=[2^a1,2^a2,2^a3]a.^b=[a1^b1,a2^b2,a3^b3]223.矩阵的运算(1).矩阵的生成在命令窗口直接键入:A=[123;456;789];用M文件输入大型矩阵A=[101232415263;212345677843;213490896754]演示1:juzhen01.m,注意矩阵的输入法,及行数、列数的确定函数size(A),size(A,1)—行数,size(A,2)—列数。A=[101232415263212345677843213490896754]或者23(2).矩阵的基本运算矩阵加法:A+B、A+a;矩阵减法:A-B、A-a;数乘矩阵:A*2;矩阵相乘:A*B,注意匹配:A的列数等于B的行数;矩阵左除:A\B,注意匹配:A的行数等于B的行数,用于解线性方程组(恰定、超定、欠定方程组)、矩阵方程组;矩阵右除:A/B,注意匹配:A的列数等于B的列数(用法同上);矩阵乘幂:A^2,注意匹配:A必须为方阵;24(3).矩阵的其它运算zeros(m,n):m行n列的零矩阵ones(m,n):m行n列的全1矩阵eye(n):n阶单位矩阵rand(m,n):m行n列的均匀分布的随机数矩阵randn(m,n):m行n列的均匀分布的随机数矩阵det(A):矩阵的行列式inv(A):矩阵求逆rank(A):矩阵求秩trace(A):矩阵的迹25d=eig(A):矩阵的特征值[v,d]=eig(A):矩阵的特征值及特征向量poly(A):矩阵的特征多项式cond(A):矩阵的条件数cond(X,p):向量或矩阵的范数,p=1,2,inf;演示2:juzhen02.m,各种运算。26(4).矩阵的分解与变换[L,U]=lu(A):LU三角分解,用于非奇异的一般矩阵,L为下三角阵,U为上三角阵,A=LU。U=chol(A):实对乘矩阵的平方根分解,U为上三角阵。[Q,R]=qr(A):是对称矩阵的qr分解,Q为正交阵,R为上三角阵,A=QR。[U,S,V]=svd(A):更一般矩阵的奇异值分解,A为m*n矩阵,A=USV。tril(A):提取矩阵主下三角部分tril(A,k):提取矩阵的第k条对角线(包括第k条对角线)下面的部分,k为正值为上方对角线,k为负值为下方对角线。27triu(A):提取矩阵主上三角部分triu(A,k):提取矩阵的第k条对角线(包括第k条对角线)上面的部分,k为正值为下方对角线,k为负值为上方对角线。演示3:juzhen03.m,练习以上各种运算。注意掌握矩阵运算以下主要命令:(1).求方阵的行列式、逆矩阵、广义逆(2).求方阵的特征值、特征向量、特征多项式(3).矩阵的各种分解:上三角、下三角、平方根、正交分解28例2.