第3讲MATLAB数值计算_第1页
第3讲MATLAB数值计算_第2页
第3讲MATLAB数值计算_第3页
第3讲MATLAB数值计算_第4页
第3讲MATLAB数值计算_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

Matlab数值计算

基础功能内容向量(一维矩阵)矩阵数组多项式一、向量输入及其运算向量的生成:直接输入

向量元素用[]括起来

行向量:元素之间用空格或逗号分隔

列向量:元素之间用分号分隔用冒号表达式生成

格式:X=X0:step:Xn

step缺省则默认为1线性等分向量的生成

格式:y=linspace(x1,x2,n)

生成n维行向量,y(1)=x1、y(n)=x(2)

若n缺省,则默认n=100对数等分向量的生成

格式:y=logspace(x1,x2,n)

生成n维行向量,y(1)=10^x1、y(n)=10^x(2)

若n缺省,则默认n=50向量的运算加、减、数乘点积dot(a,b),a、b必须同维叉积cross(a,b),a、b为三维向量两个三维向量的叉积等于一个新的向量,该向量与前两者垂直,且长度为前两者张成的平行四边形面积;混合积dot(a,cross(b,c))以a,b,c为棱的平行六面体的体积二、MATLAB矩阵2.1矩阵的建立

1.直接输入法将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。例如

A=[123;456;789]

2.利用M文件建立矩阵对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。

利用M文件建立MYMAT矩阵。

(1)启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵.(2)把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。

(3)运行该M文件,就会自动建立一个名为MYMAT的矩阵,可供以后使用。

3.利用MATLAB函数建立特殊矩阵几个产生常用特殊矩阵的函数:全零阵zeros、全一阵ones、单位阵eye、均匀分布随机阵rand、正态分布随机阵randn。这几个函数的调用格式相似,下面以产生零矩阵的zeros函数为例进行说明。其调用格式是:

zeros(m)产生m×m零矩阵

zeros(m,n)产生m×n零矩阵。

zeros(size(A))产生与矩阵A同样大小的零矩阵

例分别建立3×3、3×2和与矩阵A同样大小的零矩阵。(1)建立一个3×3零矩阵:zeros(3)(2)建立一个3×2零矩阵:zeros(3,2)(3)建立与矩阵A同样大小零矩阵:zeros(size(A))

此外,常用的函数还有reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩阵A重新排成m×n的二维矩阵。

例产生5阶随机方阵A,其元素为[10,90]区间的随机整数,然后判断A的元素是否能被3整除。

(1)生成5阶随机方阵A。

A=fix((90-10+1)*rand(5)+10)(2)判断A的元素是否可以被3整除。

P=rem(A,3)==0其他特殊矩阵函数希尔伯特矩阵hilb(n)希尔伯特矩阵的逆矩阵invhilb(n)托普利兹矩阵toeplitz(k,r)、toeplitz(c)友矩阵compan(p)生成多项式p的友矩阵,也就是他的特征多项式是p;hadamard(k)生成hadamard矩阵hankel函数,生成hankel矩阵magic(n),生成n×n的魔方矩阵pascal函数,生成pascal矩阵rosser,给出Rosser矩阵vander(x),给出向量x的范德蒙矩阵wilkinson(n),给出Wilkinson特征值测试矩阵

4.建立大矩阵大矩阵可由方括号中的小矩阵建立起来。例如

A=[123;456;789];C=[A,eye(size(A));ones(size(A)),A]

2.2矩阵的拆分1.矩阵元素MATLAB允许用户对一个矩阵的单个元素进行赋值和操作。例如

A(3,2)=200也可以采用矩阵元素的序号来引用矩阵元素。

2.矩阵拆分

(1)利用冒号表达式获得子矩阵①A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。②A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素;A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在第k~k+m列中的所有元素。此外,还可利用一般向量和end运算符等来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下标。如a(1,end)

(2)利用空矩阵删除矩阵的元素在MATLAB中,定义[]为空矩阵。给变量X赋空矩阵的语句为X=[]。注意,X=[]与clearX不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间,只是维数为0。

2.3多维矩阵以三维矩阵为例,常用的方法有4种:(1)对二维矩阵进行扩充得到三维矩阵。(2)若干个同样大小的二维矩阵进行组合得到三维矩阵。(3)除产生单位矩阵的eye函数外,前面介绍的建立矩阵的函数都可以延伸到三维矩阵。(4)用cat函数构建多维矩阵。一般调用格式是:

cat(n,A1,A2,…,An)cat函数把大小相同的若干矩阵,沿第n维方向串接成高维矩阵。当n=1和2时,沿行和列的方向串接,结果是二维矩阵。当n=3时,沿页的方向串接,结果是三维矩阵。

2.4矩阵的运算2.4.1基本算术运算

1.四则运算等

MATLAB的基本算术运算有:+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)。几点说明:1)加减运算与数字运算格式相同,要求两矩阵是同阶的;

2)乘法要求两矩阵有相邻公共维;

3)用矩阵除法求解方程组Ax=b,A是(n×m)阶矩阵讨论A的情况:n=m且非奇异,称恰定方程;n>m,超定方程,没有精确解,matlab使用最小二乘法来求解,来找到一个向量x使它对n个方程的总误差最小;方法:A\b如果b是矩阵B,则对B中的每一列相应的方程组求解

nnls(A,b)求非负的最小二乘解

lscov(A,b,v)求在已知协方差v的情况下的最小二乘解n<m,欠定方程,方程组有无穷多解,matlab在求解时给出一组解,无警告信息。2矩阵与常数间的运算常数与矩阵的各元素间进行运算,当作除法时,常数只能做除数。3矩阵的逆运算

inv命令4矩阵的行列式运算

det函数

3矩阵的逆运算

inv命令4矩阵的行列式运算

det函数5矩阵的幂运算

^算符6矩阵的指数运算

expm(X)常用矩阵指数函数

expm1(X)Pade法求矩阵指数

expm2(X)Taylor法求矩阵指数

expm3(X)特征值分解法求矩阵指数

7矩阵的对数运算

logm(A)8矩阵开方运算

sqrtm函数2.4.2矩阵的函数运算特征向量、特征值计算函数

eig、eigs奇异值函数

svd、svds条件数函数

cond、condest、rcond特征值的条件数

condeig范数函数

norm、normest秩函数

rank迹函数

trace

举例:1.矩阵的逆求一个矩阵的逆非常容易。求方阵A的逆可调用函数inv(A)。例用求逆矩阵的方法解线性方程组。x1+2x2+3x3=5x1+4x2+9x3=-2x1+8x2+27x3=6命令如下:A=[1,2,3;1,4,9;1,8,27];b=[5,–2,6]';x=inv(A)*b

一般情况下,用左除比求矩阵的逆的方法更有效,即x=A\b。

2矩阵的秩

一个向量组的极大线形无关组的个数。MATLAB中,求矩阵秩的函数是rank(A)。例如,求例5.7中方程组系数矩阵D的秩,命令是:D=[2,2,-1,1;4,3,-1,2;8,5,-3,4;3,3,-2,2];r=rank(D)r=4说明D是一个满秩矩阵。

3向量和矩阵的范数1.计算向量3种常用范数的函数(1)norm(V)或norm(V,2)计算向量V的2—范数(2)norm(V,1)计算向量V的1—范数(3)norm(V,inf)计算向量V的∞—范数

1-范数:║x║1=│x1│+│x2│+…+│xn│

2-范数:║x║2=(│x1│^2+│x2│^2+…+│xn│^2)^1/2

∞-范数:║x║∞=max(│x1│,│x2│,…,│xn│)

V=[-1,1/2,1];v1=norm(V,1)%求V的1—范数v2=norm(V)%求V的2—范数vinf=norm(V,inf)%求∞—范数

2.矩阵的范数及其计算函数MATLAB中提供了求3种矩阵范数的函数,其函数调用格式与求向量的范数的函数完全相同(含义请参见MATLABhelp)A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,19];a1=norm(A,1)%求A的1—范数a2=norm(A)%求A的2—范数ainf=norm(A,inf)%求A的∞—范数

4矩阵的条件数和迹1.矩阵的条件数

用矩阵及其逆矩阵的范数的乘积表示矩阵的条件数,矩阵条件数的大小是衡量矩阵“坏”或“好”的标志。

条件数大的矩阵称为“坏矩阵”或“病态矩阵”。MATLAB中,计算矩阵A的3种条件数的函数是:(1)cond(A,1)计算A的1—范数下的条件数(2)cond(A)或cond(A,2)计算A的2—范数数下的条件数(3)cond(A,inf)计算A的∞—范数下的条件数A=[2,2,3;4,5,-6;7,8,9];C1=cond(A,1)C2=cond(A)C3=cond(A,inf)

2.矩阵的迹方阵对角元素之和。MATLAB中,求矩阵的迹的函数是trace(A)。例如,X=[223;45-6;789];trace(X)ans=16MATLAB在三维向量中的应用1.向量共线或共面的判断例设X=(1,1,1),Y=(-1,2,1),Z=(2,2,2),判断这三个向量的共线共面问题。命令如下:X=[1,1,1];Y=[-1,2,1];Z=[2,2,2];XY=[X;Y];YZ=[Y;Z];ZX=[Z;X];XYZ=[X;Y;Z];rank(XY)rank(YZ)rank(ZX)rank(XYZ)

2.向量方向余弦的计算例设向量V=(5,-3,2),求V的方向余弦。建立一个函数文件direct.m:functionf=f(v)r=norm(v);ifr==0f=0elsef=[v(1)/r,v(2)/r,v(3)/r];endreturn在MATLAB命令窗口,输入命令:v=[5,-3,2];f=direct(v)

3.向量的夹角例设U=(1,0,0),V=(0,1,0),求U,V间的夹角θ。命令如下:U=[1,0,0];V=[0,1,0];r1=norm(U);r2=norm(V);UV=U*V';cosd=UV/r1/r2;D=acos(cosd)4.两点间的距离例设U=(1,0,0),V=(0,1,0),求U、V两点间的距离。命令如下:U=[1,0,0];V=[0,1,0];UV=U-V;D=norm(UV)

5.向量的向量积例设U=(2,-3,1),V=(3,0,4),求U×V。命令如下:U=[2,-3,1];V=[3,0,4];W=eye(3);A1=[W(1,:);U;V];A2=[W(2,:);U;V];A3=[W(3,:);U;V];UV=[det(A1),det(A2),det(A3)]UV=-12-596.向量的混合积例设U=(0,0,2),V=(3,0,5),W=(1,1,0),求以这三个向量构成的六面体的体积。命令如下:U=[0,0,2];V=[3,0,5];W=[1,1,0];A=[U;V;W];det(A)ans=67.点到平面的距离例求原点到平面X+Y+Z=1的距离。命令如下:u=[0,0,0];v=[1,1,1];%A=B=C=1,u1=u2=u3=0,D=-1r=abs(u*v'-1)/norm(v,2)r=0.57742.4.3矩阵分解函数特征值分解函数eig复数特征值对角阵与实数块特征值对角阵地转化cdf2rdf、rsf2csf奇异值分解svdLU分解[L,U]=lu(A)将方阵A分解为交换下三角矩阵L和上三角矩阵U,使A=LU[L,U,P]=lu(A)将方阵A分解为下三角矩阵L和上三角矩阵U,使PA=LUChol分解cholQR分解(正规正交矩阵Q与上三角形矩阵R)

[Q,R]=qr(A),根据方阵A,求一个正交矩阵Q和一个上三角矩阵R,使A=Q*R

例如,对矩阵A进行QR分解的命令是:

A=[2,1,-2;1,2,1;2,5,3];[Q,R]=qr(A)例:A=[2,1,4,6;1,2,1,5;4,1,3,4;6,5,4,2];[Q,D]=eig(A)Q*D*Q'ans=2.00001.00004.00006.00001.00002.00001.00005.00004.00001.00003.00004.00006.00005.00004.00002.0000结果与A相等,说明确实将A分解为了QDQ'的乘积。1、对角阵与三角阵矩阵的对角元素(1)提取矩阵的对角线元素设A为m×n矩阵,diag(A)函数用于提取矩阵A主对角线元素产生一个具有min(m,n)个元素的列向量。

diag(A,k),其功能是提取第k条对角线的元素。(2)构造对角矩阵设V为具有m个元素的向量,diag(V)将产生一个m×m对角矩阵,其主对角线元素即为向量V的元素。

diag(V,k),其功能是产生一个对角阵,其第k条对角线的元素即为向量V的元素。2.4.4矩阵的一些操作

例先建立5×5矩阵A,然后将A的第1行元素乘以1,第2行乘以2,…,第5行乘以5。命令如下:A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,19];D=diag([1,2,3,4,5]);D*A

矩阵的三角阵

(1)下三角矩阵求矩阵A的下三角阵的MATLAB函数是tril(A)。

tril(A)函数也有更进一步的一种形式tril(A,k),其功能是求矩阵A的第k条对角线以下的元素。

(2)上三角矩阵在MATLAB中,提取矩阵A的上三角矩阵的函数是triu(A)和triu(A,k),其用法与提取下三角矩阵的函数tril(A)和tril(A,k)完全相同。2、矩阵变向1.矩阵的转置转置运算符是单撇号(‘)2.矩阵的旋转

rot90(A,k),功能是将矩阵A逆时针方向旋转90º的k倍当k为1时可省略3.矩阵的左右翻转

fliplr(A)4.矩阵的上下翻转

flipud(A)5.第dim维翻转

flipdim(A,dim)3、变维(1)reshape(x,m,n),将矩阵x变成m*n阶(2)“:”符号例如:c(:)=a(:)

两个矩阵必须预先定义维数三、矩阵的数组运算

在matlab中,数组的建立、存储与矩阵相同,只是在计算时符号不同。数组间的

温馨提示

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

评论

0/150

提交评论