数学建模的MATLAB(1-6章)课件_第1页
数学建模的MATLAB(1-6章)课件_第2页
数学建模的MATLAB(1-6章)课件_第3页
数学建模的MATLAB(1-6章)课件_第4页
数学建模的MATLAB(1-6章)课件_第5页
已阅读5页,还剩275页未读 继续免费阅读

下载本文档

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

文档简介

开始Matlab基础及其应用学软件应结束数用11/9/20221Matlab基础及其应用目录

§第六章

Matlab空间作图§第二章

Matlab语言基础

§第三章Matlab数值运算

§第四章Matlab符号运算

§第五章

Matlab平面作图§第一章

Matlab软件介绍11/9/20222第一章Matlab简介1.3

Matlab集成环境1.1

Matlab概述1.2

Matlab的运行环境与安装1.4

Matlab帮助系统11/9/20223

1984年,Matlab第1版(DOS版)1992年,Matlab4.0版

1994年,Matlab4.2版

1997年,Matlab5.0版

1999年,Matlab5.3版

2000年,Matlab6.0版

2001年,Matlab6.1版

2002年,Matlab6.5版

2004年,Matlab7.0版1.1.2Matlab的发展历史11/9/20225(1)Matlab数值计算和符号计算功能

Matlab以矩阵作为数据操作的基本单位,还提供了十分丰富的数值计算函数。

Matlab和著名的符号计算语言Maple相结合,使得Matlab具有符号计算功能。(2)Matlab的绘图功能

Matlab提供了两个层次的绘图操作:一种是对图形句柄进行的低层绘图操作,另一种是建立在低层绘图操作之上的高层绘图操作。(3)Matlab的编程语言

Matlab具有程序结构控制、函数调用、数据结构、输入输出、面向对象等程序语言特征,而且简单易学、编程效率高。1.1.3Matlab的主要功能11/9/202261.1.3Matlab的主要功能(4)Matlab的工具箱

Matlab中包括了被称作工具箱(TOOLBOX)的各类应用问题的求解工具。它可用来求解各类学科的问题,包括信号处理、图象处理、控制系统辨识、神经网络等。随着Matlab版本的不断升级,其所含的工具箱的功能也越来越丰富。11/9/202271.1.4Matlab操作示例例1-1在同一坐标系中绘出正弦曲线y=sinx和余弦曲线y=cosx在[0,2*Pi]上的图形.

x=[0:1/180:2*pi];%输入自变量x的行矩阵f1=sin(x);%输出因变量f1的行矩阵f2=cos(x);%输出因变量f2的行矩阵

plot(x,f1,x,f2);%调用绘图命令一次画出两条曲线.例1-2求方程3x4+7x3+9x2-23=0的全部根:

p=[3,7,9,0,-23];%建立多项式系数向量

x=roots(p)%调用求根命令求出方程的根.11/9/20228

1.2Matlab的运行环境与安装硬件环境:(1)CPU奔腾Ⅲ以上(2)内存1G以上(3)硬盘40G以上(4)CD-ROM驱动器和鼠标。软件环境:

(1)WindowsXP

(2)其他软件根据需要选用1.2.1Matlab的运行环境11/9/2022101.Matlab系统的启动与一般的Windows程序一样,启动Matlab系统有3种常见方法:

(1)使用Windows“开始”菜单,找到Matlab.exe图标,然后双击。

(2)运行Matlab系统启动程序matlab.exe。

(3)利用桌面快捷方式。1.3.1启动与退出Matlab集成环境11/9/202212

从默认界面中可切换出左边两个主要窗口如下图所示。1.3.1启动与退出Matlab集成环境11/9/202214

Matlab6.5的集成环境包括Matlab主窗口、命令窗口(CommandWindow)、工作空间窗口(Workspace)、命令历史窗口(CommandHistory)、当前目录窗口(CurrentDirectory)和启动平台窗口(LaunchPad)。1.3.1启动与退出Matlab集成环境工作空间命令历史命令窗口11/9/202215命令窗口(CommandWindow)工作空间(Workspace)命令历史(CommandHistory)当前目录(CurrentDirectory)主窗口

11/9/202216

2.Matlab系统的退出

要退出Matlab系统,也有3种常见方法:

(1)在Matlab主窗口File菜单中选择ExitMatlab命令。

(2)在Matlab命令窗口输入Exit或Quit命令。

(3)单击Matlab主窗口的“关闭”按钮。1.3.1启动与退出Matlab集成环境11/9/202217Matlab主窗口是Matlab的主要工作界面。主窗口除了嵌入一些子窗口外,还主要包括菜单栏和工具栏。1.菜单栏

在Matlab6.5主窗口的菜单栏,共包含File、Edit、View、Web、Window和Help6个菜单项。(1)File菜单项:File菜单项实现有关文件的操作。(2)Edit菜单项:Edit菜单项用于命令窗口的编辑操作。(3)View菜单项:View菜单项用于设置Matlab集成环境的显示方式。(4)Desktop菜单项:在MATLAB中,Desktop主菜单用于设置工作空间和工具栏等的显示项。单击Desktop主菜单或按下快捷键Alt+D,可以弹出Desktop下拉菜单。(5)Window菜单项:主窗口菜单栏上的Window菜单,只包含一个子菜单Closeall,用于关闭所有打开的编辑器窗口,包括M-file、Figure、Model和GUI窗口。(6)Help菜单项:Help菜单项用于提供帮助信息。1.3.2主窗口及子窗口11/9/202218在通常的编程中,一个行只输入一条独立的命令,命令行以回车结束。但一行也可以输入若干条命令,但各命令之间必须以逗号分隔,互相独立的命令也可用分号分隔。例如

p=15,m=35,n=20

p=15;m=35;n=20在编程中,逗号表示换列,相当于一个空格;分号表示换行,分号与回车的作用都是换行.如果一个命令行很长,一个物理行之内写不下,可以在第一个物理行之后加上3个小黑点“…”并按下回车键,然后接着下一个物理行继续写命令的其他部分。3个小黑点称为续行符,即把后面的物理行看作该行的逻辑继续。在Matlab里,有很多的控制键和方向键可用于命令行的编辑。1.3.3Matlab编程输入法11/9/202220工作空间是Matlab用于存储各种变量和结果的内存空间。在该窗口中显示工作空间中所有变量的名称、大小、字节数和变量类型说明,可对变量进行观察、编辑、保存和删除。如果想要把工作空间中的变量及其数据存成文件,只需键入命令:Savefilename.mat

variblename不写变量名将会把工作空间中全部数据保存到你所给的文件内.1.3.4工作空间窗口11/9/202221

2.Matlab的搜索路径当用户在Matlab命令窗口输入一条命令后,Matlab按照一定次序寻找相关的文件。基本的搜索过程是:(1)检查该命令是不是一个变量。(2)检查该命令是不是一个内部函数。(3)检查该命令是否当前目录下的M文件。(4)检查该命令是否Matlab搜索路径中其他目录下的M文件。1.3.5当前目录窗口和搜索路径11/9/202223用户可以将自己的工作目录列入Matlab搜索路径,从而将用户目录纳入Matlab系统统一管理。设置搜索路径的方法有:

(1)用path命令设置搜索路径。例如,将用户目录c:\mydir加到搜索路径下,可在命令窗口输入命令:path(path,’c:\mydir’)(2)用对话框设置搜索路径

在Matlab的File菜单中选SetPath命令或在命令窗口执行pathtool命令,将出现搜索路径设置对话框。通过AddFolder或AddwithSubfolder命令按钮将指定路径添加到搜索路径列表中。

在修改完搜索路径后,则需要保存搜索路径。1.3.5当前目录窗口和搜索路径11/9/202224

Matlab7.0的启动平台窗口可以帮助用户方便地打开和调用Matlab的各种程序、函数和帮助文件。

Matlab7.0主窗口左下角还有一个Start按钮,单击该按钮会弹出一个菜单,选择其中的命令可以执行Matlab产品的各种工具,并且可以查阅Matlab包含的各种资源。1.3.7启动平台窗口和Start按钮11/9/202226

1.4Matlab帮助系统进入帮助窗口可以通过以下3种方法:

(1)单击Matlab主窗口工具栏中的Help按钮。

(2)在命令窗口中输入helpwin、helpdesk或doc。

(3)选择Help菜单中的“MatlabHelp”选项。1.4.1帮助窗口1.4.2帮助命令

Matlab帮助命令包括help、lookfor以及模糊查询1.help命令

在Matlab7.0命令窗口中直接输入help命令将会显示当前帮助系统中所包含的所有项目,即搜索路径中所有的目录名称。同样,可以通过help加函数名来显示该函数的帮助说明。11/9/2022272.lookfor命令

help命令只搜索出那些关键字完全匹配的结果,lookfor命令对搜索范围内的M文件进行关键字搜索,条件比较宽松。lookfor命令只对M文件的第一行进行关键字搜索。若在lookfor命令加上-all选项,则可对M文件进行全文搜索。3.模糊查询

Matlab6.0以上的版本提供了一种类似模糊查询的命令查询方法,用户只需要输入命令的前几个字母,然后按Tab键,系统就会列出所有以这几个字母开头的命令。1.4.2帮助命令11/9/202228第二章 Matlab语言基础2.1

Matlab的工作环境2.2

Matlab的变量及其命名规则2.3

Matlab矩阵命令及其变换2.4

Matlab常用数学函数2.5

Matlab矩阵的运算与分解2.6

Matlab的逻辑运算、条件语句与循环控制语句11/9/202230

在MATLAB命令窗口下进行基本数学运算,只需将运算式直接打入提示号>>之後,并按入Enter键即可。例如在命令窗口中键入:

(10*19+2/4-34)/2*3

,回车后可得:

ans=234.7500MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案,并显示其数值屏幕上。如果在上述的例子结尾加上分号”;”,则计算结果不会显示在指令视窗上,要得知计算值只须键入该变数值即可.2.1.1Matlab的命令窗口计算输入2.1Matlab的工作环境11/9/202231

MATLAB可以将计算结果以不同的精确度的数字格式显示,我们可以在指令视窗上的功能选单上的Options下选NumericalFormat,或者直接在指令视窗键入以下的各个数字显示格式的指令。

formatshort(这是默认的)MATLAB利用了↑↓二个游标键可以将所下过的指令叫回来重覆使用。按下↑则前一次指令重新出现,之后再按Enter键,即再执行前一次的指令。而↓键的功用则是往后执行指令。其它在键盘上的几个键如→←,Delete,Insert,其功能则显而易见,试用即知,无须多加说明。当要暂时执行作业系统(例如Dos)的指令而还要执行MATLAB,可以利用!加上原作业系统的指令,例如!dir,!formata:。2.1.2Matlab的数字格式11/9/202232

Ctrl-C(即同时按Ctrl及C二个键)可以用来中止执行中的MATLAB的工作。有三种方法可以结束MATLAB1.exit

2.quit

3.直接关闭MATLAB的命令视窗(Commandwindow)2.1.3Matlab的退出11/9/2022331.

变量名的大小写是敏感。2.

变量的第一个字符必须为英文字母,而且不能超过31个字符。3.

变量名可以包含下连字符、数字,但不能为空格符、标点。4.为读取方便,变量名尽量采用首写字母为大写的英文单词,避免和库函数名冲突.2.2.1变量2.2Matlab的变量及其命名规则11/9/202234ans

预设的计算结果的变量名eps

正极小值esp=2.2204e-16pi内建的π值inf或∞值

无限大NaN

无法定义一个数目(1/0)i或j虚数单位i=j=sqrt(-1)nargin

函数输入参数个数nargout

函数输出参数个数realmax

最大的正实数realmin

最小的正实数flops浮点运算次数2.2.2预定义的变量11/9/2022352.3Matlab矩阵命令及其变换MATLAB书写表达式的规则与“手写算式”差不多相同。如果一个指令过长可以在结尾加上...(代表此行指令与下一行连续),例如键入3*...6%求3与6的乘积运行可得结果ans=182.3.1Matlab的赋值语句表达式11/9/2022362.3.2矩阵(数组)的创建格式格式一:手工输入3行4列矩阵;A=[1,2,3,4;-1,5,3,6;2,0,3,7];格式二:给定步长自动生成行矩阵;B=1:0.1:2;%行矩阵也叫数组格式三:用随机命令自动生成m×n矩阵;C=rand(m,n);格式四:调用等距插值命令生成行矩阵;D=linspace(a,b,n);11/9/202237

1.全零矩阵的生成:A=zeros(m,n) 2.全1矩阵的生成:B=ones(m,n); 3.单位矩阵的生成:C=eye(n); 4.对角矩阵的生成:D=diag([1,2,3,4]); 5.hilbert矩阵的生成:E=hilb(n) 6.魔方矩阵的生成:F=magic(n);2.3.3特殊矩阵的表示与简单运算11/9/202238矩阵的基本运算法则运算符名称格式法则说明+加A+B对应元素相加-减A-B对应元素相减*乘A*B按矩阵乘法定义相乘/右除A/B方程XB=A的解A*inv(B)\左除B\A方程BX=A的解inv(B)*A^乘幂A^B其中一个为标量是有意义2.3.3特殊矩阵的表示与简单运算11/9/202239数组的基本运算法则运算符名称示例法则说明+加A+B对应元素相加-减A-B对应元素相减.*乘A.*B对应元相乘./右除A./B对应元素相除.\左除B.\A对应元素相除.^乘幂A.^B对应元素求幂2.3.3特殊矩阵的表示与简单运算11/9/202240Matlab矩阵变换操作示例(一)clearA=rand(5)%生成一个5阶随机矩阵;A1=A(1:3,2:4);%取出A中由1,2,3行,2,3,4列构成的子矩阵A2=A([5,4,3,2,1],:);%对A中的行重新排序;A([1,2,3],:)=[];%删除A的1,2,3行;A(:,[1,5])=[];

%删除A的1,5列;A([1,2,3],:)=A([2,3,1],:);%置换A的1,2,3行;A3=A(:);%逐列排序把A拉成一个列向量;A(:)=B;%把B中的元素按列依次赋给A;

注:要求A与B的元素一样多,但行数可以不相等;2.3.3特殊矩阵的表示与简单运算11/9/202241Matlab矩阵变换操作示例(二)1.把矩阵A的第i行的s倍加到第j行:

A(j,:)=A(j,:)+A(i,:)*s;2.交换A的第i列与第j列:

A(:,[i,j])=A(:,[j,i]);3.元素重排:按列元次序把m*n个元素的矩阵排成n×m矩阵:B=reshape(A,n,m)2.3.3特殊矩阵的表示与简单运算11/9/202242第三章 Matlab数值计算3.5

多项式运算3.6

插值与拟合3.4

随机函数rand和randn3.1

Matlab常用数学函数3.2

Matlab矩阵的运算与分解3.3

Matlab的逻辑运算、条件语句与循环控制语句3.7

数值积分3.8

常微分方程数值解11/9/2022433.1MATLAB常用数学函数符号名称符号名称sin(x)正弦asin(x)反正弦cos(x)余弦acos(x)反余弦tan(x)正切atan(x)反正切cot(x)余切acot(x)反余切sec(x)正割asec(x)反正割csc(x)余割acsc(x)反余割3.1.1三角函数注:只要给x赋予实值或复值,运行可输出函数值,例:sin(pi/3),cos(5),但X一般取复数矩阵.11/9/202244符号名称符号名称sinh(x)双曲正弦asinh(x)反双曲正弦cosh(x)双曲余弦acosh(x)反双曲余弦tanh(x)双曲正切atanh(x)反双曲正切coth(x)双曲余切acoth(x)反双曲余切sech(x)双曲正割asech(x)反双曲正割csch(x)双曲余割acsch(x)反双曲余割3.1.2双曲函数注:只要给x赋予实值,运行可输出函数值例:tanh(-2),asech(-3),但X通常取矩阵.11/9/202245功能正弦函数与双曲正弦函数格式Y=sin(X)%计算参量X(可以是向量、矩阵,元素可以是复数)中每一个角度分量的正弦值Y,所有分量的角度单位为弧度。Y=sinh(X)%计算参量X的双曲正弦值Y。3.1.3.1三角函数与双曲函数的操作函数sin、sinh11/9/202246几点补充说明(1)sin(pi)并不是零,而是与浮点精度有关的无穷小量eps,因为pi仅仅是精确值π浮点近似的表示值而已;(2)对于复数Z=x+iy,函数的定义为:sin(x+iy)=sin(x)*cos(y)+i*cos(x)*sin(y);,;11/9/202247例2-1

x=-pi:0.01:pi;plot(x,sin(x))x=-5:0.01:5;plot(x,sinh(x))图形结果为图2-1。

正弦函数与双曲正弦函数的图象3.1.3.1三角函数与双曲函数的操作11/9/202248函数asin、asinh功能反正弦函数与反双曲正弦函数格式Y=asin(X)%返回参量X(可以是向量、矩阵)中每一个元素的反正弦函数值Y。若X中有的分量处于[-1,1]之间,则Y=asin(X)对应的分量处于[-π/2,π/2]之间,若X中有分量在区间[-1,1]之外,则Y=asin(X)对应的分量为复数。Y=asinh(X)%返回参量X中每一个元素的反双曲正弦函数值Y3.1.3.1三角函数与双曲函数的操作11/9/202249

反正弦函数与反双曲正弦函数的定义为:

反正弦函数与反双曲正弦函数的图象例2-2

x=-1:.01:1;plot(x,asin(x))x=-5:.01:5;plot(x,asinh(x))图形结果为图2-2。11/9/202250函数cos、cosh功能余弦函数与双曲余弦函数格式Y=cos(X)%计算参量X(可以是向量、矩阵,元素可以是复数)中每一个角度分量的余弦值Y,所有角度分量的单位为弧度。我们要指出的是,cos(pi/2)并不是精确的零,而是与浮点精度有关的无穷小量eps,因为pi仅仅是精确值π浮点近似的表示值而已。Y=sinh(X)%计算参量X的双曲余弦值Y3.1.3.1三角函数与双曲函数的操作11/9/202251

若X为复数z=x+iy,则函数定义为:cos(x+iy)=cos(x)*cos(y)+i*sin(x)*sin(y),

例2-3x=-pi:0.01:pi;plot(x,cos(x))x=-5:0.01:5;plot(x,cosh(x))图形结果为图2-3。余弦函数与双曲余弦函数图11/9/202252函数acos、acosh功能反余弦函数与反双曲余弦函数格式Y=acos(X)%返回参量X(可以是向量、矩阵)中每一个元素的反余弦函数值Y。若X中有的分量处于[-1,1]之间,则Y=acos(X)对应的分量处于[0,π]之间,若X中有分量在区间[-1,1]之外,则Y=acos(X)对应的分量为复数。Y=asinh(X)%返回参量X中每一个元素的反双曲余弦函数Y3.1.3.1三角函数与双曲函数的操作11/9/202253

反余弦函数与反双曲余弦函数定义为:例2-4x=-1:.01:1;plot(x,acos(x))x=-5:.01:5;plot(x,acosh(x))图形结果为图2-4。反余弦函数与反双曲余弦函数11/9/2022543.1.4指数函数、对数函数及复函数名称exp(x)log(x)log10(x)abs(x)含义e为底的指数函数e为底的对数函数10为底的对数函数X的模名称angle(x)real(x)imag(x)conj(x)含义X的幅角X的实部X的虚部X的共轭例:exp(-2-5i),abs(3+4i),imag(1+2i)conj(-1+8i),log(-1+3i);11/9/2022553.1.4.1指数函数exp(x)功能以e为底数的指数函数格式Y=exp(X)%对参量X的每一分量,求以e为底数的指数函数Y。X中的分量可以为复数。对于复数分量如,z=x+iy,则相应地计算式为:

ez=ex*(cos(y)+i*sin(y))。例2-5A=[-1.9,-0.2,3.1415926,5.6,7.0,2.4+3.6i];Y=exp(A)计算结果为:

Y=1.0e+003*Columns1through40.00010.00080.02310.2704Columns5through61.0966-0.0099-0.0049i11/9/202256对数函数log(x)的命令应用功能自然对数,即以e为底数的对数。格式Y=log(X)%对参量X中的每一个元素计算自然对数。其中X中的元素可以是复数与负数,但由此可能得到意想不到的结果。若z=x+i*y,则log对复数的计算如下:log(z)=log(abs(z))+i*atan2(y,x)例2-6下面的语句可以得到无理数π的近似值:

Pi=abs(log(-1))计算结果为:

Pi=3.14163.1.4.2对数函数log(x)11/9/202257以10为底的对数函数log10(A)功能常用对数,即以10为底数的对数。格式Y=log10(X)%计算X中的每一个元素的常用对数,若X中出现复数,则可能得到意想不到的结果。例2-7L1=log10(realmax)%由此可得特殊变量realmax的近似值L2=log10(eps)%由此可得特殊变量eps的近似值M=magic(4);L3=log10(M)计算结果为:L1=308.2547L2=-15.6536L3=1.20410.30100.47711.11390.69901.04141.00000.90310.95420.84510.77821.07920.60211.14611.1761011/9/202258复数的求模函数abs(X)功能数值的绝对值与复数的模格式Y=abs(X)%返回矩阵X的每一个元素的绝对值;若X为复数矩阵,则返回每一元素的模:abs(X)=sqrt(real(X).^2+imag(X).^2)。例2-8A=[-1.9,-0.2,3.1415926,5.6,7.0,2.4+3.6i];Y=abs(A)计算结果为:Y=1.90000.20003.14165.60007.00004.32673.1.4.2对数函数log(x)11/9/202259复数的共轭函数conj(Z)功能复数的共轭值格式ZC=conj(Z)%返回参量Z的每一个分量的共轭复数:conj(Z)=real(Z)-i*imag(Z)函数imag功能复数的虚数部分格式Y=imag(Z)%返回输入参量Z的每一个分量的虚数部分。例2-9imag(2+3i)计算结果为:ans=33.1.4.2复变函数11/9/202260复数的虚部函数imag(Z)功能复数的虚数部分格式Y=imag(Z)%返回输入参量Z的每一个分量的虚数部分。例2-10imag(2+3i)计算结果为:ans=3函数real功能复数的实数部分。格式Y=real(Z)%返回输入参量Z的每一个分量的实数部分。例2-11real(2+3i)计算结果为:ans=23.1.4.2复变函数11/9/202261复数的幅角函数angle(Z)功能复数的相角格式P=angle(Z)%返回输入参量Z的每一复数元素的、单位为弧度的相角,其值在区间[-π,π]上。说明angle(z)=imag(log(z))=atan2(imag(z),real(z))例2-12Z=[1-i,2+i,3-i,4+i;1+2i,2-2i,3+2i,4-2i;1-3i,2+3i,3-3i,4+3i];Angle(Z)=-0.78540.4636-0.32180.24501.1071-0.78540.5880-0.4636-1.24900.9828-0.78540.64353.1.4.2复变函数11/9/202262生成复函数complex功能用实数与虚数部分创建复数格式c=complex(a,b)%用两个实数a,b创建复数c=a+bi。输出参量c与a、b同型(同为向量、矩阵、或多维阵列)。该命令比下列形式的复数输入更有用:a+i*b或a+j*b因为i和j可能被用做其他的变量(不等于sqrt(-1)),或者a和b不是双精度的。c=complex(a)%输入参量a作为输出复数c的实部,其虚部为0:c=a+0*i。例2-13a=uint8([1;2;3;4]);%非符号8-bit整数型数据b=uint8([4;3;2;1]);c=complex(a,b)计算结果为:c=1.0000+4.0000i2.0000+3.0000i3.0000+2.0000i4.0000+1.0000i11/9/2022633.1.4.3

Matlab的圆整函数和求余函数

名称含义名称含义ceil(x)向正无穷大圆整mod(x,y)除模取余floor(x)向负无穷大圆整rem(x,y)求余数round(x)向靠近整数圆整sign(x)符号函数fix(x)向零圆整sqrt(x)平方根函数例:floor(2.6)=2,ceil(-3.5)=3mod(7,3)=111/9/202264功能朝零方向取整格式B=fix(A)%对A的每一个元素朝零的方向取整数部分,返回与A同维的数组。对于复数参量A,则返回一复数,其分量的实数与虚数部分分别取原复数的、朝零方向的整数部分。例2-14A=[-1.9,-0.2,3.1415926,5.6,7.0,2.4+3.6i];B=fix(A)计算结果为:B=Columns1through4-1.000003.00005.0000Columns5through67.00002.0000+3.03.1.4.4圆整函数fix11/9/2022653.1.4.5圆整函数round功能朝最近的方向取整。格式Y=round(X)%对X的每一个元素朝最近的方向取整数部分,返回与X同维的数组。对于复数参量X,则返回一复数,其分量的实数与虚数部分分别取原复数的、朝最近方向的整数部分。例2-15A=[-1.9,-0.2,3.1415926,5.6,7.0,2.4+3.6i];Y=round(A)计算结果为:Y=Columns1through4-2.000003.00006.0000Columns5through67.00002.0000+4.0000i11/9/2022663.1.4.6圆整函数floor

功能朝负无穷大方向取整格式B=floor(A)%对A的每一个元素朝负无穷大的方向取整数部分,返回与A同维的数组。对于复数参量A,则返回一复数,其分量的实数与虚数部分分别取原复数的、朝负无穷大方向的整数部分。例2-16A=[-1.9,-0.2,3.1415926,5.6,7.0,2.4+3.6i];F=floor(A)计算结果为:F=Columns1through4-2.0000-1.00003.00005.0000Columns5through67.00002.0000+3.0000i11/9/2022673.1.4.7圆整函数ceil功能朝正无穷大方向取整格式B=floor(A)%对A的每一个元素朝正无穷大的方向取整数部分,返回与A同维的数组。对于复数参量A,则返回一复数,其分量的实数与虚数部分分别取原复数的、朝正无穷大方向的整数部分。例2-17A=[-1.9,-0.2,3.1415926,5.6,7.0,2.4+3.6i];B=ceil(A)计算结果为:B=Columns1through4-1.000004.00006.0000Columns5through67.00003.0000+4.0000i11/9/2022683.1.4.7

取余数函数rem功能求作除法后的剩余数(正负均可)格式R=rem(X,Y)%返回结果:X-fix(X./Y).*Y其中X、Y应为整数。若X、Y为浮点数,由于计算机对浮点数的表示的不精确性,则结果将可能是不可意料的。fix(X./Y)为商数X./Y朝零方向取的整数部分。若X与Y为同符号的,则rem(X,Y)返回的结果与mod(X,Y)相同,不然,若X为负数,则rem(X,Y)=mod(X,Y)-Y。该命令返回的结果在区间

[sign(X)*abs(Y),0],若Y中有零分量,则相应地返回NaN。11/9/202269功能模数(带符号的除法余数)用法M=mod(X,Y)%输入参量X、Y应为整数,此时返回余数X-Y.*floor(X./Y),其结果总是正数或零;若运算数x与y有相同的符号,则mod(X,Y)等于rem(X,Y)。总之,对于整数x,y,有:mod(-x,y)=rem(-x,y)+y。若输入为实数或复数,由于浮点数在计算机上的不精确表示,该操作将导致不可预测的结果。例2-18M1=mod(13,5)M2=mod([1:5],3)计算结果为:M1=3M2=120123.1.4.8取余函数mod11/9/2022703.1.4.9组合函数nchoosek功能二项式系数或所有的组合数。该命令只有对n<15时有用。

(1)函数C=nchoosek(n,k)%参量n,k为非负整数时,返回一次从n个物体中取出k个的组合数:

(2)函数C=nchoosek(v,k)%参量v为n维向量,返回一矩阵,其行向量的分量为一次性从v个物体中取k个物体的组合构成的矩阵。矩阵

C包含n!/((n-k)!k!)行与k列。例2-19C=nchoosek(2:2:10,4)%5个元素中随机取4个的组合矩阵计算结果为:C=24682461024810268104681011/9/2022713.1.4.10按升序重新排序函数sort功能把输入参量中的元素按从小到大的方向重新排列格式B=sort(A)%沿着输入参量A的不同维的方向、从小到大重新排列A中的元素。A可以是字符串的、实数的、复数的单元数组。对于A中完全相同的元素,则按它们在A中的先后位置排列在一块;若A为复数的,则按元素幅值的从小到大排列,若有幅值相同的复数元素,则再按它们在区间[-π,π]的幅角从小到大排列;若A中有元素为NaN,则将它们排到最后。若A为向量,则返回从小到大的向量,若A为二维矩阵,则按列的方向进行排列;若A为多维数组,sort(A)把沿着第一非单元集的元素象向量一样进行处理。B=sort(A,dim)%沿着矩阵A(向量的、矩阵的或多维的)中指定维数dim方向重新排列A中的元素。[B,INDEX]=sort(A,…)%输出参量B的结果如同上面的情形,输出INDEX是一等于size(A)的数组,它的每一列是与A中列向量的元素相对应的置换向量。若A中有重复出现的相同的值,则返回保存原来相对位置的索引。11/9/202272例2-20A=[-1.9,-2,3.1415926,5.6,7.0,2.4+3.6i];[B1,INDEX]=sort(A)M=magic(4);B2=sort(M)%逐列从小到大给出排序计算结果为:B1=Columns1through4-0.2000-1.90003.14162.4000+3.6000iColumns5through65.60007.0000INDEX=213645B2=42315768911101211/9/202273(1).方阵的行列式:det(A)(2).方阵的逆: inv(A)(3).矩阵的迹: trace(A)(4).矩阵的秩:rank(A)(5).矩阵和向量的范数:norm(A);%欧几里德范数;

norm(x,inf);%无穷范数(6)向量p的最大元素:max(p);(7)矩阵A的最大元素:max(max(A));3.2.1矩阵的运算命令3.2矩阵的运算与分解11/9/202274(1)LU分解: [L,U]=lu(X)%满足LU=X U为上三角阵,L为下三角阵或其变换形式;(2)QR分解: [Q,R]=qr(A)

求得正交矩阵Q和上三角阵R,Q和R满足:QR=A;(3)特征值分解 [V,D]=eig(A)

计算A的特征值对角阵D和特征向量V,使AV=VD成立;(4)SVD分解:[U,S,V]=svd(A)

在分解式A=U*S*V中,S是一个对角矩阵 ;3.2.2

矩阵分解11/9/202275设A=[3214;2557;1559;4791];求下列各式的结果;A1=sqrt(A);%对矩阵A各元素开方A2=det(A);

%求A的行列式A3=inv(A);%求A的逆矩阵a1=trace(A);%求A的迹[V,D]=eig(A);

%求A的特征向量与特征根;a2=norm(A);%求A的正规范数a3=norm(A(:));%求A拉成一列时的范数矩阵运算练习11/9/2022763.2.3矩阵的分解练习clearA=rand(5)

%产生5阶随机矩阵A[U,S,V]=svd(A);

%对A做奇异值分解A8=U*U’;

%验证U为正交矩阵A9=V*V’;

%验证V为正交矩阵[L,U]=lu(A);%对A作LU分解[Q,R]=qr(A);

%对A作QR分解B1=Q*Q’;

%验证U为正交矩阵A10=hilb(6);%生成6阶HILB矩阵[V,D]=eig(A10);%求A10特征向量与根B2=V*V’;%验证V是否是正交矩阵11/9/202277

1.逻辑判断符 >=,<=,>,<,==,~= 2.逻辑运算符:&,|,~

3.条件语句

(1)if-else条件语句命令格式:if条件1

执行命令1;2;…;n;%主体语句

else

执行命令n+1end

%结束

3.3逻辑运算、条件语句与循环控制语句11/9/202278语句格式:if条件1%给出条件1命令1;%执行命令1elseif条件2%给出条件1命令2;%执行命令2………………..

elseif条件n-1%给出条件1命令n-1;%执行命令n-1else%其余条件不写出;命令n;%执行命令n;end%结束(2)if-elseif条件语句11/9/2022793.3.1条件语句应用示例(一)例2-22设A=[cos(100),cos(200),cos(300),cos(400),cos(500)],把A中的正数和负数分别放入两个矩阵中,并记录原来的位置.

解执行右边程序可得::B1=0.86230.48721.00002.0000B2=-0.0221-0.5253-0.88383.00004.00005.0000clearn=length(A)%求出A的长度t1=0;t2=0;fork=1:nifA(k)>0t1=t1+1;B1(1,t1)=A(k);B1(2,t1)=k;elset2=t2+1;B2(1,t2)=A(k);B2(2,t2)=k;endenddisp(‘A中的正数及位置是’),B1disp(‘A中的负数及位置是’),B211/9/202280语句格式:switchcase%定义case为整数变量case1结论1%变量取值case1时case2结论2%变量取值case2时case3结论3%变量取值case3时……….………….caseN

结论N%变量取值caseN时end%语句结束(3)switch-case语句11/9/2022814.循环语句 ①for语句命令格式:fork=n1:d:n2%以d为步长;g(k+1)=f(k);%循环主体,;end%结束符; ②while语句命令格式:whilef(x,n)<Sg(k+1)=f(k);%循环主体;end%结束符;5.Matlab编程技巧①调试程序 ②输入输出参数

nargin、nargout11/9/2022823.3.2循环控制语句for-end应用示例(一)%求调和级数前100项之和SS=0;%初始化赋值;fork=1:100S=S+1/k;%循环主体语句;enddisp(‘调和级数前100项之和S等于’),S运行结果输出:

调和级数前100项之和S等于S=5.187411/9/2022833.3.3循环控制语句for-end应用示例(二)clear%求100之内的全部素数B(1:4)=[2,3,5,7];s=4;%先给出s个素数;C=1;fork=10:100forj=1:sA(j)=mod(k,B(j));%求出k除以素数B(j)的余数;C=C*A(j);%求出前j个余数的乘积;endifC~=0s=s+1;B(s)=k;%将此数添加到素数表列中;endenddisp(‘100之内的全部是‘),B%输出所求素数11/9/2022843.3.4循环控制语句for-end应用(三)%按给定公式生成一个10行10列的下三角矩阵clearA=zeros(10);%初始化AA(1:10,1)=1;A(1,2:10)=0;fork1=2:10fork2=2:k1A(k1,k2)=...A(k1-1,k2)+A(k1-1,k2-1);endenddisp(’按公式计算结果生成的矩阵是’),A运行左边的程序后输出结果为:按公式计算结果生成的矩阵是A=

1000000000110000000012100000001331000000146410000015101051000016152015610001721353521710018285670562881019368412612684369111/9/2022853.3.5用循环控制语句for-end应用(四)%双对角形矩阵的生成clearfork1=1:7fork2=1:7ifk2+k1==8|k2==k1A(k1,k2)=1;elseA(k1,k2)=0;endendenddisp(‘生成的双对角形矩阵是’),A执行左边程序输出结果:A=11/9/202286%三对角矩阵的生成clearm=8;n=8;fork1=1:mfork2=1:nifk1==k2A(k1,k2)=1;elseifk2==k1+1A(k1,k2)=3;elseifk2==k1-1A(k1,k2)=2;elseA(k1,k2)=0;endendenddisp(‘所生成的三对角矩阵是’),A3.3.6循环控制语句for-end应用(五)11/9/2022873.3.7循环控制语句for-end应用(六)排序函数Sort的程序设计思路%对下列行矩阵A中的元素从小到大进行排序并记取原来的位置;A=[-1.9,-2,pi,5.6,7.0,2.4+3.6i];%由于矩阵中有虚数,故应分两步走.%(1)先把全部元素化为实数,其程序如右边所示clearA=[-1.9,-2,pi,5.6,7.0,2.4+3.6i];n=length(A);%求A的长度fork1=1:nifimag(A(k1))==0A1(k1)=A(k1);elseA1(k1)=abs(A(k1));endendA1%输出实数化结果;11/9/2022883.3.8循环控制语句for-end应用(七)%(2)第二步,(续前页)对A1中的元素进行排序,并记取它们各自原来的位置;N=max(A1)+100;fort=1:na=N;%初始化fork=1:nifA1(k)<aa=A1(k);c=k;endend

S(t)=a;D(t)=c;A1(c)=inf;endA0=A1;disp('从小到大排序后的序列是'),S,disp('排序后的序列中各元素的原位置是'),D11/9/2022893.4随机函数rand与randn功能生成元素均匀分布于(0,1)上的数值与阵列用法Y=rand(n)%返回n*n阶的方阵Y,其元素均匀分布于区间(0,1)。若n不是一标量,则显示一出错信息。Y=rand(m,n)、Y=rand([mn])

%返回阶数为m*n的,元素均匀分布于区间(0,1)上矩阵Y。Y=rand(m,n,p,…)、Y=rand([mnp…])%生成阶数m*n*p*…的元素服从均匀分布的多维随机阵列Y。3.4.1随机函数rand11/9/202290计算结果可能为:R1=0.66550.05630.26560.53710.67970.32780.44020.92930.54570.61290.63250.44120.93430.93940.39400.53950.65010.56480.70840.2206Y=rand(size(A))%生成一与阵列A同型的随机均匀阵列Yrand%该命令在每次单独使用时,都返回一随机数(服从均匀分布)。s=rand(‘state’)%返回一有35元素的列向量s,其中包含均匀分布生成器的当前状态。该改变生成器的当前的状态,见表2-1。例2-23:R1=rand(4,5)11/9/202291例2-24:

R1=rand(4,5)

R2=0.6+sqrt(0.1)*randn(5)计算结果为:R1=0.27780.26810.55520.51670.88210.27450.37100.19160.33850.58230.91240.51290.41640.29930.05500.41250.26970.15080.93700.5878R2= 0.46320.97660.54100.63600.69310.07330.97600.82950.93730.17750.63960.58810.41400.61870.82590.69100.70351.29040.56981.11340.23750.65520.55690.33680.381211/9/202292运行程序后输出结果:R2=33.683519.821636.943649.628946.467918.516434.259715.366331.054949.037719.002637.100633.604639.536113.933612.464112.980435.542023.291646.830428.523848.741849.084313.051210.9265例2-25a=10;b=50;R2=a+(b-a)*rand(5)%经过线性变换后生成元素均匀分布于(10,50)上的矩阵;11/9/202293s=rand(‘state’)%返回一有2元素的向量s,其中包含正态分布生成器的当前状态。该改变生成器的当前状态,见下表命令含义rand(’state’,s)设置状态为srand(’state’,0)设置生成器为初始状态rand(’state’,k)设置生成器第k个状态(k为整数)rand(’state’,sum(100*clock))设置生成器在每次使用时的状态都不同(因为clock每次都不同)3.4.2随机函数rand11/9/2022943.4.3随机函数randn功能生成元素服从正态分布(N(0,1))的数值与阵列格式Y=randn(n)%返回n*n阶的方阵Y,其元素服从正态分布N(0,1)。若n不是一标量,则显示一出错信息.Y=randn(m,n)、Y=randn([mn])%返回阶数为m*n的,元素均匀分布于区间(0,1)上矩阵Y。Y=randn(m,n,p,…)、Y=randn([mnp…])%生成阶数m*n*p*…的,元素服从正态分布的多维随机阵列Y。Y=randn(size(A))%生成一与阵列A同型的随机正态阵列Y;randn%该命令在每次单独使用时,都返回一随机数(服从正态分布)。11/9/202295s=randn(‘state’)%返回一有2元素的向量s,其中包含正态分布生成器的当前状态。该改变生成器的当前状态,见下表。命令含义randn(’state’,s)设置状态为srandn(’state’,0)设置生成器为初始状态rand(’state’,k)设置生成器第k个状态(k为整数)rand(’state’,sum(100*clock))设置生成器在每次使用时的状态都不同(因为clock每次都不同)3.4.4随机函数randn11/9/202296Randn的应用:对正态分布随机函数产生的矩阵各元素按大小装入8个箱中并画出统计频率图clear%A=rand(10,10);B=randn(10,10);t1=0;t2=0;t3=0;t4=0;t5=0;t6=0;t7=0;t8=0;fork1=1:10fork2=1:10ifB(k1,k2)<=-3t1=t1+1;C(t1,1)=B(k1,k2);elseifB(k1,k2)<=-2&B(k1,k2)>-3t2=t2+1;C(t2,2)=B(k1,k2);elseifB(k1,k2)<=-1&B(k1,k2)>-2t3=t3+1;C(t3,3)=B(k1,k2);elseifB(k1,k2)<=0&B(k1,k2)>-1t4=t4+1;C(t4,4)=B(k1,k2);elseifB(k1,k2)<=1&B(k1,k2)>0t5=t5+1;C(t5,5)=B(k1,k2);elseifB(k1,k2)<=2&B(k1,k2)>1t6=t6+1;C(t6,6)=B(k1,k2);elseifB(k1,k2)<=3&B(k1,k2)>2t7=t7+1;C(t7,7)=B(k1,k2);elseB(k1,k2)>3t8=t8+1;C(t8,8)=B(k1,k2);endendendCP=[t1,t2,t3,t4,t5,t6,t7,t8]/100bar(P)11/9/202297求多项式的根,即多项式为零的值,可能是许多学科共同的问题。用MATLAB可以求解这个问题,并提供其它的多项式操作工具。在MATLAB里,多项式由一个行向量表示,它的系数是按降幂排列。例如,输入多项式x4-12x3+0x2+25x+116,只须按降幂输入它的系数:p=[1-12025116];注意,必须包括具有零系数的项。除非特别地辨认,MATLAB无法知道哪一项为零。给出这种形式,用函数roots找出一个多项式的根。

r=roots(p)%此命令可求出它的四个根为:r=[11.7473,2.7028,

温馨提示

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

评论

0/150

提交评论