matlab教案.docx
- 文档编号:24825515
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:85
- 大小:467.35KB
matlab教案.docx
《matlab教案.docx》由会员分享,可在线阅读,更多相关《matlab教案.docx(85页珍藏版)》请在冰豆网上搜索。
matlab教案
第一章绪论
一.1科学计算简介
科学计算,即对科学和工程中的数学问题进行数值计算。
数值计算的过程主要包括建立数学模型、建立求解的计算方法、计算机实现三个阶段。
数值计算的特点是计算方法比较复杂,方法种类多种多样,如数值微分、数值积分、常/偏微分方程、线性代数方程、有限元等。
数值计算所关心的焦点是计算精度(误差影响)。
科学计算可分为两类:
一类是纯数值的计算,例如求函数的值,方程的数值解;另一类计算是符号计算,又称代数运算,这是一种智能化的计算,处理的是符号。
符号可以代表整数,有理数,实数和复数,也可以代表多项式,函数,还可以代表数学结构如集合,群的表示等等。
我们在数学的教学和研究中用笔和纸进行的数学运算多为符号运算。
主要的数学软件有:
Mathematica、MATLAB、Maple和MathCAD。
尽管计算机代数系统在代替人进行繁琐的符号运算上有着无比的优越性,但计算机毕竟是机器,它只能执行人们给它的指令。
此外,虽然计算机代数系统包含大量的数学知识,但这仅仅是数学的一小部分,目前有许多数学领域计算机代数系统还未能涉及。
一.2Matlab概述
1980年前后,当时的新墨西哥大学计算机系主任CleveMoler教授在讲授线性代数课程时,发现了用其他高级语言编程极为不便,便构思并开发了MATLAB(MATrixLABoratory,即矩阵实验室),这一软件利用了当时数值线性代数领域最高水平的EISPACK和LINPACK两大软件包中可靠的子程序,用Fortran语言编写了集命令翻译、科学计算于一身的一套交互式软件系统。
只要给出一条命令,立即就可以得出该命令的结果,而无需像C和Fortran语言那样,首先编写源程序,然后对之进行编译、连接,最终形成可执行文件。
这无疑会给使用者带来了极大的方便。
此后,CleveMoler等人成立了MathWorks的公司,用C语言作了完全的改写,于1984年推出了第一个MATLAB的商业版本。
其后又增添了丰富多彩的图形图像处理、多媒体功能、符号运算和它与其他流行软件的接口功能,使得MATLAB的功能越来越强大,应用范围越来越广。
到目前为止其最高版本7.0版已经推出。
MATLAB具有强大的数学运算能力、方便实用的绘图功能及语言的高度集成性,它在其他科学与工程领域的应用也是越来越广,并且有着更广阔的应用前景和无穷无尽的潜能。
MATLAB可以将使用者从繁琐、无谓的底层编程中解放出来,把有限的宝贵时间更多地花在解决问题中,这样无疑会提高工作效率。
目前,MATLAB已经成为国际上最流行的科学与工程计算的软件工具,现在的MATLAB已经不仅仅是一个“矩阵实验室”了,它已经成为了一种具有广泛应用前景的全新的计算机高级编程语言了,在国内外高校和研究部门正扮演着重要的角色。
可以预见,在科学运算、自动控制与科学绘图领域MATLAB语言将长期保持其独一无二的地位。
一、MATLAB的主要特点
●有高性能数值计算的高级算法特别适合矩阵代数领域;
●有大量事先定义的数学函数并且有很强的用户自定义函数的能力;
●有强大的绘图功能以及具有教育、科学和艺术学的图解和可视化的二维、三维图;
●适合个人应用的强有力的面向矩阵(向量)的高级程序设计语言;
●与其它语言编写的程序结合和输入输出格式化数据的能力;
●有在多个应用领域解决难题的工具箱。
本教程基于MATLAB6.5版。
二、操作环境
matlab主界面:
菜单、工具栏、工作区(命令窗口)、workplacebrower、commmandhistory等。
Figtrue窗口:
m文件编辑窗口:
有些工具箱也提供了操作界面,可以通过命令或选择start的toolboxes菜单进入。
三、引例
>>2+6–4
ans=
4
>>ans/2
ans=
2
也可以定义变量
>>a=5
a=
5
>>b=6
b=
6
>>c=b/a
c=
1.2000
可以使用内建的变量和函数
>>pi
ans=
3.1416
>>sin(ans/4)
ans=
0.7071
四、帮助
在MATLAB系统中相关的线上(on-line)求助方式有:
1.利用help或helpwin指令:
在命令窗口键入help
2.利用lookfor指令:
键入的lookfor(key-word),列出所有相关的题材,例如lookforcosine,lookforsine。
3.利用指令视窗的功能选单中的Help,从中选取TableofContents(目录)或是Index(索引)。
4.利用doc指令:
doc;或docfunction
第二章
Matlab运算基础
二.1变量与赋值
一、变量
matlab变量主要是矩阵,矩阵的元素可以是数值或字符串。
其中数值可以是实数或复数,虚数单位用i或j表示。
如a=3+9i(最好不要写成3+9*i,因为i、j是可以作为普通变量被赋值的)
特别地,如果矩阵只有一行或一列,就称为向量(vector),,如果只有一行一列,就称为标量(scalar)。
其他的变量类型有:
多维数组、结构、对象等。
变量的命名:
matlab变量无需声明即可直接使用,变量名以字母开头,接字母、数字或下划线,最多63个字符(多余的被忽略),区分大小写。
系统变量:
ans:
valueofanexpressionwhenthatexpressionisnotassignedtoavariable
eps:
floatingpointprecision2.2204e-016(2-52)
pi:
π,(3.141492...)
realmax:
最大正浮点数1.7977e+308(21024)
realmin:
最小正浮点数2.2251e-308(2-1022))
Inf:
∞,正无穷大,anumberlargerthanrealmax,theresultofevaluating1/0.
NaN:
notanumber,theresultofevaluating0/0
i,j:
虚数单位
不要对系统变量赋值,否则使用内建函数时会出错。
例外:
i,j常作为循环变量使用。
二、赋值语句
1)变量=表达式
2)直接输入表达式:
结果被赋给系统变量ans
注意:
●语句后加分号,表示仅执行,不显示结果
●续行符为…(三个句点)
●注释:
以%开头
例子:
p14,计算表达式
的值,并将结果赋给变量a。
>>a=2*sin(85*pi/180)/(1+sqrt(5)+3i)
a=
0.3311-0.3070i
变量的查看:
who,whos。
who列出工作空间中的所有变量名,whos同时给出变量的维数和性质。
变量也列在workplacebrowser中。
数据的格式:
format格式符,格式符参见p18。
如formatshort。
也可以通过file->prefrences菜单,在prefrences对话框的commandwindow项中设置。
变量的清除:
clear,清除工作空间中的所有变量,等同edit->clearworkplace菜单。
清除命令窗口:
clc,等同edit->clearconmmandwindow菜单。
二.2矩阵
一、矩阵的建立
1)直接输入
将矩阵元素用方括号括起来,同一行各元素间用空格或逗号隔开;各行之间用分号或回车隔开。
例:
A=[123;456;789]
或A=[1,2,3
4,5,6
7,8,9]
2)利用函数建立
很多函数都会返回一个或几个矩阵作为计算结果。
以下函数则专门用于建立特殊矩阵(向量)。
●linspace:
建立等差数列,x=linspace(startValue,endValue,nelements),若省略nelements,则为100。
例:
>>v=linspace(0,9,4)
v=
0369
●logspace:
建立等比数列。
y=logspace(a,b,n):
在10^a与10^b之间产生n个数,若省略n,则为50
y=logspace(a,pi,n):
在10^a与pi之间产生n个数,若省略n,则为50。
例:
>>y=logspace(0,2,5)
y=
1.00003.162310.000031.6228100.0000
特殊矩阵的建立(参见p83):
●空矩阵:
[],产生行数、列数均为0的矩阵。
●对角线矩阵:
diag(V)用向量V建立一个对角线矩阵,diag(A)从矩阵A中提取主对角线向量。
diag(A,k)提取主对角线上方第k条对角线。
●单位矩阵:
eye(n)
●幺矩阵:
ones(m),ones(m,n)产生元素值均为1的矩阵
●零矩阵:
zeros(m),zeros(m,n)产生元素值均为0的矩阵
●随机矩阵:
元素值为随机值。
rand(n)、rand(m.n):
分别建立n*n、m*n阶矩阵,矩阵元素为0~1之间均匀分布的数;randn(n)、randn(m,n):
0~1之间正态分布。
3)通过mat文件保存和建立矩阵
savefilenamevar1var2...:
把当前工作空间(workpalce)中的指定变量保存到文件filename(扩展名为.mat)中,如果不指定变量在,则保存所有变量。
loadfilenamevar1var2...:
把文件filename.mat中的变量载入到当前工作空间中。
如果不指定变量在,则载入所有变量。
也通过workplacebrowser的工具栏按钮可以完成以上操作。
4)通过workplacebrowser编辑矩阵
双击workplacebrowser中的变量,或选中变量后单击工具栏的open按钮,可以打开ArrayEditor编辑矩阵。
二、矩阵的基本操作
1、矩阵元素的操作:
如A(3,2)=200,如果给出的行数或列数大于原来矩阵的]范围,则会自动扩展原来的矩阵,并将扩展后未赋值的元素置0。
2、冒号操作:
冒号是一个重要的运算符,利用冒号可以产生向量、拆分矩阵。
产生向量的一般格式是:
e1:
e2:
e3。
其中e1为初始值;e2为步长,若省略则为1;e3为终止值。
例:
>>t=0:
2:
10
t=
0246810
拆分矩阵:
A(i,:
)提取A矩阵的第i行元素。
A(:
j)提取A矩阵的第j列元素
A(i:
i+m,k:
k+m):
提取A矩阵的第i—i+m行元素、第k—k+m列元素。
例:
A=[12345;678910;1112131415;1617181920];
A(3,:
)
ans=
1112131415
A(2:
3,4:
5)
ans=
910
1415
A(2:
3,1:
2:
5)
ans=
6810
111315
>>ans(:
)
ans=
6
11
8
13
10
15
3、矩阵的合并
大矩阵可由方括号中的小矩阵建立起来。
例:
A=[123;456;789];
C=[Aeye(size(A))]
C=
123100
456010
789001
4、删除矩阵元素
利用空矩阵,可将矩阵的某些行和列删除。
如A(:
[2,4])=[]将删除A的2列和第4列元素。
例:
A=[12345;678910;1112131415];
A(:
[2,4])=[]%删除A的2列和第4列元素
A=
135
6810
111315
5、矩阵的加减法
运算规则:
对应元素相加、减。
A+B,A-B
6、数乘:
k*A
7、矩阵的乘法
运算规则:
按线性代数中矩阵乘法运算进行,即放在前面的矩阵的各行元素,分别与放在后面的矩阵的各列元素对应相乘并相加。
即
例:
A=[123;456];
B=[12;30;74];
A*B
ans=
2814
6132
8、数组乘法:
将矩阵的对应元素相乘。
x.*y
例:
x=[12;34];y=[56;78];
z=x.*y
z=
512
2132
9、矩阵的除法
有两种除法运算:
\(左除)和/(右除)。
A\B相当于inv(A)*B,B/A相当于B*inv(A)。
对于标量来说,/就是通常所用的除法,且A/B和B\A是等价的。
矩阵的除法在讲线性方程组求解再详细讲解。
10、数组除法:
将矩阵的对应元素相除。
x.\y和y./x是等价的。
11、矩阵的乘方:
^
例:
A=[12;34];
A^2
ans=
710
1522
12、数组的乘方:
求矩阵的每个元素的幂,.^
例:
A=[12;34];
A.^2
ans=
14
916
12、转置
把A的所有列换成相应的列,得到的矩阵称为A的转置矩阵。
运算符是'。
(对称矩阵A'=A;反对称矩阵A'=-A)
例:
A=[12;34];
A'
ans=
13
24
二.3表达式
算术表达式:
+,-,*,/,\,^(乘方)
关系表达式:
<,<=,>,>=,==,~=,若结果成立,关系表达式结果为1,否则为0。
逻辑表达式:
&(与),|(或),~(非)。
非零元素作为真值,结果为真时表示为1,否则为0。
运算优先级:
算术运算优先级最高,逻辑运算最低。
二.4数学函数
二.4.1常用数学函数
参见p25-26
二.4.2矩阵的超越函数
一、矩阵指数
Y=expm(X),
二、矩阵对数
Y=logm(X)
通常有:
logm(expm(X))=X=expm(logm(X))
三、矩阵平方根
Y=sqrtm(X)
习题:
教材p31-32:
2-
(1)
(2)(3)、3、4题
第三章
Matlab程序设计
三.1m文件
matlab有两种工作方式,一种是交互式的命令行工作方式,一种是m文件的程序工作方式。
m文件是后缀名为.m的文件,m文件有两类:
命令文件和函数文件,命令文件没有输入参数,也不返回输出参数。
函数文件可以有输入参数,也可返回输出参数。
函数文件和命令文件的执行如同普通的matlab命令。
当输入文件名时(如果有自变量就一起附带参数,就执行文件中的语句。
一、m文件的建立与编辑
所有的M文件都是普通的ASCII文件,可用任何文本编辑器建立和编辑,但一般用matlab自带的编辑器,在其中可以设置程序断点,进行调试。
m文件的建立:
File->New->m-file
m文件的建立:
File->Open…
二、命令文件
命令文件又称脚本文件(scriptfile),它是将多条需要运行的命令编辑保存到一个文件中,然后在命令窗口中输入文件名,就可运行文件中包含的命令序列。
matlab将首先在当前工作目录下寻找此文件,如果它不在当前目录下,那么在该路径下的所有目录中搜索。
搜索路径可以通过File->setpath…菜单指定。
例:
p34
三.2数据的输入输出
matlab提供了一些输入输出函数,便于用户和计算机之间进行交互。
1.ipput函数
A=input(提示信息,选项),选项可省略,为's'时允许用户输入字符串。
如:
>>A=input('pleaseinputA:
')
pleaseinputA:
[36;15]
A=
36
15
2.pause函数
pause(延迟秒数),省略秒时,需要按任意键后才继续执行
3.disp函数
disp(输出项),输出项可以是字符串或矩阵。
三.3程序结构
一、选择结构
1.if语句
if语句根据逻辑表达式的值,决定是否执行相应的语句。
其格式为:
ifexpression1
commandsevaluatedifexpression1isTrue
elseifexpression2
commandsevaluatedifexpression2isTrue
elseifexpression3
commandsevaluatedifexpression3isTrue
else
commandsevaluatedifnoother
expressionisTrue
end
如果在表达式中的所有元素为真(非零),那么就执行if和end语言之间的{commands}。
在表达式包含有几个逻辑子表达式时,即使前一个子表达式决定了表达式的最后逻辑状态,仍要计算所有的子表达式。
2.switch语句
switch语句根据表达式取值的不同,分别执行不同的语句。
其格式为:
switchexpression(scalarorstring)
casevalue1
statements%Executesifexpressionisvalue1
casevalue2
statements%Executesifexpressionisvalue2
…
otherwise
statements%Executesifexpressiondoesnotmatchanycase
二、循环
1.for语句
For循环允许一组命令以固定的和预定的次数重复。
For循环的一般形式是:
forx=array
{commands}
end
在for和end语句之间的{commands}按数组中的每一列执行一次。
在每一次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:
n)。
2.while语句
与For循环以固定次数求一组命令的值相反,While循环以不定的次数求一组语句的值。
While循环的一般形式是:
whileexpression
{commands}
end
只要在表达式里的所有元素为真,就执行while和end语句之间的{commands}。
通常,表达式的求值给出一个标量值,但数组值也同样有效。
在数组情况下,所得到数组的所有元素必须都为真。
3.continue语句:
跳过后面的语句,进入下一次迭代。
4.break语句:
跳出循环
三.4函数文件
主函数与子函数:
除内联函数外的所有函数都需要在m文件中定义。
每个M文件中可以定义一个或多个函数,最先出现在该m文件中的为主函数,其余的为子函数。
主函数的范围比子函数要广,可以在M文件外部调用(在命令窗口或者是其他的M文件中),而子函数则只在主函数和该M文件的其他子函数中可见。
私有函数:
私有函数是主函数文件的一种。
私有函数放在以private命名的子目录下,他们只是对其父目录中的函数是可见的。
因此他们可以采用与其他目录下函数相同的名字,这在当你想创建自己特定的函数的新版本而想在另外目录保存原来版本的函数的时候很有用。
全局变量和局部变量:
函数文件与命令文件在通信方面是不同的,函数内部的变量是局部变量,不出现在MATLAB工作空间。
但在函数文件中可以用global定义全局变量,全局变量的作用域是整个matlab工作空间。
例:
globala,则a为全局变量。
全局变量应尽量少使用。
一、函数文件格式
function输出形参表=函数名(输入参数表)
%注释说明部分
函数体
二、函数文件的规则和属性
1.函数名和文件名必须相同。
例如,函数fliplr存储在名为fliplr.m文件中。
2.在函数M文件中,到第一个非注释行为止的注释行是帮助文本。
当需要帮助时,返回该文本。
例如,»helpfliplr返回fliplr的注释部分。
第一行帮助行,名为H1行,是由lookfor命令搜索的行。
3.函数可以有零个或更多个输入参量。
函数可以有零个或更多个输出参量。
4.从函数M文件内可以调用命令文件。
在这种情况下,命令文件查看函数工作空间,不查看MATLAB工作空间。
5.函数可以递归调用。
即M文件函数能调用它们本身。
例:
p42,求n!
。
在编制要递归调用的函数时,必须确保会终止,否则MATLAB会陷入死循环。
6.当函数M文件到达M文件终点,或者碰到返回命令return,就结束执行和返回。
return命令提供了一种结束一个函数的简单方法,而不必到达文件的终点。
7.MATLAB函数error在命令窗口显示一个字符串,放弃函数执行,把控制权返回给键盘。
这个函数对提示函数使用不当很有用,如在以下文件片段中:
iflength(val)>1
error('VALmustbeascalar.')
end
这里,如果变量val不是一个标量,error显示消息字符串,把控制权返回给命令窗口和键盘。
三、内联函数
内联函数用于定义简单的函数,他可以直接在命令窗口中定义。
内联函数的定义为:
g=inline('expr','arg1','arg2',...)。
例:
g=inline('sin(alpha*x)','x','alpha');
g(0.5,pi)
ans=
1
四、函数调用
格式:
[输出参数表]=函数名[输入参数表]
函数调用的注意事项:
1.函数调用时,各实参出现的顺序要与函数定义时形参的顺序一致。
函数可以按少于函数文件中所规定的输入和输出变量进行调用,但不能用多于函数M文件中所规定的输入和输出变量数目。
2.当函数有一个以上输出变量时,输出变量包含在括号内。
例如,[V,D]=eig(A)。
不要把这个句法与等号右边的[V,D]相混淆。
右边的[V,D]是由数组V和D所组成。
3.利用系统变量nargin和nargout,可以得到调用时的输入参数和输出参数的数目,从而决定函数如何处理。
nargin为输入参量个数;nargout为输出参量个数。
例如,考虑MATLAB函数linspace:
functiony=linspace(d1,d2,n)
ifnargin==2
n=100;
end
y=[d1+(0:
n-2)*(d2-d1)/(n-1)d2];
如果用户只用两个输入参量调用linspace,例如linspace(0,10),linspace产生100个数据点。
相反,如果输入参量的个数是3,例如linspace(0,10,50),第三个参量决定数据点的个数。
3.函数句柄
有些函数的输入参数也是函数(如fplot),这时可以通过函数句柄来传入。
函数句柄的定义方法是:
在函数名前加一个@。
例:
fhandle=@sin;
fplot(fhandle,[0,2*pi])
可以使用格式:
[y1,y2,...]=feval
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 教案
![提示](https://static.bdocx.com/images/bang_tan.gif)