(完整版)MATLAB自学教程_第1页
(完整版)MATLAB自学教程_第2页
(完整版)MATLAB自学教程_第3页
(完整版)MATLAB自学教程_第4页
(完整版)MATLAB自学教程_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精讲多练 matlab主讲:张安莉 第第1 1章章 matlabmatlab语言的基本使用方法语言的基本使用方法 了解了解matlabmatlab的基本知识及其上机环境的基本知识及其上机环境 学会利用学会利用matlabmatlab进行基本的数学运算进行基本的数学运算matlab的工作环境的工作环境 matlab matlab 首先是一个视窗软件,意思是说,它在一个图形首先是一个视窗软件,意思是说,它在一个图形操作界面內开启自己的视窗。我们目前都使用操作界面內开启自己的视窗。我们目前都使用windows windows 操作操作界面,那也就是说,我们在界面,那也就是说,我们在windowswi

2、ndows桌面上,双击桌面上,双击matlabmatlab的图的图标,就进入标,就进入matlabmatlab的工作环境,也就是它的视窗。如下图:的工作环境,也就是它的视窗。如下图:matlab的工作环境的工作环境 他的外框和功能表、工具列,都与一般的他的外框和功能表、工具列,都与一般的 windows windows 视视窗软件窗软件( (例如例如 ms-word) ms-word) 长得很像,因此在一般性质的操作长得很像,因此在一般性质的操作上,也是相同的。上,也是相同的。 matlab matlab 视窗的工作区域被切分为三块:视窗的工作区域被切分为三块:workspace(worksp

3、ace(工作空工作空间间) )、command historycommand history(历史命令窗口)和(历史命令窗口)和command windowcommand window(命令窗口)。(命令窗口)。 command windowcommand window是用户与是用户与matlabmatlab进行人机对进行人机对话的主要环境。话的主要环境。命令窗口:用户在命令窗口:用户在提示符后键入命令,回车后,系统会提示符后键入命令,回车后,系统会执行输入的命令,并给出计算结果。执行输入的命令,并给出计算结果。有很多的控制键和命令键可用于命令行的编辑。例如用有很多的控制键和命令键可用于命令行

4、的编辑。例如用,箭头键可以将所用过的指令调回来重复使用。其他的如箭头键可以将所用过的指令调回来重复使用。其他的如,home,end,delete,inserthome,end,delete,insert等,其功能一用便知。等,其功能一用便知。清除命令窗口:清除命令窗口:clcclc清除工作空间:清除工作空间:clear allclear all(清除全部变量);(清除全部变量);clear aclear a(清除已(清除已存在的变量存在的变量a a););1.1 基本计算基本计算 matlabmatlab具备最普通的掌上型计算器具备最普通的掌上型计算器 (calculator) (calcul

5、ator) 功能。功能。使用使用matlabmatlab进行数学式的计算就象用计算器进行数字运算进行数学式的计算就象用计算器进行数字运算一样简便方便。一样简便方便。 他可以做基本的四則运算,例如:他可以做基本的四則运算,例如: 假设要计算假设要计算 1+2+3+4+51+2+3+4+5的结果,则只需在命令窗的系统的结果,则只需在命令窗的系统提示符号提示符号之后键入该算式之后键入该算式: : 1+2+3+4+5 1+2+3+4+5 ans =ans =1515 他知道先乘除后加減,例如他知道先乘除后加減,例如 2 2* *3-4 3-4 ,得到正确的答案,得到正确的答案 2 2。 遇到需要先加減

6、的情況,可以用一对小括号,例如:遇到需要先加減的情況,可以用一对小括号,例如: (1 + 2) (1 + 2) * * (3 - 12) (3 - 12) 得到正确的答案得到正确的答案 -27-27。 计算器当然不能只会计算整数,他也会处理小数。例计算器当然不能只会计算整数,他也会处理小数。例如以下是一个除法计算如以下是一个除法计算 1 / 2 1 / 2 得到答案得到答案 0.50.5。但是。但是 matlab matlab 输出的格式输出的格式0.50000.5000。再试试看再试试看 1.23 1.23 * * 4 4 或者或者 1.2 1.2 * * 3.4 3.4 。 除了四则运算与

7、括号之外,除了四则运算与括号之外,matlab matlab 也具备一般掌上型也具备一般掌上型计算器该有的最基本功能,这包括计算平方根计算器该有的最基本功能,这包括计算平方根(square root)(square root),指,指令是令是 sqrt( )sqrt( ),例如,例如 sqrt(4) sqrt(4) 在在 sqrt( ) sqrt( ) 里面可以有其他的运算,例如里面可以有其他的运算,例如 sqrt(1+2) sqrt(1+2) 或或者者sqrt(1+2sqrt(1+2* *3) 3) 另一个基本功能是绝对值另一个基本功能是绝对值 (absolute value)(absolu

8、te value),指令是,指令是abs( )abs( ),例如,例如 abs(-3) abs(-3) 或者或者 abs(7-3) abs(7-3) 或者或者 abs(3-7) abs(3-7) 像像sqrt( )sqrt( )和和abs( )abs( )这种功能,在这种功能,在 matlab matlab 中称为函数中称为函数(function)(function)。函数可以和其他常数或函数做计算,例如函数可以和其他常数或函数做计算,例如 7+abs(3-7) 7+abs(3-7) 或者或者 sqrt(9)+abs(7-3) sqrt(9)+abs(7-3) matlabmatlab其实具备

9、一般工程性计算器该有的基本功能。其实具备一般工程性计算器该有的基本功能。这包这包括幂次方、指数与对数函数、三角与反三角函数等等。我们先括幂次方、指数与对数函数、三角与反三角函数等等。我们先看看幂次方。计算幂次方的符号就是常用的看看幂次方。计算幂次方的符号就是常用的 记号。指数部记号。指数部分可以是任意数。例如分可以是任意数。例如 22 22 或者或者 2(-1) 2(-1) 或者或者 2(1/2) 2(1/2) 或者或者 2(1.25)2(1.25) matlabmatlab具备一般工程性计算器该有的基本功能具备一般工程性计算器该有的基本功能指数指数与对数。与对数。 科学与工程领域惯用标准指数

10、函数,也就是科学与工程领域惯用标准指数函数,也就是以以e e为为底底的指数函数。其中,的指数函数。其中,e e是一个无理数,大约等于是一个无理数,大约等于2.718282.71828。 matlabmatlab并不提供并不提供e e这个常数,我们不能按幂指数的形式来写这个常数,我们不能按幂指数的形式来写, ,比如:比如: e2 e2 !是非法的。是非法的。 matlabmatlab以函数以函数exp( )exp( )来计算以来计算以e e为底的指数函数。比如:为底的指数函数。比如: exp(1)exp(1)得到常数得到常数e e的近似值。的近似值。 xaxe matlab matlab 分别提

11、供三个函数分别提供三个函数 log( ) log( ) 、 log10( ) log10( ) 和和 log2( )log2( ),分别表示以,分别表示以 e e 为底的对数(自然对数),以为底的对数(自然对数),以1010为底为底的对数(常用对数)。例如的对数(常用对数)。例如 log(exp(2) log(exp(2) 和和 log10(100) log10(100) 和和 log2(4) log2(4) 的答案都是的答案都是 2 2。 matlabmatlab具备一般工程性计算器该有的基本功能具备一般工程性计算器该有的基本功能三角与三角与反三角函数。反三角函数。 六个三角函数在六个三角函

12、数在matlabmatlab 中对应的函数分别为中对应的函数分别为:正弦()余弦()正切()余切()正割()余割()matlabmatlab具备一般工程性计算器该有的基本功能具备一般工程性计算器该有的基本功能三角与三角与反三角函数。反三角函数。 六个反三角函数在六个反三角函数在matlabmatlab 中对应的函数分别为中对应的函数分别为:反正弦()反余弦()反正切()反余切()反正割()反余割()他们的用法并没有什么特殊的,需要注意的就是使用他们的用法并没有什么特殊的,需要注意的就是使用三角函数时,角度的单位是三角函数时,角度的单位是“弧度弧度”,而不是,而不是“度度”如果如果题设的已知条件

13、给的是题设的已知条件给的是“度度”,我们需要将他转化为弧度,我们需要将他转化为弧度来计算。来计算。 matlab matlab 甚至超越了一般工程型计算器该有的基本功能,甚至超越了一般工程型计算器该有的基本功能,以后我们会看到更多超越的功能,现在先看一个:复数。以后我们会看到更多超越的功能,现在先看一个:复数。比如我们要比如我们要matlabmatlab計算計算 sqrt(-1)sqrt(-1)而以为他不会,但是他回答而以为他不会,但是他回答 0 + 1.0000i0 + 1.0000i matlab matlab 的所有运算符号、所有函数,都懂得如何做复数的所有运算符号、所有函数,都懂得如何

14、做复数计算。例如计算。例如 (1+2i)-(1-2i) (1+2i)-(1-2i) 或者或者 3 3* * (1+2i) (1+2i) abs( ) abs( ) 计算的是复数的长度,也就是复数的模。例计算的是复数的长度,也就是复数的模。例如:如:abs(3+4i) abs(3+4i) 我们知道答案的确是我们知道答案的确是5 5。 复数的平方根是由比较系数法求得,例如要找复数的平方根是由比较系数法求得,例如要找 1+2i 1+2i 的平方根,就计算的平方根,就计算 (a + bi)2 = 1+2i (a + bi)2 = 1+2i 然后比较系数得到联立然后比较系数得到联立方程式方程式 a2 -

15、 b2 = 1a2 - b2 = 1 2ab = 2 2ab = 2 matlab matlab 可以代劳,只要说可以代劳,只要说 sqrt(1+2i) sqrt(1+2i) 就行了。就行了。由此,我们知道了由此,我们知道了matlabmatlab他认识复数。他认识复数。 1.2 变量变量 matlab matlab 比工程型计算器更好,除了因为他会计算复数之比工程型计算器更好,除了因为他会计算复数之外,还因为他接受变量外,还因为他接受变量 (variable(variable)。变量是指在程序执行)。变量是指在程序执行过程中其值可以变化的量。简化来说,过程中其值可以变化的量。简化来说,mat

16、labmatlab的变量应该有的变量应该有两个属性:两个属性:(1 1)变量名)变量名(2 2)它的值)它的值想象变量是一口箱子,在箱子上贴了标签,表明他的名想象变量是一口箱子,在箱子上贴了标签,表明他的名字,箱子里面放着他的值。字,箱子里面放着他的值。箱子本来不存在,只要你的箱子本来不存在,只要你的matlab matlab 的操作视窗里的操作视窗里“呼唤呼唤”他的名字,他就出现了。比如:他的名字,他就出现了。比如:foo foo matlab matlab 可能回应可能回应undefined function or variable fooundefined function or var

17、iable foo,这就是这就是matlab matlab 沒有一个名叫沒有一个名叫 foo foo 的函数,也沒有一口名叫的函数,也沒有一口名叫 foo foo 的箱子。的箱子。但是,只要说但是,只要说 foo = 5 foo = 5 matlab matlab 就自动制造了一口名叫就自动制造了一口名叫foofoo的箱子,并且在箱子里放的箱子,并且在箱子里放了数值了数值5 5。之后,你可以再说之后,你可以再说 foo foo matlab matlab 就会告告诉你,就会告告诉你,foo foo 的值是的值是 5 5。 把一个数值放进箱子的学名叫做指派把一个数值放进箱子的学名叫做指派 (as

18、sign)(assign),也就是,也就是赋值。赋值。matlab matlab 用用 = = 作为指派符号。用法是作为指派符号。用法是 变量名字变量名字 = = 数值数值如果变量名字原来不存在,如果变量名字原来不存在,matlab matlab 就临时开一口新箱子给你;就临时开一口新箱子给你;如果它原来就存在,如果它原来就存在,matlab matlab 放进新的数值,旧的便不见了,放进新的数值,旧的便不见了,就好像新的数值覆盖了旧的数值。因为箱子里面的数值很就好像新的数值覆盖了旧的数值。因为箱子里面的数值很容易改变,所以我们称它为变量。容易改变,所以我们称它为变量。 指派的数值可以是一指派

19、的数值可以是一个常数,例如个常数,例如 foo = 2.7183 foo = 2.7183 或者任何计算的结果,例如或者任何计算的结果,例如foo = 2.7183(-2) foo = 2.7183(-2) 或者或者 foo = exp(ifoo = exp(i* *pi)pi) 变量的显然用处就是节省打字。如果某个数值要一用再用,可变量的显然用处就是节省打字。如果某个数值要一用再用,可以利用变量把它存起來,将来再用。比如可以说以利用变量把它存起來,将来再用。比如可以说x = (-8)(1/3) x = (-8)(1/3) 然后再说然后再说 x3 x3 看看看看 matlab matlab 是

20、不是真的计算了是不是真的计算了 -8 -8 的三次方根?的三次方根?在在 matlab matlab 中,等号中,等号 = = 是是“指派指派”的意思,不是数学中的意思,不是数学中“相等相等“的意思的意思 。比如。比如foo = 1/5; foo = 1/5; 那么那么 0.2 0.2 就被指派给就被指派给foofoo,但是,但是 matlab matlab 并没有回应。看起来并没有回应。看起来好像好像 matlab matlab 没反应,但是其实他已经做好了。不信的话,就没反应,但是其实他已经做好了。不信的话,就下指令下指令 foofoo 只写一个变量名字只写一个变量名字 ( (別加分号別加

21、分号) ),matlab matlab 就会回应那个变量的就会回应那个变量的值。其实,这是一个简单的规则:变量如果出现在等号的左值。其实,这是一个简单的规则:变量如果出现在等号的左边,就是要被指派的意思。边,就是要被指派的意思。除此而外,只要在除此而外,只要在 matlab matlab 指令的任何地方写出变量的名指令的任何地方写出变量的名字,就是要取出它的值。而取出來之后,那个数值就可以如同字,就是要取出它的值。而取出來之后,那个数值就可以如同常数般做任何计算。例如常数般做任何计算。例如 foo foo * * 5 5 或者或者 1 / foo 1 / foo 都会执行正确的计算。都会执行正

22、确的计算。 第章第章 matlabmatlab的数值运算的数值运算介绍介绍matlabmatlab的两种基本的数值运算:的两种基本的数值运算:、矩阵、矩阵、多项式、多项式.1 矩阵矩阵matlab matlab 原本就是原本就是 matrix laboratory (matrix laboratory (矩阵实验室矩阵实验室) ) 的缩的缩写,所以他会认识矩阵,我们应该不会感到意外。我们用写,所以他会认识矩阵,我们应该不会感到意外。我们用 a = 1, 2; 3, 4 a = 1, 2; 3, 4 指派一个指派一个 2x2 2x2 方阵给变量方阵给变量 a a。输入矩阵的时候,我们用中括号夹住

23、两端,用逗号(,)输入矩阵的时候,我们用中括号夹住两端,用逗号(,)或者空格分开元素,用分号(;)分列。元素可以是常数、变或者空格分开元素,用分号(;)分列。元素可以是常数、变量和任何计算出来的数值。量和任何计算出来的数值。例如例如x = pi;x = pi;b = pi, exp(1),log(2);sin(x/2),-cos(3b = pi, exp(1),log(2);sin(x/2),-cos(3* *x/4),1+2(-2)+3(-2)x/4),1+2(-2)+3(-2)生成一个生成一个2x3 2x3 矩阵,并指派给变量矩阵,并指派给变量 b b。matlabmatlab是一个超级计

24、算器是一个超级计算器以矩阵为物件。以矩阵为物件。一般的计算一般的计算器或数值计算软件,都能做加减乘除这些运算,通常也都用器或数值计算软件,都能做加减乘除这些运算,通常也都用作为运算符,但是这些运算符都是作用在两个整数或者作为运算符,但是这些运算符都是作用在两个整数或者有理数之间,很少能够作用在两个复数甚至是矩阵之间,而有理数之间,很少能够作用在两个复数甚至是矩阵之间,而matlab matlab 就可以。而且他还可以根据就可以。而且他还可以根据“物件物件”类型的不同而决类型的不同而决定该采取什么样的步骤来进行计算。定该采取什么样的步骤来进行计算。matlabmatlab对于矩阵与矩阵之间的运算

25、的处理方法与线形代数对于矩阵与矩阵之间的运算的处理方法与线形代数中是相同的。中是相同的。v矩阵的加减运算矩阵的加减运算v矩阵乘法矩阵乘法运算符:运算符:* *条件:前一个矩阵的列数和后一个矩阵的行数相同或者其中一个是标量。条件:前一个矩阵的列数和后一个矩阵的行数相同或者其中一个是标量。(记忆:前一个矩阵(记忆:前一个矩阵行行元素的个数与后一个矩阵元素的个数与后一个矩阵列列元素的个数相等)元素的个数相等)v矩阵除法矩阵除法运算符:有两种运算符运算符:有两种运算符“/”/”(除以)和(除以)和“”(除),分别表示右除和左(除),分别表示右除和左除。除。区别区别 : 凡是按规则可以和凡是按规则可以和

26、 相乘的矩阵,都可以根据左乘和右乘作相乘的矩阵,都可以根据左乘和右乘作“除除”或或“除除以以”的运算。的运算。例如:例如:线性联立方程式可以写成线性联立方程式可以写成 ax=b ax=b 的形式,其中的形式,其中 a a 是一个是一个n n维可逆方维可逆方阵,阵,b b是一个是一个n n维向量,则维向量,则 ab11ab1b x = ab x = ab 就是前述联立方程式的一组解。就是前述联立方程式的一组解。例如以下线性联立方程式例如以下线性联立方程式可以如此求解:令可以如此求解:令 a = 4 6 -1; 5 -8 3; 1 4 1a = 4 6 -1; 5 -8 3; 1 4 1 b =

27、1 0 0 b = 1 0 0 x = ab x = ab 得到一組數值解得到一組數值解 0.1667 0.0167 -0.23330.1667 0.0167 -0.2333 040385164321321321xxxxxxxxx求特征值求特征值函数函数eigeig()用来计算()用来计算n n 阶矩阵的特征值。阶矩阵的特征值。求方阵的行列式求方阵的行列式把方阵看作行列式,则对应的行列式的值用函数把方阵看作行列式,则对应的行列式的值用函数det()来计算。()来计算。g=1 2 0;2 5 -1;4 10 -1;det(g)ans= 1向量:向量: 向量可以看作是矩阵的组成元素。向量分为行向量

28、和列向量。其中行向量可以看作是矩阵的组成元素。向量分为行向量和列向量。其中行向量还可以看作是一组序列。一个行向量和一个列向量相乘得到一个向量还可以看作是一组序列。一个行向量和一个列向量相乘得到一个1x11x1的的方阵,也就是一个纯量,这便是这两个向量的方阵,也就是一个纯量,这便是这两个向量的“内积内积”。例如。例如 b = -3; -1; 0; 1b = -3; -1; 0; 1和和v = 2, 0, 2, 4v = 2, 0, 2, 4 则则,v ,v * * b b 结果为一个纯量:结果为一个纯量:-2-2 那既然向量是特殊的矩阵,那向量的加、减、乘运算都和矩阵的运算那既然向量是特殊的矩阵

29、,那向量的加、减、乘运算都和矩阵的运算法则相同。需要说的是向量的构造除了直接输入外,还有几种构造方法:法则相同。需要说的是向量的构造除了直接输入外,还有几种构造方法:1 1、利用字符利用字符“:”来生成行向量;来生成行向量; n:s:m:s:m 产生以产生以s s为间隔,从为间隔,从n n开始,到开始,到“不超过不超过”m m的数。的数。 对行向量的作转置运算就可以得到列向量。对行向量的作转置运算就可以得到列向量。2、利用内部函数产生;利用内部函数产生; linspace(a,b,c) 产生首项为产生首项为a,末项为,末项为b,项数为,项数为c的等差数列。的等差数列。v多项式多项式 在在mat

30、lab中,多项式用行向量表示。中,多项式用行向量表示。 在在matlab中,用中,用ploy(a)来产生行向量所对应的形如)来产生行向量所对应的形如所对应的多项式。此多项式还是行向量的形式。有一个函数所对应的多项式。此多项式还是行向量的形式。有一个函数poly2sym(p,x)可以将行向量形式的多项式转化为多项式形式。其中,可以将行向量形式的多项式转化为多项式形式。其中,p为要转换的行向为要转换的行向量,量,x为多项式中的变量。为多项式中的变量。 nnaaaap110.v多项式的运算多项式的运算1、加减运算:加减运算: 进行加减运算的多项式应该具有相同的阶次,如果阶进行加减运算的多项式应该具有

31、相同的阶次,如果阶次不同,需要补零。次不同,需要补零。例:求两个多项式例:求两个多项式 和和的和、积、商。的和、积、商。a =5 4 3 2 1;b =3 0 1;c =a+0 0 bc= 5 4 6 2 2对应的结果是对应的结果是2、乘法乘法多项式乘法采用多项式乘法采用conv()函数。()函数。12345)(234xxxxxa13)(2 xxb22645234xxxxc(x)3、除法除法 用用deconv()函数实现多项式除法。不同的是多项式的除法需要指定()函数实现多项式除法。不同的是多项式的除法需要指定商多项式和余数多项式两部分。计算多项式除法形如商多项式和余数多项式两部分。计算多项式

32、除法形如div,rest=deconv()()4、微分微分用函数用函数polyder()来实现多项式的微分。()来实现多项式的微分。例如:求多项式例如:求多项式 的微分。的微分。p=2 -6 3 0 7;q= polyder(p)q=8 -18 6 05、求根求根求多项式的根,用函数求多项式的根,用函数roots。70362)(234xxxxxp6、求值求值 我们想要计算多项式中未知数为某个特定值时该多项式的值,这时,我们想要计算多项式中未知数为某个特定值时该多项式的值,这时,我们会用到我们会用到polyval函数。举例说明用法:函数。举例说明用法:polyval(p,1)ans= 6我们可以

33、看出来,此语句是求多项式我们可以看出来,此语句是求多项式p当当x=1时,多项式的值。时,多项式的值。代表矩阵元素的变量代表矩阵元素的变量 如果如果a是一个矩阵,则是一个矩阵,则a是一个变量,是一个变量,matlab的精彩之处,就是变量的精彩之处,就是变量箱子可以储存一个数值,也可以储存一个矩阵。而变量储存矩阵的时候,箱子可以储存一个数值,也可以储存一个矩阵。而变量储存矩阵的时候,它会自动衍生出来元素变量、行变量和列变量。它会自动衍生出来元素变量、行变量和列变量。a( )括号内的数字都代表对括号内的数字都代表对元素足标的操作。元素足标的操作。例如:例如:a(1,1)代表代表a的(的(1,1)元素

34、,)元素,matlab会回应它的值。如果要改变它,只要重会回应它的值。如果要改变它,只要重新指派它即可;例如新指派它即可;例如a(1,1) = 2 a(1,1) = 2 * * a(1,1) a(1,1)就是把就是把a11a11元素置换成原来元素的两倍。元素置换成原来元素的两倍。a(2,:) 代表代表 a 的第二列,也同樣可以置換它,例如的第二列,也同樣可以置換它,例如 a(2,:) = -a(2,:)就是把第二列每个元素都变号。就是把第二列每个元素都变号。 如果如果 x 代表一个向量,則它的元素变量可以用比较简单的形式:代表一个向量,則它的元素变量可以用比较简单的形式: x(3) 就代表它的

35、第三个元素就代表它的第三个元素 x3,而,而 x(3) = x(1) + x(2) 就是把就是把 x3 置换成前两个置换成前两个元素之和。元素之和。 数组数组1、一维数组一维数组 数组是一个长方形阵列,它可以具有不同的维数。在数组是一个长方形阵列,它可以具有不同的维数。在matlab中,一中,一行的矩阵,我们可以看作一个行向量,同时也可以看作是一个一维数组。行的矩阵,我们可以看作一个行向量,同时也可以看作是一个一维数组。所以一维数组的构造方法与前面的矩阵和行向量的构造方法类似。所以一维数组的构造方法与前面的矩阵和行向量的构造方法类似。 根据前面的内容,我们可以对已经构造好的数组中的某个元素进行

36、操根据前面的内容,我们可以对已经构造好的数组中的某个元素进行操作。例如:作。例如:a=4:8; %构造数组构造数组a(2) %取取a的第二个元素的第二个元素a(4 2 5 1) %把原来把原来a数组的元素按数组的元素按4,2,5,1的次序重新排列的次序重新排列2、二维数组二维数组从数据结构上看,矩阵和二维数组没有什么区别,构造方法类似于矩阵。从数据结构上看,矩阵和二维数组没有什么区别,构造方法类似于矩阵。 第第3 3章章 matlabmatlab的符号运算的符号运算介绍介绍matlabmatlab的符号运算的概念和使用的符号运算的概念和使用 前两章介绍的都是关于数值的运算,那还有一类运算,比如

37、求极限,前两章介绍的都是关于数值的运算,那还有一类运算,比如求极限,对于这种运算我们知道会有一些对于这种运算我们知道会有一些x x、y y等的未知数的存在,对于这类运算,等的未知数的存在,对于这类运算,我们就要用到符号计算的功能。我们就要用到符号计算的功能。 那前面我们知道那前面我们知道matlabmatlab有很多工具箱,符号计算就是由符号数学工具有很多工具箱,符号计算就是由符号数学工具箱支持完成的。符号工具箱是在箱支持完成的。符号工具箱是在maplemaple软件的基础上完成的。当我们调用符软件的基础上完成的。当我们调用符号函数,也就是请求号函数,也就是请求matlabmatlab进行符号

38、计算的时候,系统交给进行符号计算的时候,系统交给maplemaple进行计进行计算,计算完成后将结果返回系统的显示窗口。算,计算完成后将结果返回系统的显示窗口。符号变量和符号表达式符号变量和符号表达式符号变量和符号表达式用符号变量和符号表达式用symsym函数来创建。如函数来创建。如x=sym(x)x=sym(x)运行后,符号变量运行后,符号变量x x这口箱子里面存放字母这口箱子里面存放字母x x。如果要同时创建几个符号变量,要用到如果要同时创建几个符号变量,要用到symssyms函数。如函数。如syms a b c x ysyms a b c x y 在定义了符号变量的基础上,就可以定义符号

39、表达式。如在定义了符号变量的基础上,就可以定义符号表达式。如f=sym(af=sym(a* *x2+bx2+b* *x+c) x+c) % %定义符号表达式,并将它放入定义符号表达式,并将它放入f f这口箱子。这口箱子。这样就可以很方便地分析一元二次方程这样就可以很方便地分析一元二次方程 ,通过对,通过对f f执行符号操作,可以进行积分、微分等符号运算工作。如执行符号操作,可以进行积分、微分等符号运算工作。如: :对变量对变量f f求微求微分,用微分函数分,用微分函数diff(diff()。)。 df=diff(f) df=diff(f)在符号表达式中,对于自变量的确定,如果事先没有指定自变量

40、的在符号表达式中,对于自变量的确定,如果事先没有指定自变量的情况下,情况下,matlabmatlab会按照数学常规自行决定谁是自变量。确定原则:除了会按照数学常规自行决定谁是自变量。确定原则:除了和之外,最接近的小写字母被认定为自变量。和之外,最接近的小写字母被认定为自变量。如果我们在编程的过程中,不能确定自变量,有一个函数可以告诉你:如果我们在编程的过程中,不能确定自变量,有一个函数可以告诉你:findsymfindsymcbxaxf2v微积分微积分1、极限极限 求极限是微积分的基础,求极限的函数求极限是微积分的基础,求极限的函数limit。 limit(f,x,a) %x趋近于趋近于a时,

41、时,f 的极限的极限 limit(f,x,a,left) %x左趋近于左趋近于a时,时,f 的极限的极限 limit(f,x,a,right) %x右趋近于右趋近于a时,时,f的极限的极限 看我们的教科书上看我们的教科书上p42的例题的例题2、微分微分 diff(f,t,n) %求求f 对独立变量对独立变量t的的n次微分值次微分值例:已知例:已知 %求求f(x)的微分的微分 3、积分积分 int(f,t,a,b) %求求f 对独立变量对独立变量t 在积分区间在积分区间a,b的积分值的积分值4、级数级数 自变量自变量v在在a,b之间取值时,对通项之间取值时,对通项s求和。用函数求和。用函数sym

42、sum(s,v,a,b) cbxaxxf2)( f对自变量对自变量v的泰勒级数展开至的泰勒级数展开至n阶:阶:toylor(f,v,n)例:求例:求sin(x)的前的前10项泰勒展开式。项泰勒展开式。方程求解方程求解1、代数方程代数方程solve(f)solve(f,a)2、常微分方程常微分方程dsolve(常微分方程式常微分方程式,初始条件初始条件,自变量自变量)v上机遗留问题上机遗留问题1、求微分方程求微分方程 的通解。的通解。syms x y;dsolve(d2y+4*dy+4*y=exp(-2*x),x)2、解微分方程解微分方程 。 dsolve(x2*dy+x*y=y2,y(1)=1

43、,x)1|,122xyyxyyxxeyyy2 44 第第4 4章章 计算结果的可视化计算结果的可视化介绍介绍matlabmatlab的两种基本绘图功能:的两种基本绘图功能:1 1、二维平面图形、二维平面图形 2 2、三维立体图形、三维立体图形v二维平面图形二维平面图形1、基本图形函数基本图形函数v折线图折线图plot(x,y)函数函数x,y是维度相同的序列或向量。比如:是维度相同的序列或向量。比如:x=0 1 2;y=0 1 0;plot(x,y) 如果我们用如果我们用300300段折线画出段折线画出sin(x)sin(x)在在-pi,pi-pi,pi区间內的折线图。想一想区间內的折线图。想一

44、想会出现什么样的结果。会出现什么样的结果。x = linspace(-pi, pi, 301);plot(x, sin(x) 如果我们要画多条曲线,也可以用如果我们要画多条曲线,也可以用plot函数,不同的是把括号里面的函数,不同的是把括号里面的x,y写作:写作:x,y1,x,y2,比如:画一条正弦曲线和余弦曲线。比如:画一条正弦曲线和余弦曲线。x=0:pi/10:2*piy1=sin(x)y2=cos(x)plot(x,y1,x,y2) plot(x,y1,r + -,x,y2,k * :)我们可以看到:图形是以公共的我们可以看到:图形是以公共的x元素为横坐标值,元素为横坐标值,y1,y2为

45、纵坐标值绘为纵坐标值绘制曲线图的。制曲线图的。如果想要图形更加完美,我们可以用一些特殊的图形函数对它进行修如果想要图形更加完美,我们可以用一些特殊的图形函数对它进行修饰。饰。xlabel(独立变量独立变量x)ylabel(独立变量独立变量y)ylabel(变量变量y)title(正弦和余弦曲线正弦和余弦曲线)text(1.5,0.3,cos(x)gtext(sin(x)axis(0 2*pi -0.9 0.9)如果只给如果只给plot( )plot( )一个参数,例如一个参数,例如 plot(y) plot(y) 而而y y是一个是一个n n 维向量或列。维向量或列。则它的效果就相当于则它的效

46、果就相当于plot(1:n), y)plot(1:n), y)。也就是说,。也就是说,matlabmatlab以以y y的元素足标的元素足标作为它的橫轴坐标。试试看作为它的橫轴坐标。试试看 y = 1 4 0 2 3 5;plot(y) 2、多重折线图多重折线图 matlabmatlab在一张图片上可以重复制图。基本上,画一张图的指令,将会自在一张图片上可以重复制图。基本上,画一张图的指令,将会自动清除前一张图。但是,如果下了指令动清除前一张图。但是,如果下了指令hold on,将不会清除前一张图,将不会清除前一张图,而是重复画上去。下了而是重复画上去。下了hold on指令的所有图将会重迭在

47、一张图片里,指令的所有图将会重迭在一张图片里,直到你下了直到你下了hold off为止。为止。为了示范,让我们以为了示范,让我们以 300 300 个折线段,在一张图片中,画出以下三个函个折线段,在一张图片中,画出以下三个函数在数在-pi, pi-pi, pi区间內的曲线图:区间內的曲线图: sin(x), cos(x), x 做法如下。做法如下。 x = linspace(0, 2*pi, 301); y = sin(x); plot(x, y, r); axis( 0 2*pi -1.2 1.2 ) hold on y = cos(x); plot(x, y, g); y = x; plo

48、t(x, y, b); hold off 我们还可以采用图形窗口分割的方法,在同一个视图窗口中画出多个小我们还可以采用图形窗口分割的方法,在同一个视图窗口中画出多个小图形。这时要用到图形。这时要用到subplot(n,m,k)subplot(n,m,k)。如果写。如果写subplot(2,2,1),subplot(2,2,1),即就是把图形即就是把图形窗口分割成窗口分割成2 2行行2 2列,在第列,在第1 1个位置(第个位置(第1 1行第行第1 1列)画图。列)画图。 x = linspace(0, 2*pi, 301); y = sin(x); subplot(2,2,1); plot(x,

49、 y); y = cos(x); subplot(2,2,2); plot(x, y);matlab对数据是按列存储和计算的。对数据是按列存储和计算的。v三维立体图形三维立体图形1、三维曲线图三维曲线图plot3函数调用格式:函数调用格式:plot3(x1,y1,z1,x2,y2,z2,)。其中。其中x1,y1,z1,x2,y2,z2等分别为维数相同的向量,分别存储着曲线的三个坐标值。等分别为维数相同的向量,分别存储着曲线的三个坐标值。例例 绘制方程绘制方程 的空间方程。的空间方程。 t=0:pi/10:2*pi; x=t; y=sin(t); z=cos(t); plot3(x,y,z,r:

50、p)( )在(tz,ttytxcos20sin grid on xlabel(x) ylabel(y) zlabel(z) title(sine and cosine)2、三维网格图和曲面图三维网格图和曲面图matlabmatlab在绘制三维网格图与曲面图时,往往先将要绘制图形的定义区域在绘制三维网格图与曲面图时,往往先将要绘制图形的定义区域分成若干网格,然后计算这些网格节点上的二元函数值,最后才能使用分成若干网格,然后计算这些网格节点上的二元函数值,最后才能使用meshmesh和和surfsurf函数绘制相应的图形。生成网格矩阵使用函数绘制相应的图形。生成网格矩阵使用meshgridmesh

51、grid函数,其调函数,其调用格式为:用格式为: u,v=meshgrid(x,y)函数说明:利用向量函数说明:利用向量x和和y生成网格矩阵生成网格矩阵u和和v,以便,以便mesh和和surf等函数等函数用来绘图。其中用来绘图。其中x、y分别是长度为分别是长度为n和和m升序排列的行向量。升序排列的行向量。生成的方法是将生成的方法是将x复制复制n次生成网格矩阵次生成网格矩阵u,将,将y转置成列向量后复制转置成列向量后复制m次生成网格矩阵次生成网格矩阵v。坐标。坐标(uij,vij)表示表示xoy平面上网格节点的坐标,第三维坐平面上网格节点的坐标,第三维坐标标zij=f(uij,vij)。例:给定

52、向量例:给定向量x=1 2 3 4,y=10 11 12 13 14,试由向量,试由向量x、y生成网生成网格矩阵。格矩阵。 x=1 2 3 4; %输入向量输入向量x y=10 11 12 13 14; %输入向量输入向量y u,v=meshgrid(x,y) %生成网格矩阵生成网格矩阵z= peaks(n)生成一个生成一个n阶的高斯分布的方阵。阶的高斯分布的方阵。绘制三维网格图形或曲面图形使用的绘制三维网格图形或曲面图形使用的mesh和和surf函数。函数。mesh函数及调用格式:函数及调用格式:mesh(x,y,z)说明:在说明:在x、y决定的网格区域上绘制数据决定的网格区域上绘制数据z的

53、网格图。的网格图。surf(x,y,z)在在xy确定的区域上绘制数据确定的区域上绘制数据z的三维曲面图。其中的三维曲面图。其中x、y是是向量。向量。例:在例:在-4x4,-4y4上绘制上绘制 的三维网格图。的三维网格图。 x,y=meshgrid(-4:0,125:4); %定义网格数据向量定义网格数据向量x,y z=x.2+y.2; %计算二元函数值计算二元函数值 mesh(x,y,z) %绘制三维网格图绘制三维网格图3、观察点观察点函数函数view(azinmuth,elevation)azinmuth:方位角。观察点与坐标原点的连线在水平面上的投影和:方位角。观察点与坐标原点的连线在水平

54、面上的投影和y轴轴负方向的夹角。(在水平面上)负方向的夹角。(在水平面上)elevation:仰角。观察点与坐标原点的连线和水平面的夹角。(与水平:仰角。观察点与坐标原点的连线和水平面的夹角。(与水平面垂直)面垂直)v动画动画v使用循环和观察点设定来实现动画效果。使用循环和观察点设定来实现动画效果。22yxz 第第5 5章章 matlabmatlab程序设计程序设计 1、命令文件和函数文件命令文件和函数文件 2、基本控制结构和控制转移语句基本控制结构和控制转移语句命令文件:命令文件:matlab提供两种源程序文件格式:命令文件和函数文件。这两种文件的提供两种源程序文件格式:命令文件和函数文件。

55、这两种文件的扩展名相同,均为扩展名相同,均为“.m”,又称为,又称为“m文件文件”。命令文件的执行方式:在提示符后键入命令文件的文件名。命令文件的执行方式:在提示符后键入命令文件的文件名。命令文件适合于用户做需要理解得到结果的小规模运算。命令文件适合于用户做需要理解得到结果的小规模运算。函数文件:函数文件:函数文件由函数文件由function语句引导。语句引导。其格式为:其格式为:function function 返回变量列表返回变量列表=函数名(输入变量列表)函数名(输入变量列表) 对于一个对于一个matlabmatlab程序员来说,编程序的一个主要内容就是如何将解决一程序员来说,编程序的

56、一个主要内容就是如何将解决一个应用问题所使用的算法用个应用问题所使用的算法用matlabmatlab语句和函数来描述出来。对于较复杂的语句和函数来描述出来。对于较复杂的问题,我们就要通过组织程序的结构来实现。首先介绍构成程序的几个基问题,我们就要通过组织程序的结构来实现。首先介绍构成程序的几个基本结构。本结构。、控制结构控制结构matlabmatlab提供三种常用控制结构:顺序结构、分支结构和循环结构。提供三种常用控制结构:顺序结构、分支结构和循环结构。v顺序结构顺序结构顺序结构由两个程序模块串接构成。一个程序模块可以是一条语句、一顺序结构由两个程序模块串接构成。一个程序模块可以是一条语句、一

57、段程序或一个函数等。先执行程序模块段程序或一个函数等。先执行程序模块1 1,再执行程序模块,再执行程序模块2 2,在在matlbmatlb编写程序时,实现顺序结构的方法非常简单:只需要将两个模编写程序时,实现顺序结构的方法非常简单:只需要将两个模块顺序排列就可以了。块顺序排列就可以了。选择结构选择结构1 1)if-else-endif-else-end语句语句其格式为:其格式为:if if 逻辑表达式逻辑表达式程序模块程序模块1 1;elseelse程序模块程序模块2 2;endend2 2)switchswitch语句语句其格式为:其格式为:switchswitch 表达式表达式case c

58、ase 数值数值1 1 模块模块1 1;case case 数值数值2 2模块模块2 2;otherwiseotherwiseendend演示函数演示函数trangradetrangrade循环语句循环语句1 1)whilewhile循环语句循环语句其格式为:其格式为:while while 逻辑表达式逻辑表达式循环体循环体endend注释:当表达式的结果为真时,反复执行其循环体内的语句,直到逻辑表注释:当表达式的结果为真时,反复执行其循环体内的语句,直到逻辑表达式的值为假时退出循环。达式的值为假时退出循环。1 1)forfor循环语句循环语句其格式为:其格式为:for for 变量变量= =

59、初值:增量:结束值初值:增量:结束值 程序模块;程序模块;endend演示函数演示函数xunhuan xunhuan 1.3.5 当前目录窗口和搜索路径当前目录窗口和搜索路径1当前目录窗口当前目录窗口当前目录是指当前目录是指matlab运行文件时的工作运行文件时的工作目录,只有在当前目录或搜索路径下的文目录,只有在当前目录或搜索路径下的文件、函数可以被运行或调用。件、函数可以被运行或调用。在当前目录窗口中可以显示或改变当前目在当前目录窗口中可以显示或改变当前目录,还可以显示当前目录下的文件并提供录,还可以显示当前目录下的文件并提供搜索功能。搜索功能。将用户目录设置成当前目录也可使用将用户目录设置成当前目录也可使用cd命命令。例如,将用户目录令。例如,将用户目录c:mydir设置为当前设置为当前目录,可在命令窗口输入命令:目录,可在命令窗口输入命令:cd c:mydir2matlab的搜索路径的搜索路径当用户在当用户在matlab命令窗口输入一条命令后,命令窗口输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论