版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章MATLAB数值运算
目标:掌握向量、矩阵、数组、字符串和多项式的构造和运算方法。掌握关系和逻辑运算。主要内容
3.1向量及其运算
3.2矩阵及其运算
3.3数组及其运算3.4字符串
3.5多项式运算
3.6关系和逻辑运算3.1向量及其运算向量是矢量运算的基础行向量列向量3.1.1向量的构造1.逐个输入>>a=[139101516] %采用空格和逗号分隔构成行向量>>b=[1;3;9;10;15;16] %采用分号隔开构成列向量2.利用冒号表达式“:”生成向量>>x=1:2:9 %初值=1,终值=9,步长=2>>z=1:5 %初值=1,终值=5,默认步长=13.利用函数生成向量>>x=linspace(1,10,5) %初值=1,终值=10,元素数目=5>>x=logspace(1,3,3) %初值=10,终值=1000,元素数目=33.1.2向量的读取例:>>a=linspace(1,10,10)>>a(3)>>a(2:7)>>a(8:-2:3)>>a(6:end)>>length(a)>>size(a)3.2矩阵及其运算MATLAB以矩阵为基本的运算单元,向量和标量作为特殊的矩阵处理:向量看作只有一行或一列的矩阵;标量看作只有一个元素的矩阵。3.2.1矩阵的构造通过直接输入矩阵的元素构造矩阵:用中括号[]把所有矩阵元素括起来同一行的不同数据元素之间用空格或逗号间隔用分号(;)指定一行结束可分成几行进行输入,用回车符代替分号数据元素可以是表达式,系统将自动计算结果通过数组(矩阵)编辑器通过M文件创建矩阵利用MATLAB函数创建矩阵标准矩阵生成函数zeros(m,n)生成一个m行n列的零矩阵,m=n时可简写为zeros(n)ones(m,n)生成一个m行n列的元素全为1的矩阵,m=n时可写为ones(n)eye(m,n)生成一个主对角线全为1的m行n列矩阵,
m=n时可简写为eye(n),即为n维单位矩阵diag(X)若X是矩阵,则diag(X)为X的主对角线向量若X是向量,diag(X)产生以X为主对角线的对角矩阵tril(A)提取一个矩阵的下三角部分triu(A)提取一个矩阵的上三角部分rand(m,n)产生0~1之间均匀分布的随机矩阵m=n时简写为rand(n)randn(m,n)产生均值为0,方差为1的标准正态分布随机矩阵
m=n时简写为randn(n)3.2.2矩阵下标与子矩阵提取A(m,n) 提取第m行,第n列元素A(:,n) 提取第n列元素A(m,:) 提取第m行元素A(m1:m2,n1:n2) 提取第m1行到第m2行和第n1列到第n2列的所有元素A(m:end,n) 提取从第m行到最末行和第n列的子块A(:) 得到一个长列矢量,该矢量的元素按矩 阵的列进行排列例1:
修改矩阵A中元素的数值>>A=[1234;5678;9101112;13141516];>>A(1,1)=0;A(2,2)=A(1,2)+A(2,1);A(4,4)=cos(0);A=02345778910111213141513.2.3矩阵的特殊化处理函数reshape在总元素数不变的前提下,改变矩阵的行数和列数
flipud以矩阵“水平中线”为对称轴,交换上下对称位置上的矩阵元素fliplr以矩阵“垂直中线”为对称轴,交换左右对称位置上的矩阵元素
rot90把矩阵逆时针旋转90°的整数倍用于专门学科的特殊矩阵魔方矩阵
魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1,2,3,…,n2共n2个整数组成。MATLAB提供了求魔方矩阵的函数magic(n),其功能是生成一个n阶魔方阵。例2:将101~125等25个数填入一个5行5列的表格中,使其每行每列及对角线的和均为565。>>M=100+magic(5)用于专门学科的特殊矩阵
范得蒙矩阵
范得蒙德(Vandermonde)矩阵最后一列全为1,倒数第二列为一个指定的向量,其他各列是其后列与倒数第二列的点乘积。可以用一个指定向量生成一个范得蒙矩阵。在MATLAB中,函数vander(V)生成以向量V为基础向量的范得蒙矩阵。
例如,A=vander([1;2;3;5])用于专门学科的特殊矩阵
希尔伯特矩阵的第i行、第j列的元素值为1/(i+j-1)在MATLAB中,生成希尔伯特矩阵的函数是hilb(n)。
使用一般方法求逆会因为原始数据的微小扰动而产生不可靠的计算结果。MATLAB中,有一个专门求希尔伯特矩阵的逆的函数invhilb(n),其功能是求n阶的希尔伯特矩阵的逆矩阵。希尔伯特(Hilbert)矩阵用于专门学科的特殊矩阵例
求4阶希尔伯特矩阵及其逆矩阵。
命令如下:
formatrat%以有理形式输出
H=hilb(4)
H=invhilb(4)
3.2.4矩阵的算术运算1.矩阵的加减运算:+(加)、-(减)2.矩阵乘法:*(乘)3.矩阵除法:/(右除)、\(左除)4.矩阵的乘方:^(乘方)5.矩阵转置:'(转置运算符)
(1)矩阵加减运算
假定有两个矩阵A和B,则可以由A+B和A-B实现矩阵的加减运算。运算规则是:若A和B矩阵的维数相同,则可以执行矩阵的加减运算,A和B矩阵的相应元素相加减。如果A与B的维数不相同,则MATLAB将给出错误信息,提示用户两个矩阵的维数不匹配。
(2)矩阵乘法
假定有两个矩阵A和B,若A为m×n矩阵,B为n×p矩阵,则C=A*B为m×p矩阵。
(3)矩阵除法
在MATLAB中,有两种矩阵除法运算:\和/,分别表示左除和右除。如果A矩阵是非奇异方阵,则A\B和B/A运算可以实现。A\B等效于A的逆左乘B矩阵,也就是inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。
对于含有标量的运算,两种除法运算的结果相同,如3/4和4\3有相同的值,都等于0.75。又如,设a=[10.5,25],则a/5=5\a=[2.10005.0000]。对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。对于矩阵运算,一般A\B≠B/A。
(4)矩阵的乘方
一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。
3.2.5矩阵函数函数功能det计算矩阵所对应的行列式的值diag抽取矩阵对角线元素eig求特征值和特征向量inv求矩阵的逆阵rank求矩阵的秩trace求矩阵的迹lu三角分解svd奇异值分解1.对角阵
只有对角线上有非0元素的矩阵称为对角矩阵,对角线上的元素相等的对角矩阵称为数量矩阵,对角线上的元素都为1的对角矩阵称为单位矩阵。(1)提取矩阵的对角线元素
设A为m×n矩阵,diag(A)函数用于提取矩阵A主对角线元素,产生一个具有min(m,n)个元素的列向量。
diag(A)函数还有一种形式diag(A,k),其功能是提取第k条对角线的元素。(2)构造对角矩阵
设V为具有m个元素的向量,diag(V)将产生一个m×m对角矩阵,其主对角线元素即为向量V的元素。
diag(V)函数也有另一种形式diag(V,k),其功能是产生一个n×n(n=m+)对角阵,其第k条对角线的元素即为向量V的元素。。先建立5×5矩阵A,然后将A的第一行元素乘以1,第二行乘以2,…,第五行乘以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:5);
D*A%用D左乘A,对A的每行乘以一个指定常数
2.三角阵
三角阵又进一步分为上三角阵和下三角阵,所谓上三角阵,即矩阵的对角线以下的元素全为0的一种矩阵,而下三角阵则是对角线以上的元素全为0的一种矩阵。(1)上三角矩阵
求矩阵A的上三角阵的MATLAB函数是triu(A)。
triu(A)函数也有另一种形式triu(A,k),其功能是求矩阵A的第k条对角线(包含第k条)以上的元素。例如,提取矩阵A的第2条对角线以上的元素,形成新的矩阵B。(2)下三角矩阵
在MATLAB中,提取矩阵A的下三角矩阵的函数是tril(A)和tril(A,k),其用法与提取上三角矩阵的函数triu(A)和triu(A,k)完全相同。3.矩阵的转置与旋转
1).矩阵的转置
转置运算符是单撇号(‘)。
2).矩阵的旋转
利用函数rot90(A,k)将矩阵A旋转90º的k倍,当k为1时可省略。3).矩阵的左右翻转对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,…,依次类推。MATLAB对矩阵A实施左右翻转的函数是fliplr(A)。4).矩阵的上下翻转
MATLAB对矩阵A实施上下翻转的函数是flipud(A)。4.求矩阵的行列式的值
把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为矩阵所对应的行列式的值。在MATLAB中,求方阵A所对应的行列式的值的函数是det(A)。>>X=[1230;5608;901112;0141516];>>det(X)ans=-54642.求矩阵的秩矩阵线性无关的行数与列数称为矩阵的秩。在MATLAB中,求矩阵秩的函数是rank(A)。>>X=[1,2,3;2,3-5;471];>>rank(X)ans=23.求逆矩阵对于一个方阵A,如果存在一个与其同阶的方阵B,使得:
A·B=B·A=I(I为单位矩阵)
则称B为A的逆矩阵,当然,A也是B的逆矩阵。
求一个矩阵的逆是一件非常烦琐的工作,容易出错,但在MATLAB中,求一个矩阵的逆非常容易。求方阵A的逆矩阵可调用函数inv(A)。>>X=[1230;5608;901112;0141516];>>Y=inv(X)>>Y*X %矩阵与其逆阵相乘结果是单位矩阵>>X*Y %矩阵的逆阵是唯一的4.求特征值和特征向量
在MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有2种:
(1)E=eig(A):求矩阵A的全部特征值,构成向量E。
(2)[V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。>>X=[-211;020;-413];>>[VD]=eig(X)3.3数组及其运算数组运算和矩阵运算有着显著的不同。属于两种不同的运算:矩阵运算是从矩阵的整体出发,按照线性代数的运算规则进行,有着明确而严格的数学规则;而数组运算是从矩阵的单个元素出发,针对每个元素进行的运算。MATLAB对数组运算在符号上做了不同的约定,运算符形式为:.*./.\.^对于加法和减法而言,矩阵运算和数组运算相同;对于乘法和除法而言,矩阵和数组的运算有着显著的不同。
例:3.3-1(exm030301)3.3数组及其运算3.4字符串所有字符串都用单引号括起来。>>s='matlab'
字符串内的单引号是由两个连续的单引号表示。字符串中的每个字符(包括空格)都是字符串变量(矩阵或向量)中的一个元素。字符串中的字符以ASCII码形式储存并区分大小写,用函数double和abs可以看到字符的ASCII码。相反,char函数可以把ASCII码矩阵转换为字符串矩阵。
char函数将ASCII码转换成字符。字符串的操作函数num2str用来把数值转换成字符串。函数int2str把整数转换成字符串。函数str2num将字符型矩阵转换为数字矩阵。函数str2double将字符串转换为双精度的数值。>>A=‘Iamfine.’;>>B=double(A)B=7332971093210210511010146>>ch=char(B)ch=Iamfine.例:
建立一个字符串向量ch=ABc123d4e56Fg9,然后对该向量做如下处理:(1)取第1~5个字符组成的子字符串。
(2)将字符串倒过来重新排列。
(3)将字符串中的小写字母变成相应的大写字母,其余字符不变。
(4)统计字符串中小写字母的个数。字符串举例
ch='ABc123d4e56Fg9'subch=ch(1:5)
%取子字符串
revch=ch(end:-1:1)
%将字符串倒排
k=find(ch>='a'&ch<='z');%找小写字母的位置
ch(k)=ch(k)-('a'-'A');
%将小写字母变成相应%的大写字母
length(k)%统计小写字母的个数字符串举例例:建立矩阵A,然后找出大于4的元素的位置。
(1)建立矩阵A。
A=[4,-65,-54,0,6;56,0,67,-45,0]
(2)找出大于4的元素的位置。
find(A>4)find举例3.6关系和逻辑运算
MATLAB约定:P137关系运算符: <(小于)、<=(小于或等于)、>(大于) >=(大于或等于)、==(等于)、~=(不等于)。关系运算符的运算法则:关系运算将对两个数组的对应元素进行比较。必须是两个同维数组或其中一个数组为标量才能进行例3.5-2逻辑运算例3.5-4逻辑函数逻辑函数功能all如果所有的元素都是非零值,返回1;否则,返回0。any如果有一个元素为非零值,那么返回1;否则,返回0isempty判断是否空矩阵isequal判断两矩阵是否相同isreal判断是否是实矩阵3.5多项式多项式是形如 P(x)=a0xn+a1xn-1+…+an-1x+an的式子。在MATLAB中,多项式用行向量表示: P=[a0a1…an-1an]3.5.1多项式的生成与表达直接输入系数向量创建多项式例:创建多项式p=[3501012]y=poly2sym(p)y=poly2sym(p,'s')3.5.1多项式的生成与表达由多项式的根逆推多项式–poly函数例:已知向量A=[1–34–8000],用此向量构造一多项式并显示结果。 (x-1)(x+34)(x+80)(x-0)(x-0)>>PA=poly(A)>>PAX=poly2sym(PA,'X')X^5+113X^4+2606X^3-2720X^23.5.2多项式的运算1.多项式的算术运算参加加减运算的多项式应该具有相同的阶次。多项式乘法采用conv
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论