《Matlab经典教案(土木工程专业)PPT课件》由会员分享,可在线阅读,更多相关《Matlab经典教案(土木工程专业)PPT课件(72页珍藏版)》请在金锄头文库上搜索。
1、第二章第二章 MATLAB简介简介一、一、MatlabMatlab使用入门使用入门二、数值计算二、数值计算三、符号运算三、符号运算四、图形处理四、图形处理五、程序设计五、程序设计六、在计算方法中的应用六、在计算方法中的应用2021/6/71内容讲解安排内容讲解安排1.1.目的意义目的意义:掌握:掌握Matlab的基本用法的基本用法2.2.重重 点点:数值计算、符号运算、图形制作:数值计算、符号运算、图形制作 及程序设计及程序设计3.3.难难 点:点:程序设计程序设计4.4.内容分配:内容分配: 第第 2 2 次:次:1 1 Matlab简介简介 2 2 Matlab的数值计算功能的数值计算功能
2、 3 3 Matlab的符号运算功能的符号运算功能 4 4 Matlab的图形制作功能的图形制作功能 5 5 Matlab的的M文件及程序设计文件及程序设计2021/6/72一、一、Matlab简介简介1 1、Matlab的特点的特点例例1.1 Lagrange插值:插值:Lagrange.m , Lag.m MATLAB源于源于Matrix Laboratory一词,原意为一词,原意为矩阵实验室。一开始它是一种专门用于矩阵数值计算矩阵实验室。一开始它是一种专门用于矩阵数值计算的软件。随着的软件。随着MATLAB逐渐市场化,逐渐市场化,MATLAB不仅不仅具有了数值计算功能,而且具有了数据可视
3、化功能。具有了数值计算功能,而且具有了数据可视化功能。 由于由于MATLAB的开放性、易学易用性等特点,的开放性、易学易用性等特点,MATLAB已成为高校学生、老师、科研人员和工程计算已成为高校学生、老师、科研人员和工程计算人员的最好选择。人员的最好选择。MATLAB是真正面向是真正面向21世纪的科学世纪的科学计算语言。计算语言。 2021/6/73MATLAB语言主要有以下其它语言不可比拟的特点语言主要有以下其它语言不可比拟的特点: : ( (1).).功能强大功能强大 MATLAB4.0以上(不包括以上(不包括4.0)的各版本,不仅在)的各版本,不仅在数值计算上保持着相对其它同类软件的绝对
4、优势,而数值计算上保持着相对其它同类软件的绝对优势,而且还开发了自己的且还开发了自己的符号运算功能符号运算功能。特别是。特别是 MATLAB6.0版本在符号运算功能上丝毫不逊于其它各类软件,如版本在符号运算功能上丝毫不逊于其它各类软件,如MathCAD、 Mathematica 等。等。 只要学会了只要学会了MATLAB,就可以方便地处理诸如矩,就可以方便地处理诸如矩阵变换及运算、多项式运算、微积分运算、线性与非阵变换及运算、多项式运算、微积分运算、线性与非线性方程求解、常微分方程求解、偏微分方程求解、线性方程求解、常微分方程求解、偏微分方程求解、插值与拟合、统计及优化等问题。插值与拟合、统计
5、及优化等问题。 2021/6/74 做过数学计算的人都知道,在计算中最难处理的做过数学计算的人都知道,在计算中最难处理的就是算法的选择,但就是算法的选择,但MATLAB 中许多功能函数都带中许多功能函数都带有算法的自适应能力,且算法先进,大大解决了用户有算法的自适应能力,且算法先进,大大解决了用户的后顾之忧的后顾之忧。 另外,提供了一套完善的图形可视化功能,为用户另外,提供了一套完善的图形可视化功能,为用户向别人展示自己的计算结果提供了广阔的空间。向别人展示自己的计算结果提供了广阔的空间。 MATLAB允许用户以数学形式的语言编写程序,允许用户以数学形式的语言编写程序, 比比BASIC语言、语
6、言、FORTRAN语言和语言和C语言等更接近于书语言等更接近于书写公式的思维方式。写公式的思维方式。(2)语言简单)语言简单2021/6/75 它的操作和功能函数指令就是以平时计算机和数它的操作和功能函数指令就是以平时计算机和数学书上的一些简单的英文单词表达的。由于它是用学书上的一些简单的英文单词表达的。由于它是用C语言开发的,它的不多的几个程序流控制语句同语言开发的,它的不多的几个程序流控制语句同C语语言差别甚微,初学者很容易掌握。言差别甚微,初学者很容易掌握。 MATLAB语言的帮助系统的功能也相当强大,语言的帮助系统的功能也相当强大,用户可以方便地查学到想要的各种信息。用户可以方便地查学
7、到想要的各种信息。另外,另外,MATLAB还专门为初学者(包括其中某一个工具还专门为初学者(包括其中某一个工具箱的初学者)提供了箱的初学者)提供了intro及及demo等演示命令,用等演示命令,用户可以从中得到兴趣的例子及演示。户可以从中得到兴趣的例子及演示。 2021/6/76(3)扩充能力强、可开发性强)扩充能力强、可开发性强 MATLAB可扩充性和可开发性起着不可估量的可扩充性和可开发性起着不可估量的作用。作用。MATLABMATLAB本身就像一个解释系统,对其中的函本身就像一个解释系统,对其中的函数程序的执行以一种解释执行的方式进行,这样最数程序的执行以一种解释执行的方式进行,这样最大
8、的好处是大的好处是MATLABMATLAB完成了一个开放的系统,用户可完成了一个开放的系统,用户可以方便地看到函数的源程序,也可以方便地开发自以方便地看到函数的源程序,也可以方便地开发自己的程序,甚至创建自己的己的程序,甚至创建自己的“库库”。 另外,另外,MATLAB并不并不“排他排他”,MATLAB可以方可以方便地与便地与FORTRAN、C语言进行连接,以充分利用各种语言进行连接,以充分利用各种资源。用户只需将已有的资源。用户只需将已有的EXE文件转换成文件转换成MEX文件,文件,就可以方便地调用有关程序和子程序。就可以方便地调用有关程序和子程序。 2021/6/77(4)编程易、效率高)
9、编程易、效率高 从形式上看,从形式上看,MATLAB程序文件是一个纯文本文程序文件是一个纯文本文件,扩展名为件,扩展名为M。用任何字处理软件都可以对它进行。用任何字处理软件都可以对它进行编写和修改,因此程序易调试,人机交换型强。编写和修改,因此程序易调试,人机交换型强。 另外,另外,MATLAB6.5也具有比较健全的调试系统,也具有比较健全的调试系统,调试方便、简单。调试方便、简单。 2021/6/782、 MATLAB的发展历史的发展历史 在在20世纪世纪70年代年代,Cleve Moler和其同事在美国国和其同事在美国国家科学基金的资助下研究开发了家科学基金的资助下研究开发了LINPACK
10、和和EISPACK的的Fortran子程序库,这两个程序库代表着当时矩阵计算子程序库,这两个程序库代表着当时矩阵计算的最高水平。的最高水平。 到到20世纪世纪70年代后期年代后期,身为墨西哥大学计算机科学,身为墨西哥大学计算机科学系系主任的系系主任的Cleve Moler,在给学生开线性代数课程时,在给学生开线性代数课程时,他开始用业余时间为学生编写使用方便的他开始用业余时间为学生编写使用方便的LINPACK和和EISPACK的接口程序。的接口程序。Cleve Moler给这个接口程序取给这个接口程序取名为名为MATLAB,意思是,意思是“矩阵实验室矩阵实验室”。2021/6/79 不久以后,
11、不久以后,MATLAB受到了学生的普遍欢迎,并受到了学生的普遍欢迎,并且,且,MATLAB也成了应用数学界的一个术语。也成了应用数学界的一个术语。 1983年年早春,早春,Cleve Moler到斯坦福大学访问,到斯坦福大学访问,身为工程师的身为工程师的John Little意识到意识到MATLAB潜在的广阔潜在的广阔应用领域应在工程计算方面,于是在同年,他与应用领域应在工程计算方面,于是在同年,他与Moler、Steve Bangert一起合作开发了第二代专业版一起合作开发了第二代专业版MATLAB。从这一代开始,。从这一代开始,MATLAB的核心就采用的核心就采用C语言编写。也是从这一代开
12、始,语言编写。也是从这一代开始,MATLAB不仅具有不仅具有数值计算功能,而且具有了数据可视化功能。数值计算功能,而且具有了数据可视化功能。 2021/6/710 1984年年,Mathworks公司成立,把公司成立,把Matlab推向了推向了市场,并继续市场,并继续Matlab的研制和开发。的研制和开发。Matlab在市场在市场上的出现,为各国科学家开发本学科相关软件提供上的出现,为各国科学家开发本学科相关软件提供了基础。了基础。 1993年年,Matlab的第一个的第一个Windows版本版本Matlab3.5k问世,同年,支持问世,同年,支持Windows3.x的的Matlab4.0版本
13、推出,版本推出,同以前的版本比起来同以前的版本比起来4.0版本作了很大的改进,如增加版本作了很大的改进,如增加了了Simulink( (动态仿真动态仿真)/)/Control/Network/Optimization/ Signal Processing/Spline/Identification/Robust Control/ Mu-analysis and synthesis(Mu分析与合成)等工具箱。分析与合成)等工具箱。 2021/6/711 1993年年11月月,Matnworks公司又推出了公司又推出了Matlab4.1版本,首次开发了版本,首次开发了Symbolic Math符号
14、运算工具箱。符号运算工具箱。其升级版本其升级版本Matlab4.2在用户中有着广泛的应用。在用户中有着广泛的应用。 1997年年,Matlab5.0版本问世了相对于版本问世了相对于Matlab4.x版本来说,版本来说,它可以说是一个飞跃;真正的它可以说是一个飞跃;真正的32位运算,功能强大,数值计算位运算,功能强大,数值计算加快,图形表现有效,变成简洁直观,用户界面十分友好。加快,图形表现有效,变成简洁直观,用户界面十分友好。 2000年下半年年下半年,Mathworks公司推出了他们的最公司推出了他们的最新产品新产品Matlab6.0( (R12)的试用版的试用版, ,并于并于2001年初推
15、出了年初推出了正式版正式版, ,同前面的版本对比起来同前面的版本对比起来, ,Matlab6.0在在Matlab5.x 的基础上这种在计算速度上作了比较大的的基础上这种在计算速度上作了比较大的改善,计算速度有了明显的提高。改善,计算速度有了明显的提高。2021/6/7123、MATLAB6.x的新特点的新特点 与与MATLAB5.x版本相比较,版本相比较,MATLAB6.x 版本在版本在各个方面都进行了较大的改进和增补,增加了许多新各个方面都进行了较大的改进和增补,增加了许多新功能和更为有效的处理方法,甚至在整个系统的结构功能和更为有效的处理方法,甚至在整个系统的结构上也作了很大的改进。上也作
16、了很大的改进。 (1). .开发环境扩展开发环境扩展 (2). 数值处理功能增强数值处理功能增强 (3). .程序及数据结构程序及数据结构 优化优化(4)图形处理)图形处理 (5)用户图形界面)用户图形界面 (6)应用程序接口)应用程序接口 2021/6/7134 4、MATLAB6.x的桌面平台的桌面平台(1). Matlab的主窗口的主窗口 (2). 命令窗口命令窗口(3). 历史窗口历史窗口 (4). 当前目录窗口当前目录窗口 (5). 发行说明窗口发行说明窗口 (6). 工作间管理窗口工作间管理窗口 2021/6/7144 4、MATLAB6.5的帮助系统的帮助系统1联机帮助系统:按下
17、主窗口的?及联机帮助系统:按下主窗口的?及Help下拉菜下拉菜 单的前四项。单的前四项。2命令窗口查询系统:命令窗口查询系统: help,help+函数名,函数名,lookfor函数。函数。3联机演示系统联机演示系统 基本介绍窗口:基本介绍窗口:intro; 演示界面:演示界面:demo. 2021/6/7155 5、常用的命令与技巧、常用的命令与技巧dir: 显示目录下文件显示目录下文件type: 显示文件内容显示文件内容clear: 清理内存变量清理内存变量pack: 收集内存碎片,扩大内存空间收集内存碎片,扩大内存空间clc: 清除工作窗口清除工作窗口 例例1.21.2南半球气旋流的曲面
18、图:南半球气旋流的曲面图:photo1.m,photo2.m。 2021/6/716二、二、MATLABMATLAB的数值计算功能的数值计算功能1、Matlab的数据类型的数据类型(1). 变量变量(2). 常量常量pi=3.1415926, i, j= , eps=10-52 , inf: 无穷大。无穷大。变量名以字母开头,长度不超过变量名以字母开头,长度不超过31位,区分大小写。位,区分大小写。(3)数字变量数字变量 258*123; x=258*123. 注意:加分号不显示结果,不加分号显示结果。注意:加分号不显示结果,不加分号显示结果。 (4). 字符串字符串 s=matrix lab
19、oratory size(s) s(4)(5)向量与矩阵向量与矩阵 2021/6/717演示演示1:jisuan01.m 例例2.1 要求计算水在要求计算水在0 00 0C C、20200 0C C、40400 0C C、60600 0C C、80800 0C C的的粘度,已知水的粘度随温度的变化公式为粘度,已知水的粘度随温度的变化公式为 ,其中其中0 0为水在为水在0 00 0C C的粘度的粘度, ,在在0 00 0C C值为值为.78510.78510-3-3 。 2021/6/7182、向量及其运算、向量及其运算(1)向量的生成向量的生成 (i). 直接输入向量:直接输入向量: a=1
20、2 3 4 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维的行向量维的行向量 2021/6/719(2)向量的加、减、数乘、点乘、叉乘等运算向量的加、减、数乘、点乘、叉乘等运算已知向量已知向量a=a1, a2, a3、b=b1, b2, b3,则有,则有数量加法:数量加法:a+2=a1+2, a2+2, a3+2;数量减
21、法:数量减法: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;2021/6/720点乘运算:点乘运算:dot(a,b)=a1*b1+a2*b2+a3*b3, sum(a.*b)= a1*b1+a2*
22、b2+a3*b3;向量混合积:向量混合积: dot(a,cross(b,c) 演示演示0:在命令窗口演示向量的各种运算。:在命令窗口演示向量的各种运算。 向量乘幂:向量乘幂:a.2=a12, a22, a33; 2.a=2a1, 2a2, 2a3 a.b=a1b1, a2b2, a3b3 2021/6/7213矩阵的运算矩阵的运算(1). 矩阵的生成矩阵的生成 在命令窗口直接键入:在命令窗口直接键入:A=1 2 3;4 5 6;7 8 9; 用用M文件输入大型矩阵文件输入大型矩阵A=10 12 32 41 52 63;21 23 45 67 78 43;21 34 90 89 67 54 演示
23、演示1:juzhen01.m,注意矩阵的输入法,及行数、注意矩阵的输入法,及行数、列数的确定函数列数的确定函数size(A), size(A,1)行数行数, ,size(A,2)列列数。数。 A=10 12 32 41 52 63 21 23 45 67 78 43 21 34 90 89 67 54 或者或者 2021/6/722(2). 矩阵的基本运算矩阵的基本运算矩阵加法矩阵加法: A+B、 A+a; 矩阵减法矩阵减法: A-B 、A-a; 数乘矩阵:数乘矩阵:A*2; 矩阵相乘:矩阵相乘:A*B,注意匹配:注意匹配:A的列数等于的列数等于B的行数的行数; 矩阵左除矩阵左除: AB, 注
24、意匹配:注意匹配:A的行数等于的行数等于B的行的行数,用于解线性方程组(恰定、超定、欠定方程组)数,用于解线性方程组(恰定、超定、欠定方程组)、矩阵方程组、矩阵方程组; 矩阵右除:矩阵右除:A/B,注意匹配:注意匹配:A的列数等于的列数等于B的列数的列数(用法同上)(用法同上); 矩阵乘幂:矩阵乘幂:A2,注意匹配:注意匹配:A必须为方阵必须为方阵; 2021/6/723(3). 矩阵的其它运算矩阵的其它运算 zeros(m,n): m行行n列的零矩阵列的零矩阵 ones(m,n): m行行n列的全矩阵列的全矩阵 eye(n): n阶单位矩阵阶单位矩阵 rand(m,n): m行行n列的均匀分
25、布的随机数矩阵列的均匀分布的随机数矩阵 randn(m,n ):m行行n列的均匀分布的随机数矩阵列的均匀分布的随机数矩阵 det(A): 矩阵的行列式矩阵的行列式 inv(A): 矩阵求逆矩阵求逆 rank(A): 矩阵求秩矩阵求秩 trace(A): 矩阵的迹矩阵的迹 2021/6/724 d=eig(A): 矩阵的特征值矩阵的特征值 v,d=eig(A): 矩阵的特征值及特征向量矩阵的特征值及特征向量 poly(A):矩阵的特征多项式:矩阵的特征多项式 cond(A): 矩阵的条件数矩阵的条件数 cond(X,p): 向量或矩阵的范数,向量或矩阵的范数,p=1,2,inf; 演示:演示:j
26、uzhen02.m,各种运算。各种运算。2021/6/725(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。 tri
27、l(A): 提取矩阵主下三角部分提取矩阵主下三角部分 tril(A,k): 提取矩阵的第提取矩阵的第k条对角线(包括第条对角线(包括第k条对角线)条对角线)下面的部分,下面的部分,k为正值为上方对角线,为正值为上方对角线,k为负值为下方对为负值为下方对角线。角线。 2021/6/726 triu(A): 提取矩阵主上三角部分提取矩阵主上三角部分 triu(A,k): 提取矩阵的第提取矩阵的第k条对角线(包括第条对角线(包括第k条条对角线)上面的部分,对角线)上面的部分,k为正值为下方对角线,为正值为下方对角线,k为为负值为上方对角线。负值为上方对角线。 演示演示3:juzhen03.m,练习以
28、上各种运算。练习以上各种运算。 注意掌握矩阵运算以下主要命令:注意掌握矩阵运算以下主要命令:注意掌握矩阵运算以下主要命令:注意掌握矩阵运算以下主要命令: (1). 求方阵的行列式、逆矩阵、广义逆求方阵的行列式、逆矩阵、广义逆 (2). 求方阵的特征值、特征向量、特征多项式求方阵的特征值、特征向量、特征多项式 (3). 矩阵的各种分解矩阵的各种分解: :上三角、下三角、平方根、正上三角、下三角、平方根、正交分解交分解 2021/6/727例例2.2 用矩阵除法求解超定方程用矩阵除法求解超定方程 x=19 25 31 38 44, y=19 32.3 49 73.3 97.8,求出求出a,b. 解
29、:这是一个超定方程组:解:这是一个超定方程组:Ax=y ,A=(x2,1) , , 。建立。建立m文件实现计算。文件实现计算。演示演示4:juzhen04.m2021/6/7284、多项式及其运算、多项式及其运算(1). 多项式的表示法多项式的表示法 对于多项式对于多项式 pn(x)=a0xn+a1xn-1+.+an-1x+an ,用以下用以下的行向量表示:的行向量表示:p=a0,a1,an-1,an.(i). 系数多项式的直接输入法系数多项式的直接输入法 例如:例如:p3(x)=x3-5x2+6x-33,输入:,输入: p=1 5 6 33 ; p3=poly2sym(p): 给出多项式的具
30、体形式。给出多项式的具体形式。 (ii). 特征多项式输入法特征多项式输入法 例如:例如:a=1 2 3;2 3 4;3 4 5 p=poly(a) p3=poly2sym(p)2021/6/729(iii). 由根创建多项式由根创建多项式 例如:例如:p=1 11 55 125 x=-2 y=polyval(p,x)(2). 多项式运算多项式运算 (i). 求多项式的值:求多项式的值: y=polyval(p,x) 例如:例如:root=-5,-3+4i,-3-4i p=poly(root) p3=poly2sym(p)2021/6/730(ii). 求多项式的根:求多项式的根: root(
31、p) 例如:例如:p=2 5 6 1 9 roots(p) 例如:例如: p1=1 5 6 1 9; poly2sym(p1) p2=3 90 -18; poly2sym(p2) p12=conv(p1,p2) poly2sym(p12) p3=deconv(p12,p2) (iii). 求多项式的乘除法运算求多项式的乘除法运算:conv(p1,p2), deconv(p1,p2)2021/6/731(iV). 多项式微分:多项式微分: polyder(p) polyfit(x,y,n) 其中其中x、y为拟合数据,为拟合数据,n为拟和多项式的阶数。为拟和多项式的阶数。 例如:例如: p=1 5
32、 6 1 9; p4=poly2sym(p) Dp=polyder(p) P3=poly2sym(Dp)(V). 多项式拟合多项式拟合2021/6/732 例例2.3:2.3:用用5阶多项式对阶多项式对 上的正弦函数进行最小上的正弦函数进行最小二乘拟合二乘拟合 x=0:pi/20:pi/2; y=sin(x); p=polyfit(x,y,5) x1=0:pi/30:2*pi; y1=sin(x1); y2=polyval(p,x1) plot(x1,y1,-b,x1,y2,*r) legend(原曲线原曲线,拟合曲线拟合曲线) axis(-0.2,6.5,-1.2,1.2)演示演示5: po
33、ly01.m2021/6/733(5) (5) 其它算例其它算例 执行字符串执行字符串用用 eval 函数生成四阶的函数生成四阶的Hilbert函数函数n=4;t=1/(i+j-1);a=zeros(n);for i=1:n for j=1:n a(i,j)=eval(t); endend2021/6/734(6). 上机练习题上机练习题 1. 对于给定数据对于给定数据x=0.5,1,1.5,2,2.5,3,3.5,4,4.5,5,计算计算如下函数值如下函数值 。2. 给定矩阵给定矩阵(1).计算矩阵行列式的值计算矩阵行列式的值(2).计算矩阵的逆计算矩阵的逆(3).计算矩阵的秩、特方程计算矩
34、阵的秩、特方程(4).计算矩阵的特征值、特征向量计算矩阵的特征值、特征向量(5).计算矩阵的条件数计算矩阵的条件数(6).对矩阵进行对矩阵进行LU分解分解2021/6/7353. 对于对于解方程组解方程组Ax=b。 4. 对于离散数据对于离散数据 P=1 2 3 2 4 1 2,试拟合三次多试拟合三次多项式项式, (1).求出该多项式的具体表达形式。求出该多项式的具体表达形式。 (2).求出该多项式的根。求出该多项式的根。 (3). 求出该多项式在求出该多项式在x=2.5处的值。处的值。 (4). 求出该多项式的微分。求出该多项式的微分。 5. 对于向量对于向量 a=1 2 3 , b=2 4
35、 1,c=2,1,3,试求试求 (1). a与与b的向量积。的向量积。 (2). a、b、c的混合积。的混合积。 2021/6/736三、三、MATLAB的符号运算功能的符号运算功能1. 符号表达式的生成符号表达式的生成(1). 创建符号函数创建符号函数 f=log(x)(2). 创建符号方程创建符号方程 equation=a*x2+b*x+c=0(3). 创建符号微分方程创建符号微分方程 diffeq=Dy-y=x(4). 用用sym命令来创建命令来创建 f=sym(sin(x) f=sym(a*x2+b*x+c=0)(5). 用用sym命令创建的另一种方式命令创建的另一种方式 syms x
36、 f=sin(x)+cos(x) 2021/6/7372. 符号与数值之间的转换符号与数值之间的转换 符号运算得到的是精确解符号运算得到的是精确解,有时候要对得到的解析解有时候要对得到的解析解进行数值转换。主要有三个函数进行数值转换。主要有三个函数: digits, vpa, Subs: 变量替换函数变量替换函数.Digits(D): 函数设置有效数字个数为函数设置有效数字个数为D的近似解精度的近似解精度. Vpa(s) : 符号表达式符号表达式s在在digits函数设置下的精度的函数设置下的精度的 近似解近似解.Vpa(s,D) : 符号表达式符号表达式s在在digits(D)精度下的精度下
37、的 近似解近似解.Subs(s,old,new): 将符号表达式中将符号表达式中 old 的换成的换成new变量变量.Numeric(s): 将不含自由变量的符号表达式转换成数将不含自由变量的符号表达式转换成数 值形式值形式.2021/6/738例例3. 1 符号运算符号运算1. 解方程解方程: 3*x-1=0 s=solve(3*x-1=0) :解析解解析解 digits(10) :设置设置10位有效数字位有效数字 x=vpa(s) :10位有效数字解析解位有效数字解析解 or x=vpa(s,20) :20位有效数字解析解位有效数字解析解 numeric(s) :将解析解转换成数值解将解析
38、解转换成数值解 2. 变量替换变量替换 x=sym(x) f=x-cos(x) f1=subs(f, x, pi) t=sym(t) f1=subs(f,x,t) 3. 解方程解方程 x2-ex = 0 s=solve(x2-exp(x)=0) x=vpa(s) 2021/6/7393. 符号函数的运算符号函数的运算(1). 复合函数的运算复合函数的运算: compose compose(f,g) %以以g的自变量为自变量的自变量为自变量 compose(f,g,z) %以以z为自变量为自变量 compose(f,g,x,z) % x为为f的自变量的自变量,g替换替换x,并将并将 g的自变量换
39、为的自变量换为z compose(f,g,t,z) % t为为f的自变量的自变量,g替换替换t,并将并将 g的自变量换为的自变量换为z compose(f,g,x,y,z) % x为为f的自变量的自变量,y为为g的自的自 变量变量, g替换替换x, z替换替换y2021/6/740例例3.2 f=1/(1+x2) g=sin(y) h=xt p=exp(-y/u)命令命令: syms x y t u z; compose(f,g) compose(f,g,t) compose(h,g,x,z) compose(h,g,t,z) compose(h,p,x,y,z) compose(h,p,t,
40、u,z) 演示演示1: fuhao01.m 2021/6/7412.反函数的运算反函数的运算: inverse3. g=finverse(f)4. g=finverse(f,z) 例例3.3: syms x,y; f=x3+1 y=finverse(f)例例3.4: f=x2+y g=finverse(f,y)2021/6/7424. 符号矩阵的创立符号矩阵的创立 (1). 用用sym函数直接创建符号矩阵函数直接创建符号矩阵 a=sym(1/(s+x),sin(x) ,cos(x)2/(b+x); 9, exp(x2+y2), log(tanh(y) (2).将数值矩阵转化为符号矩阵将数值矩阵
41、转化为符号矩阵(在在Matlab中中,数值矩数值矩阵不能直接参与符号运算,必须先转化为符号矩阵。阵不能直接参与符号运算,必须先转化为符号矩阵。不论数值矩阵的元素是用分数还是用浮点数表示,转不论数值矩阵的元素是用分数还是用浮点数表示,转化后的符号矩阵都将以最接近的精确有利形式给出。化后的符号矩阵都将以最接近的精确有利形式给出。) b=2/3,sqrt(2),0.222;1.4,1/0.23,log(3) c=syms(b)演示演示2: fuhao02.m2021/6/7435.符号矩阵的计算符号矩阵的计算(1). 符号矩阵的四则运算符号矩阵的四则运算 a=sym(1/x,1/(x+1);1/(x
42、+2),1/(x+3) b=sym(x,1;x+2,0) c=a+b d=ab e=det(a) f=inv(b) g=rank(a) h=exp(b) 演示演示: fuhao022.m2021/6/744(2).矩阵分解矩阵分解 特征值分解函数特征值分解函数 b=sym(x,1;x+2,0) x,y=eig(b)三角抽取函数三角抽取函数 a=sym(1/x,1/(x+1);1/(x+2),1/(x+3) D=diag(a) U=triu(a) L=tril(a,-1)符号表达式的符号表达式的“秦秦 九韶型九韶型”重写重写 p=sym(x3-6*x2+11*x-6) p3=horner(p)2
43、021/6/7456. 符号微积分符号微积分(1). 符号极限符号极限 limit(f,x,a) % f 在在 xa 时的极限时的极限 limit(f) % f 在在 x0 时的极限时的极限 limit(f,x,a,right) % 右极限右极限 limit(f,x,a,left) % 左极限左极限例例6.1: syms x t ; %必须首先输入必须首先输入 limit(sin(x)/x) limit(1+2*t/x)(3*x),x,inf) limit(1+2*t/x)(3*x),x,inf) limit(1/x,x,0,right) limit(sqrt(x),x,0,left) 202
44、1/6/746(2). 符号积分符号积分不定积分不定积分 f1=int(cos(x) %关于关于x积分积分 f2=int(cos(x*t),t) %关于关于t积分积分定积分定积分 x=int(x2,0,1)符号合计函数符号合计函数 symsum syms k n; x= symsum(k2,0,10) % 求表达式从求表达式从0到到10的和的和 f=simple(symsum(k2,0,n) %和的最简形式和的最简形式2021/6/747(3). 符号微分符号微分(i). 微分函数微分函数 diff syms x y; diff(sin(x2) %求函数的一阶导数求函数的一阶导数 diff(s
45、in(x*y),x) diff(x4,3) diff(sin(x*y),x,2) %关于关于x求二阶导数求二阶导数(ii). 梯度函数梯度函数 gradient 演示演示3: fuhao03.m2021/6/7487. 符号代数方程求解符号代数方程求解(1). 线性方程组的符号解法线性方程组的符号解法 linsolve a=sym(10 1 0;-1 10 2;0 2 10); b=sym(9;7;6); x=linsolve(a,b) %求得解析解求得解析解 x1=vpa(x) %转化为数值解转化为数值解演示演示4: fuhao04.m or a=10 1 0;-1 10 2;0 2 10;
46、 b=9;7;6; x=sym(a)sym(b) %求得解析解求得解析解 x1=vpa(x) %转化为数值解转化为数值解演示演示5: fuhao05.m2021/6/749(2). 非线性方程组的符号解法非线性方程组的符号解法 (i). 非线性方程求解非线性方程求解: solve(fun),求得解析解求得解析解 x=solve(x2+3*x+4=0) %得解析解得解析解 x1=vpa(x,6) %化为数值解化为数值解 (ii). 非线性方程组求解非线性方程组求解 fsolve(fun,x0) fun由由M文件给出函数文件给出函数, x0为初值为初值,是一种迭代解法是一种迭代解法. 例例7.1
47、解非线性方程组解非线性方程组 先编写先编写M文件文件fc.m, 再用再用fsolve调用调用fc. 演示演示6: fc.m and fuhao06.m2021/6/7508. 符号常微分方程求解符号常微分方程求解 求解常微分方程的解析解求解常微分方程的解析解,用函数用函数 dsolve(equation) 例例8.1 : dsolve(Dx=-a*x) %Dx=dx/dt desolve(D2x=-a*x) 例例8.2 : 解常微分方程组解常微分方程组演示演示7: fuhao07.m2021/6/7519. 符号函数的二维图符号函数的二维图(1). 符号函数的简易绘图函数符号函数的简易绘图函数
48、 ezplot ezplot(f) %绘制绘制f(x)的函数图的函数图, x的范围的范围-2pi, 2pi ezplot(f, xmin,xmax) % x的范围为的范围为xmin,xmax例如例如: ezplot(sin(x) or ezplot sin(x) ezplot(sin(x),0,2*pi)(2). 绘制函数图函数绘制函数图函数 fplot fplot(fun,lims) %fun为为M文件的函数名或是对文件的函数名或是对 变量变量x的可执行字符串的可执行字符串. fplot(fun,lims,n) %n-线条的宽度线条的宽度 fplot(fun,lims,LinSpec) %L
49、inSpec线条的类型线条的类型演示演示8: fuhao08.m2021/6/752四、四、 MATLAB的图形处理功能的图形处理功能1. 二维图形二维图形(1).基本绘图命令基本绘图命令(i).当当plot函数仅有一个输入变量时函数仅有一个输入变量时y=132422.51;plot(y)%以以y的索引坐标为横坐标画图的索引坐标为横坐标画图y=rand(100,1);%100*1维的随机数维的随机数plot(y)%绘制随机数的图形绘制随机数的图形x=rand(100,1);y=rand(100,1);z=x+y.*i;plot(z)%以实部为横坐标以实部为横坐标,虚部为纵坐标绘图虚部为纵坐标绘
50、图2021/6/753(ii).当当plot函数有两个输入变量时函数有两个输入变量时 x=0:0.01*pi:pi; y=sin(x).*cos(x); plot(x,y)(iii).当当plot函数有三个输入变量时函数有三个输入变量时 plot(x,y,s) % s为图形显示属性选项为图形显示属性选项 例如例如: x=1:0.1*pi:2*pi; y=sin(x); z=cos(x); plot(x,y,-b) plot(x,z,-.rd) 演示演示1: photo01.m2021/6/754 选选 项项 说说 明明 选选 项项 说说 明明- 实实 线线。 点点: 点点 线线o 园园-. 点
51、划线点划线x x-符号符号- 虚虚 线线+ +号号 y 黄黄 色色* 星号星号m 紫红色紫红色s 方形方形c 蓝黄色蓝黄色d 菱形菱形r 红红 色色v 下三角下三角g 绿绿 色色 上三角上三角b 蓝蓝 色色 右三角右三角k 黑黑 色色p 正五边形正五边形2021/6/755(2). 特殊的二维图形函数特殊的二维图形函数 (i). 特殊坐标系的二维图形函数特殊坐标系的二维图形函数 (a). 对数坐标下的图形对数坐标下的图形 semilogx(x,y,s) %以以x为对数坐标为对数坐标 semilogy(x,y,s) %以以y为对数坐标为对数坐标 loglog(x,y) %以以x,y为对数坐标为对
52、数坐标 例如例如:x=1:0.1*pi:2*pi; y=sin(x); semilogx(x,y,*b)演示演示2: photo02.m2021/6/756 (b). 极坐标系下的图形绘制极坐标系下的图形绘制 函数函数:polar(theta,rho,s)exp:x=0:0.01*pi:4*pi;y=sin(x/2)+x;polar(x,y,-b)2021/6/757(ii). 二维特殊函数图(下表为二维特殊图形函数)二维特殊函数图(下表为二维特殊图形函数)函数名函数名说说 明明函数名函数名说说 明明area填充绘图填充绘图fplot函数图绘制函数图绘制bar条形图条形图hist直方图直方图b
53、arth水平条形图水平条形图pareto图图comet彗星图彗星图pie柄状图柄状图errorbar误差带图误差带图plotmatrix分散矩阵绘制分散矩阵绘制ezplot简单绘制函数图简单绘制函数图stairs阶梯图阶梯图ezpolar简单绘制极坐标图简单绘制极坐标图scatter散射图散射图feather矢量图矢量图stem离散序列柄状图离散序列柄状图fill多边形填充多边形填充ribbon三维图的二维条三维图的二维条状显示状显示2021/6/758 例例4.1 绘制条形图、矢量图、函数曲线图、柄状图、绘制条形图、矢量图、函数曲线图、柄状图、等高线图、填充等高线图等高线图、填充等高线图 b
54、ar(x,y) feather(x,y) fplot(fun,lim) pie(x, note) contour(z,n) %z为数值矩阵,为数值矩阵,n为等高线条数为等高线条数 contourf(z,n) %填充等高线函数填充等高线函数 演示演示3:photo03.m (注意注意 pause后的山形图原图后的山形图原图)2021/6/7591. 基本绘图命令基本绘图命令 (1). plot3函数函数 格式格式:plot3(x,y) %X是向量或矩阵是向量或矩阵 plot3(x,y,s) plot3(x1,y1,s1,x2,y2,s2,x3,y3,s3) %组合绘图组合绘图 例例2.1:绘制三
55、维螺旋线(向量为参数)绘制三维螺旋线(向量为参数) 三维图形(矩阵为参数)三维图形(矩阵为参数) 演示演示4:photo04.m2. 三维图形三维图形2021/6/760(2). 网图函数网图函数 (3). 着色函数着色函数 surf(x,y,z,c)例例2.2: mesh 绘制三维面图绘制三维面图 meshc 带等高线的面图、带等高线的面图、 meshz 带屏蔽的面图带屏蔽的面图.演示演示5: photo05.m 函函 数数 名名 说说 明明 mesh 三维网格图三维网格图 meshc 将网格与等高线结合将网格与等高线结合 meshz 屏蔽的网格图屏蔽的网格图 meshgrid 生成网格点生
56、成网格点2021/6/761特殊的图形函数特殊的图形函数函数名函数名说说 明明函数名函数名说说 明明bar3三维条形图三维条形图surfc着色图等高线结合着色图等高线结合comet3三维彗星轨迹图三维彗星轨迹图trisurf三角形表面图三角形表面图ezgraph3控制绘制三维图控制绘制三维图trimesh三角形网格图三角形网格图pie3三维柄状图三维柄状图waterfall瀑布图瀑布图scatter3三维散射图三维散射图cylinder柱面图柱面图stem3三维离散数据图三维离散数据图sphere球面图球面图例例2.2: 绘制三维饼状图绘制三维饼状图/着色等高线图着色等高线图/三维等高线图三维
57、等高线图/柱面图柱面图/球面图球面图演示演示6: photo06.m2021/6/7621. 图形控制图形控制 坐标轴的控制函数坐标轴的控制函数 axis(xmin,xmax,ymin,ymax) 平面的坐标网图函数平面的坐标网图函数 grid on/grid off 2. 图形的标注图形的标注 坐标轴标注坐标轴标注 xlabel(标注标注,属性属性) /ylabel /zlabel 文本标注文本标注 text(x,y, 标注文本及控制字符串标注文本及控制字符串) 交互式文本标注交互式文本标注 gtext 图例标注图例标注 legend(标注标注1,标注标注2)3. 图形的保持与子图图形的保持
58、与子图 hold onhold offsubplot(m,n,p) 演示演示7: photo07.m, photo08.m四四. 图形处理的基本技术图形处理的基本技术2021/6/763五五. . 图形处理的高级技术图形处理的高级技术1.颜色映像颜色映像图形的一个重要因素就是图形的颜色,对于数值图形的一个重要因素就是图形的颜色,对于数值计算,颜色在图形显示中所起的作用不仅仅是美观,计算,颜色在图形显示中所起的作用不仅仅是美观,主要是它能够提供给用户另外一附加维数主要是它能够提供给用户另外一附加维数第四维。第四维。Matlab采用颜色映像来处理图形颜色,也即采用颜色映像来处理图形颜色,也即RGB
59、色系。该方法在色系。该方法在Matlab语言内的实现是借助于矩阵来语言内的实现是借助于矩阵来完成的,该矩阵为三列矩阵,每一列代表完成的,该矩阵为三列矩阵,每一列代表R(红色红色)、G(绿色绿色)和和B(蓝色蓝色)中的一个颜色,三者综合构成对应的中的一个颜色,三者综合构成对应的颜色。下表示一些常用的颜色映像元素。颜色。下表示一些常用的颜色映像元素。2021/6/764 R (红色红色)G (绿色绿色) B(蓝色)(蓝色) 映映 像像000黑色黑色111白色白色100红色红色010绿色绿色001蓝色蓝色110黄色黄色101洋红色洋红色011青色青色2/301天蓝天蓝10橘黄橘黄0.500深红深红0
60、.50.50.5灰色灰色2021/6/765以上颜色映像在默认状态下均为以上颜色映像在默认状态下均为64*3的颜色矩阵,的颜色矩阵,每个颜色映像均描述了每个颜色映像均描述了64种颜色的种颜色的RGB属性。属性。按一定规律将各种颜色的映像元素综合成一映像按一定规律将各种颜色的映像元素综合成一映像矩阵即构成了矩阵即构成了Matlab语言的颜色映像。几种常用的语言的颜色映像。几种常用的Matlab语言内置的颜色映像如下表所示:语言内置的颜色映像如下表所示:颜色映像颜色映像相应的颜色系相应的颜色系颜色映像颜色映像相应的颜色系相应的颜色系autumn红黄色系红黄色系hsv色调饱和色系色调饱和色系bone
61、点一点蓝色的灰度点一点蓝色的灰度jet色调饱和色系色调饱和色系colorcube增强的颜色系增强的颜色系line线性色系线性色系cool青和洋红的色系青和洋红的色系pink柔和色系柔和色系copper线型铜色系线型铜色系prism棱镜色系棱镜色系flag交替的红白蓝黑色系交替的红白蓝黑色系spring洋红、黄色系洋红、黄色系gray线性灰色系线性灰色系summer绿、黄色系绿、黄色系hot黑红黄白色系黑红黄白色系winter蓝绿色系蓝绿色系vgaWindows16位色系位色系2021/6/766对于绝大多数的线图函数对于绝大多数的线图函数,如如plot、plot3、contour等,一般不需要
62、颜色映像来控制其色彩显示,而对于等,一般不需要颜色映像来控制其色彩显示,而对于面图函数,如面图函数,如mesh、surf等,则需要调用颜色映像。等,则需要调用颜色映像。Matlab语言提供的调用颜色映像的函数为语言提供的调用颜色映像的函数为colormap,调用格式如下:调用格式如下:2021/6/767五五. . 图形处理的高级技术图形处理的高级技术1. 背景颜色操作函数背景颜色操作函数 colordefColordefnone%将图形背景与图形窗口背景设为相同将图形背景与图形窗口背景设为相同x,y,z=peaks;Mesh(x,y,z)Colordefblak%将图形背景设置为黑色将图形背
63、景设置为黑色x,y,z=peaks;Mesh(x,y,z)Colordefwhite%将图形背景设置为白色将图形背景设置为白色x,y,z=peaks;Mesh(x,y,z)2021/6/7682. 视角与光照视角与光照 Matlab语言还提供了对图形进行视角及光源控制的功能。语言还提供了对图形进行视角及光源控制的功能。所谓视角就是图形展现给用户的角度,而所谓光照就是图形色所谓视角就是图形展现给用户的角度,而所谓光照就是图形色彩强弱变化的方向。通过这两种方法可以丰富彩强弱变化的方向。通过这两种方法可以丰富Matlab对图形的对图形的处理。处理。 (1). 视角控制函数视角控制函数 view、vi
64、ewmtx及及rotate3d x,y,z=peaks; colormap(hot) mesh(x,y,z) xlabel x ylabel y view(45,45)%photo102021/6/769 (2). 光照控制函数光照控制函数 view、viewmtx及及rotate3d 在在Matlab语言中还提供了许多对光照进行控制的操作语言中还提供了许多对光照进行控制的操作x,y,z=peaks;mesh(x,y,z)light(position,1,1,1)%photo10函数名说明说明函数名说明说明Light设置光源设置光源Specular镜面反射模型镜面反射模型Surfl存在光源的三
65、维面图存在光源的三维面图Diffuse漫反射模式漫反射模式Lighting光源模式光源模式lightangle球坐标系中的光源球坐标系中的光源material图形表面对光照反映图形表面对光照反映模式模式2021/6/770上机练习上机练习2 2 1. 绘制一个一函数的元函数的图形,并进行适当的修饰绘制一个一函数的元函数的图形,并进行适当的修饰说明。说明。 2. 绘制一个二函数的元函数的图形,并进行适当的修饰绘制一个二函数的元函数的图形,并进行适当的修饰说明。说明。 3. 绘制绘制 一幅统计分析图,并做必要的修饰说明一幅统计分析图,并做必要的修饰说明 。2021/6/771部分资料从网络收集整理而来,供大家参考,感谢您的关注!