Matlab软件与数学建模1.docx

上传人:b****3 文档编号:27228684 上传时间:2023-06-28 格式:DOCX 页数:74 大小:371.08KB
下载 相关 举报
Matlab软件与数学建模1.docx_第1页
第1页 / 共74页
Matlab软件与数学建模1.docx_第2页
第2页 / 共74页
Matlab软件与数学建模1.docx_第3页
第3页 / 共74页
Matlab软件与数学建模1.docx_第4页
第4页 / 共74页
Matlab软件与数学建模1.docx_第5页
第5页 / 共74页
点击查看更多>>
下载资源
资源描述

Matlab软件与数学建模1.docx

《Matlab软件与数学建模1.docx》由会员分享,可在线阅读,更多相关《Matlab软件与数学建模1.docx(74页珍藏版)》请在冰豆网上搜索。

Matlab软件与数学建模1.docx

Matlab软件与数学建模1

第一篇Matlab用法简介

绪言

Matlab是“MatrixLaboratory”的缩写,意为“矩阵实验室”,是当今美国很流行的科学计算软件.信息技术、计算机技术发展到今天,科学计算在各个领域得到了广泛的应用.在许多诸如控制论、时间序列分析、系统仿真、图像信号处理等方面产生了大量的矩阵及其相应的计算问题.自己去编写大量的繁复的计算程序,不仅会消耗大量的时间和精力,减缓工作进程,而且往往质量不高.美国Mathwork软件公司推出的Matlab软件就是为了给人们提供一个方便的数值计算平台而设计的.

Matlab是一个交互式的系统,它的基本运算单元是不需指定维数的矩阵,按照IEEE的数值计算标准(能正确处理无穷数Inf(Infinity)、无定义数NaN(not-a-number)及其运算)进行计算.系统提供了大量的矩阵及其它运算函数,可以方便地进行一些很复杂的计算,而且运算效率极高.Matlab命令和数学中的符号、公式非常接近,可读性强,容易掌握,还可利用它所提供的编程语言进行编程完成特定的工作.除基本部分外,Matlab还根据各专门领域中的特殊需要提供了许多可选的工具箱,如应用于自动控制领域的ControlSystem工具箱和神经网络中NeuralNetwork工具箱等.

第一节 Matlab的安装及使用

§1.1Matlab的安装

Matlab有各种版本,早期有Matlab1.0for386的DOS版本,后来逐步发展.这里介绍的版本是Matlab6.xforWindows.因为它使用方便,界面美观,我们选择它作为主要讲解版本.Matlab还有许多附加的部分,最常见的部分称为Simulink,是一个用作系统仿真的软件包,它可以让您定义各种部件,定义各自对某种信号的反应方式及与其它部件的连接方式.最后选择输入信号,系统会仿真运行整个模拟系统,并给出统计数据.Simulink有时是作为Matlab的一部分提供的,称为MatlabwithSimulink版本.Matlab还有许多工具箱,它们是根据各个特殊领域的需要,用Matlab自身的语言编写的程序集,使用起来非常方便.您可以视工作性质和需要购买相应的工具箱.常见的工具箱有:

SignalProcess

信号处理

SystemIdentification

系统辨识

Optimization

优化

NeuralNetwork

神经网络

ControlSystem

自动控制

Spline

样条

SymbolicMath

符号代数

ImageProcess

图像处理

NonlinearControl

非线性控制

Statistics

统计

§1.2Matlab基本用法

从Windows中双击Matlab图标,会出现Matlab命令窗口(CommandWindow),在一段提示信息后,出现系统提示符“>>”.Matlab是一个交互系统,您可以在提示符后键入各种命令,通过上下箭头可以调出以前打入的命令,用滚动条可以查看以前的命令及其输出信息.

如果对一条命令的用法有疑问的话,可以用Help菜单中的相应选项查询有关信息,也可以用help命令在命令行上查询,您可以试一下help、helphelp和helpeig(求特征值的函数)命令.

下面我们先从输入简单的矩阵开始掌握Matlab的功能.

§1.2.1输入简单的矩阵

输入一个小矩阵的最简单方法是用直接排列的形式.矩阵用方括号括起,元素之间用空格或逗号分隔,矩阵行与行之间用分号分开.例如输入:

A=[123;456;780]

系统会回答

A=

123

456

780

表示系统已经接收并处理了命令,在当前工作区内建立了矩阵A.

大的矩阵可以分行输入,用回车键代替分号,如:

A=[123

456

780]

结果和上式一样,也是

A=

123

456

780

§1.2.2矩阵元素

Matlab的矩阵元素可以是任何数值表达式.如:

x=[-1.3sqrt(3)(1+2+3)*4/5]

结果:

x=

-1.30001.73214.8000

在括号中加注下标,可取出单独的矩阵元素.如:

x(5)=abs(x

(1))

结果

x=

-1.30001.73214.800001.3000

注:

结果中自动产生了向量的第5个元素,中间未定义的元素自动初始为零.

大的矩阵可把小的矩阵作为其元素来完成,如:

A=[A;[101112]]

结果

A=

123

456

780

101112

小矩阵可用“:

”从大矩阵中抽取出来,如:

A=A(1:

3,:

);

即从A中取前三行和所有的列,重新组成原来的A.(详细介绍参见第二节的相关内容)

§1.2.3语句和变量

Matlab的表述语句、变量的类型说明由Matlab系统解释和判断.Matlab语句通常形式为:

变量=表达式

或者使用其简单形式为:

表达式

表达式由操作符或其它特殊字符、函数和变量名组成.表达式的结果为一个矩阵,显示在屏幕上,同时保存在变量中以留用.如果变量名和“=”省略,则具有ans名(意思指回答)的变量将自动建立.例如:

键入1900/81

结果为:

ans=

23.4568

需注意的问题有以下几点:

●语句结束键入回车键,若语句的最后一个字符是分号,即“;”,则表明不输出当前命令的结果.

●如果表达式很长,一行放不下,可以键入“…”(三个点,但前面必须有个空格,目的是避免将形如“数2…”理解为“数2.”与“..”的连接,从而导致错误),然后回车.

●变量和函数名由字母加数字组成,但最多不能超过63个字符,否则系统只承认前63个字符.

●Matlab变量字母区分大小写,如A和a不是同一个变量,函数名一般使用小写字母,如inv(A)不能写成INV(A),否则系统认为未定义函数.

§1.2.4who和系统预定义变量

输入who命令可检查工作空间中建立的变量,键入:

who

系统输出为:

Yourvariablesare:

Aansx

这里表明三个变量已由前面的例子产生了.

但列表中列出的并不是系统全部的变量,系统还有以下内部变量:

eps、pi、Inf、NaN

变量eps在决定诸如矩阵的奇异性时,可作为一个容许差,容许差的初值为1.0到1.0以后计算机所能表示的下一个最大浮点数,IEEE在各种计算机、工作站和个人计算机上使用这个算法.用户可将此值置为任何其它值(包括0值).Matlab的内部函数pinc和rank以eps为缺省的容许差.

变量pi是,它是用imag(log(-1))建立的.

Inf表示无穷大.如果您想计算1/0

S=1/0

结果会是

Warning:

Dividebyzero

S=Inf

具有IEEE规则的机器,被零除后,并不引出出错条件或终止程序的运行,而产生一个警告信息和一个特殊值在计算方程中列出来.

变量NaN表示它是个不定值.由Inf/Inf或0/0运算产生.

要了解当前变量的信息请键入whos,屏幕将显示:

NameSizeBytesClass

A4x396doublearray

S1x18doublearray

ans1x18doublearray

x1x540doublearray

Grandtotalis19elementsusing152bytes

从size及bytes项目可以看出,每一个矩阵实元素需8个字节的内存.4×3的矩阵使用96个字节,全部变量的使用内存总数为152个字节.自由空间的大小决定了系统变量的多少,如计算机上有虚拟内存的话,其可定义的变量个数会大大增加.

§1.2.5数和算术表达式

Matlab中数的表示方法和一般的编程语言没有区别.如:

3-990.0001

9.639721.6021E-206.02252e23

在计算中使用IEEE浮点算法其舍入误差是eps.浮点数表示范围是10-308~10308.

数学运算符有:

+加

-减

*乘

/右除

\左除

^幂

这里1/4和4\1有相同的值都等于0.25(注意比较:

1\4=4).只有在矩阵的除法时左除和右除才有区别.

§1.2.6复数与矩阵

在Matlab中输入复数首先应该建立复数单位:

i=sqrt(-1)

及j=sqrt(-1)

之后复数可由下面语句给出:

Z=3+4i(注意:

在4与i之间不要留有任何空间!

输入复数矩阵有两个方便的方法,如:

A=[12;34]+i*[56;78]

和A=[1+5i2+6i;3+7i4+8i]

两式具有相等的结果.但当复数作为矩阵的元素输入时,不要留有任何空间,如1+5i,如在“+”号左右留有空格,就会被认为是两个分开的数.

不过实际使用复数时并没有这么麻烦,系统有一个名为startup.m的Matlab命令文件,建立复数单位的语句也放在其中.当Matlab启动时,此文件自动执行,i和j将自动建立.

§1.2.7输出格式

任何Matlab语句执行结果都可在屏幕上显示,同时赋给指定的变量,没有指定变量时赋给ans.数字显示格式可由format命令来控制(Windows系统下的Matlab系统的数字显示格式可以由Option菜单中的NumericalFormat菜单改变).format仅影响矩阵的显示,不影响矩阵的计算与存贮.(Matlab以双精度执行所有的运算)

首先,如果矩阵元素是整数则矩阵显示就没有小数,如x=[-101],结果为:

x=

-101

如果矩阵元素不是整数则输出形式有:

(用命令:

format格式进行切换)

格式

中文解释

说明

format

短格式

(缺省格式)

Default.SameasSHORT

formatshort

短格式

(缺省格式)

Scaledfixedpointformatwith5digits

(只显示五位十进制数)

formatlong

长格式

Scaledfixedpointformatwith15digits

formatshorte

短格式e方式

Floatingpointformatwith5digits

formatlonge

长格式e方式

Floatingpointformatwith15digits

formatshortg

短格式g方式

Bestoffixedorfloatingpointformatwith5digits

formatlongg

长格式g方式

Bestoffixedorfloatingpointformatwith15digits

formathex

16进制格式

Hexadecimalformat

format+

+格式

Thesymbols+,-andblankareprintedforpositive,negativeandzeroelements.Imaginarypartsareignored

formatbank

银行格式

Fixedformatfordollarsandcents

formatrat

有理数格式

Approximationbyratioofsmallintegers

formatcompact

压缩格式

Suppressextraline-feeds

formatloose

自由格式

Putstheextraline-feedsbackin

例如:

x=[4/31.2345e-6]

在不同的输出格式下的结果为:

短格式1.33330.0000

短格式e方式1.3333e+0001.234e-006

长格式1.3333333333333330.000001234500000

长格式e方式1.333333333333333e-0001.23450000000000e-006

有理数格式4/31/810045

16进制格式3ff55555555555553eb4b6231abfd271

+格式++

对于短格式,如果矩阵的最大元素比数999999999大,或者比数0.0001小,则在打印时,将加入一个普通的长度因数.如y=1.e20*x,意为x被1020乘,结果为:

y=

1.0e+020*

1.33330.0000

“+”格式是显示大矩阵的一种紧凑方法,“+”,“-”和空格显示正数、负数和零元素.

最后formatcompact命令压缩显示的矩阵,以允许更多的信息显示在屏幕上.

§1.2.8Help求助命令和联机帮助

Help求助命令很有用,它对Matlab大部分命令提供了联机求助信息.您可以从Help菜单中选择相应的菜单,打开求助信息窗口查询某条命令,也可以直接用help命令.

键入help

得到help列表文件,键入“help指定项目”,如:

键入helpeig

则提供特征值函数的使用信息.

键入help[

显示如何使用方括号等.

键入helphelp

显示如何利用help本身的功能.

还有,键入lookfor<关键字>:

可以从m文件的help中查找有关的关键字.

§1.2.9退出和存入工作空间

退出Matlab可键入quit或exit或选择相应的菜单.中止Matlab运行会引起工作空间中变量的丢失,因此在退出前,应键入save命令,保存工作空间中的变量以便以后使用.

键入save

则将所有变量作为文件存入磁盘Matlab.mat中,下次Matlab启动时,

键入load

将变量从Matlab.mat中重新调出.

save和load后边可以跟文件名或指定的变量名,如仅有save时,则只能存入Matlab.mat中.如savetemp命令,则将当前系统中的变量存入temp.mat中去,命令格式为:

savetempx仅仅存入x变量.

savetempXYZ则存入X、Y、Z变量.

loadtemp可重新从temp.mat文件中提出变量,load也可读ASCII数据文件.详细语法见联机帮助.

第二节 向量与矩阵运算

Matlab能处理数、向量和矩阵.但一个数事实上是一个1×1的矩阵,1个n维向量也不过是一个1×n或n×1的矩阵.从这个角度上来讲,Matlab处理的所有的数据都是矩阵.Matlab的矩阵处理能力是非常灵活、强大的.以下我们将从矩阵的产生、基本运算、矩阵函数等几个方面来说明.

§2.1向量及矩阵的生成

除了我们在上节介绍的直接列出矩阵元素的输入方法,矩阵还可以通过几种不同的方式输入到Matlab中.

§2.1.1通过语句和函数产生

1.向量的产生

除了直接列出向量元素(即所谓的“穷举法”)外,最常用的用来产生相同增量的向量的方法是利用“:

”算符(即所谓的“描述法”).在Matlab中,它是一个很重要的字符.如:

z=1:

5

z=

12345

即产生一个1~5的单位增量是1的行向量,此为默认情况.

用“:

”号也可以产生单位增量不等于1的行向量,语法是把增量放在起始量和结尾量的中间.如:

x=0:

pi/4:

pi

即产生一个由0~pi的行向量,单位增量是pi/4=3.1416/4=0.7854.

x=

00.78541.57082.35623.1416

也可以产生单位增量为负数的行向量.如:

y=6:

-1:

1

y=

654321

2.矩阵的产生

Matlab提供了一批产生矩阵的函数:

zeros

产生一个零矩阵

diag

产生一个对角矩阵

ones

生成全1矩阵

tril

取一个矩阵的下三角

eye

生成单位矩阵

triu

取一个矩阵的上三角

magic

生成魔术方阵

pascal

生成PASCAL矩阵

例如:

ones(3)

ans=

111

111

111

eye(3)

ans=

100

010

001

除了以上产生标准矩阵的函数外,Matlab还提供了产生随机(向量)矩阵的函数rand和randn,及产生均匀级数的函数linspace、产生对数级数的函数logspace和产生网格的函数meshgrid等等.详细使用请查阅随机文档.

“:

”冒号可以用来产生简易的表格,为了产生纵向表格形式,首先用冒号“:

”产生行向量,再进行转置,计算函数值的列,然后形成有二列的矩阵.例如命令:

x=(0.0:

0.2:

3.0)';

y=exp(-x).*sin(x);

[xy]

产生结果为:

ans=

00

0.20000.1627

0.40000.2610

0.60000.3099

0.80000.3223

1.00000.3096

1.20000.2807

1.40000.2430

1.60000.2018

1.80000.1610

2.00000.1231

2.20000.0896

2.40000.0613

2.60000.0383

2.80000.0204

3.00000.0070

§2.1.2通过后缀为.m的命令文件产生

如有文件data.m,其中包括正文:

A=[123

456

780]

则用data命令执行data.m,可以产生名为A的矩阵.

§2.2矩阵操作

在Matlab中可以对矩阵进行任意操作,包括改变它的形式,取出子矩阵,扩充矩阵,旋转矩阵等.其中最重要的操作符为“:

”,它的作用是取出选定的行与列.

例如:

A(:

:

)代表A的所有元素;试比较A(:

),将A按列的方向拉成长长的1列(向量);

A(:

J)代表A的第J列;

A(J:

K)代表A(J),A(J+1),…,A(K),如同A(:

)的第J到第K个元素;

A(:

J:

K)代表A(:

J),A(:

J+1),…,A(:

K),如此类推.

对矩阵可以进行各种各样的旋转、变形、扩充:

Matlab中有内部函数fliplr(Flipmatrixintheleft/rightdirection),它对矩阵进行左右旋转.

例x=123fliplr(x)为321

456654

同样有flipud:

x=14flipud(x)为36

2525

3614

矩阵的转置用符号“'”表示:

如A=[123;456;780]

那么:

计算B=A'

B=

147

258

360

符号“'”为矩阵的转置,如果Z为复矩阵,则Z'为它的复数共轭转置,非共轭转置使用Z.'或conj(Z')求得.

reshape改变矩阵的形状,这是什么意思呢?

可举一个例子来说明.

A=[A;[101112]]

A=

123

456

780

101112

则reshape(A,2,6)

ans=

172830

410511612

可见,reshape是将矩阵元素以列为单位进行重组,原来4×3的矩阵变为了2×6的矩阵.那么以下的语句也不难理解了,它将矩阵A按列打开(size函数返回矩阵A的行数与列数).

reshape(A,1,size(A,1)*size(A,2)),它等价于A(:

)'.

还有函数rot90,它可以将矩阵进行各种90度的旋转;tril及triu取出矩阵的下三角及上三角阵等.详细的用法可以在需要使用时查阅手册.

第三节 矩阵的基本运算

§3.1加和减

如矩阵A和B的维数相同,则A+B与A-B表示矩阵A与B的和与差.如果矩阵A和B的维数不匹配,Matlab会给出相应的错误提示信息.如:

A=B=

123147

456258

780360

C=A+B返回:

C=

2610

61014

10140

如果运算对象是个标量(即1×1矩阵),可和其它矩阵进行加减运算.例如:

x=-1y=x-1=-2

0-1

21

§3.2矩阵乘法

Matlab中的矩阵乘法有通常意义上的矩阵乘法,也有Kronecker乘法,以下分别介绍.

§3.2.1矩阵的普通乘法

矩阵乘法用“*”符号表示,当A矩阵列数与B矩阵的行数相等时,二者可以进行乘法运算,否则是错误的.计算方法和线性代数中所介绍的完全相同.

如:

A=[12;34];B=[56;78];C=A*B,

结果为

C=

×

=

=

即Matlab返回:

C=

1922

4350

如果A或B是标量,则A*B返回标量A(或B)乘上矩阵B(或A)的每一个元素所得的矩阵.

§3.2.2矩阵的Kronecker乘法

对n×m阶矩阵A和p×q阶矩阵B,A和B的Kronecher乘法运算可定义为:

由上面的式子可以看出,Kronecker乘积A

B表示矩阵A的所有元素与B之间的乘积组合而成的较大的矩阵,B

A则完全类似.A

B和B

A均为np×mq矩阵,但一般情况下A

B

B

A.和普通矩阵的乘法不同,Kronecker乘法并不要求两个被乘矩阵满足任何维数匹配方面的要求.Kronecker乘法的Matlab命令为C=kron(A,B),例如给定两个矩阵A和B:

A=

B=

则由以下命令可以求出A和B的Kronecker乘积C:

A=[12;34];B=[132;246];C=kron(A,B)

C=

132264

2464812

3964128

6121881624

作为比较,可以计算B和A的Kronecker乘积D,可以看出C、D是不同的:

A=[12;34];B=[132;246];D=kron(B,A)

D=

123624

3491268

2448612

6812161824

§3.3矩阵除法

在Matlab中有两种矩阵除法符号:

“\”即左除和“/”即右除.如果A矩阵是非奇异方阵,则A\B是A的逆矩阵乘B,即inv(A)*B;而B/A是B乘A的逆矩阵,即B*inv(A).具体计算时可不用逆矩阵而直接计算

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1