您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 第三章MATLAB数值计算.
MATLAB的数值运算制作:陈学明创建矩阵的规则•矩阵元素必须用[]括住•矩阵元素必须用逗号或空格分隔•在[]内矩阵的行与行之间必须用分号分隔•当一个指令或矩阵太长时,可用•••续行•例:y=[2,4,5;368]矩阵元素•矩阵元素可以是任何matlab表达式,可以是实数,也可以是复数,复数可用特殊函数i,j输入。大的矩阵可以用分行输入,回车键代表分号。•a=[123;456]•x=[2pi/2;sqrt(3)3+5i]用matlab函数创建矩阵•空阵[]—matlab允许输入空阵,当一项操作无结果时,返回空阵。•rand——随机矩阵•eye——单位矩阵•zeros——全部元素都为0的矩阵•ones——全部元素都为1的矩阵•diag——产生对角矩阵矩阵下标与子矩阵提取•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(:)得到一个长列矢量,该矢量的元素按矩阵的列进行排列•例:假如A是一个已知10*10的方阵,那么:•(1)A(:,3)(2)A(5,:)(3)A(1:5,3)•(4)A(1:5,7:10)(5)A([135],[246])•(6)A(:,7:-1:3)(7)A(:,[24])=[]•(1)是A的第3列元素构成的列向量;•(2)是A的第5行元素构成的行向量;•(3)是A的前5行的第3列元素构成的列向量;•(4)是A的前5行,第7到第10列元素构成的子矩阵;•(5)A第1、3、5行,第2、4、6列元素构成的子矩阵;•(6)A的第7、6、5、4、3列元素构成的子矩阵.•(7)把A的第2、4列删除,形成A的一个子矩阵.矩阵的修改•(1)直接修改可用↑键找到所要修改的矩阵,用←键移动到要修改的矩阵元素上即可修改。•(2)指令修改可以用A(﹡,﹡)=﹡来修改。•(3)由矩阵编辑器修改由Matlab提供工具栏按钮来查看工作区变量,单击变量,可以打开或删除变量•例:修改矩阵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=0234577891011121314151数据的保存•把Matlab工作空间中一些有用的数据长久保存下来的方法是生成mat数据文件。•save——将工作空间中所有的变量存到Matlab.mat文件中•savedata——将工作空间中所有的变量存到data.mat文件中。•savedataab——将工作空间中a和b变量存到data.mat文件中。数据的获取•运行Matlab时即可用load指令调用已生成的mat文件。•load——•loaddata——•loaddataab——矩阵加、减(+,-)运算•规则:相加、减的两矩阵必须有相同的行和列两矩阵对应元素相加减。允许参与运算的两矩阵之一是标量。标量与矩阵的所有元素分别进行加减操作。矩阵乘()运算•规则:A矩阵的列数必须等于B矩阵的行数标量可与任何矩阵相乘。•例:a=[123;456;780];b=[1;2;3];c=a*bc=143223注:一个n行m列的矩阵可以乘以一个m行p列的矩阵,得到的结果是一个n行p列的矩阵,其中的第i行第j列位置上的数等于前一个矩阵第i行上的m个数与后一个矩阵第j列上的m个数对应相乘后所有m个乘积的和。矩阵除(\,/)运算•矩阵除的运算在线性代数中没有,有矩阵逆的运算,在Matlab中有两种矩阵除运算:\(左除)/(右除)A\B为方程AX=B的解B/A为方程XA=B的解A\B=inv(A)*BB/A=B*inv(A)B/A=(A’\B’)’矩阵的一些特殊操作•矩阵的变维a=[1:12],b=reshape(a,3,4)%b为3行4列c=zeros(3,4);c(:)=a(:)•矩阵的变向rot90:旋转(逆时针);fliplr:左右翻;flipud:上下翻•矩阵的抽取diag:抽取主对角线;tril:抽取主下三角;triu:抽取主上三角•例:a=[123;456;789],b=rot90(a),c=flipud(a),d=fliplr(a)a=123456789b=369258c=789456123d=321654987矩阵的乘方a^p——a自乘p次幂方阵1的整数对于p的其它值,计算将涉及特征值和特征向量,如果p是矩阵,a是标量,则a^p使用特征值和特征向量自乘到p次幂;如a,p都是矩阵,a^p则无意义。当一个方阵有复数特征值或负实特征值时,非整数幂是复数阵特殊的应用矩阵•约当阵--将状态空间模型转换为约当标准形形式:jordan(a)得到矩阵a的约当标准形[V,J]=jordan(a)J为约当标准形,V为相似变换阵,满足V\a*V=J.•例:a=[1,2;3,4];J=jordan(a),[V,JJ]=jordan(a)J=5.372300-0.3723V=0.23890.76110.5222-0.5222JJ=5.372300-0.3723特殊的应用矩阵•伴随矩阵--将状态空间模型转换为可控标准形compan(p)获得多项式P的伴随矩阵p=[123],a=compan(p)p=123a=-2-310特殊的应用矩阵•格雷姆(Gram)矩阵-计算可控性和可观性格雷姆阵•Gc=gram(G,’c’)计算稳定系统G的可控性格雷姆矩阵Gc•Go=gram(G,’o’)计算稳定系统G的观测性性格雷姆矩阵Go关系运算•关系运算符:(小于)、=(小于或等于)、(大于)=(大于或等于)、==(等于)、~=(不等于)。•关系运算符的运算法则:–关系运算将对两个矩阵的对应元素进行比较。–必须是两个同维矩阵或其中一个矩阵为标量才能进行–MATLAB提供了一些逻辑函数常用的逻辑函数逻辑函数功能all如果所有的元素都是非零值,返回1;否则,返回0。any如果有一个元素为非零值,那么返回1;否则,返回0isempty判断是否空矩阵isequal判断两矩阵是否相同isreal判断是否是实矩阵find返回一个由非零元素的下标组成的向量常用的矩阵函数矩阵的行列式、矩阵的秩、特征值等在现代控制理论中有广泛的应用,Matlab提供了相应的函数求其值•det(A)方阵A的行列式•eig(A)方阵A的特征值和特征向量•rank(A)矩阵A的秩•trace(A)矩阵A的迹•expm(A)矩阵的指数•sqrtm(A)求矩阵的平方根•funm(A,’fun’)求一般的方阵函数求解线性方程•信号处理、控制理论、物理学等领域中的很多问题都可以归结到下面的线性方程组矩阵行列式•如N阶矩阵A的行列式不等于0,即时,称矩阵A非奇异,否则A奇异。当线性方程系数矩阵非奇异,则线性方程有唯一解。对N阶方阵A,MATLAB中由函数得到行列式矩阵条件数矩阵特征值和特征向量矩阵分解•矩阵分解通过将复杂矩阵表示成形式简单或具有良好数学性质(统称为简单矩阵)的组合,以便于理论分析或数值计算。通常矩阵分解将复杂矩阵分解为几个简单矩阵的乘积。求解线性方程组不可避免地要用到矩阵分解的概念。•MATLAB中,线性方程组的求解主要用到三种基本的矩阵分解,即对称正定矩阵的cholesky分解、一般方程的gaussian消去法和矩阵的正交分解。这三种分解由函数chol、lu和qr完成。正定矩阵•正定矩阵的判定–判定定理1:对称阵A为正定的充分必要条件是:A的特征值全为正。–判定定理2:对称阵A为正定的充分必要条件是:A的各阶顺序主子式都为正。–判定定理3:任意阵A为正定的充分必要条件是:A合同于单位阵。正定矩阵•正定矩阵的性质:–1.正定矩阵一定是非奇异的。非奇异矩阵的定义:若n阶矩阵A的行列式不为零,即|A|≠0,则称A为非奇异矩–2.正定矩阵的任一主子矩阵也是正定矩阵。–3.若A为n阶对称正定矩阵,则存在唯一的主对角线元素都是正数的下三角阵L,使得A=L*L′,此分解式称为正定矩阵的乔列斯基(Cholesky)分解。Cholesky分解•如果A为n阶对称正定矩阵,则存在一个实的非奇异上三角阵R,满足R‘*R=A,称为Cholesky分解(P71例3-15)•Matlab使用函数chol实现Cholesky分解,其格式为:–R=chol(A)»若A非正定,则产生错误信息。–[R,p]=chol(A)»不产生任何错误信息,若A为正定阵,则p=0,R与上相同;若A非正定,则p为正整数,R是有序的上三角阵。lu分解•lu分解的含义–1u分解是除法运算的基础。gaussian消去法或lu分解是将任何方阵X表示为一个下三角矩阵L和一个上三角矩阵U的乘积,即X=LU。线性代数中已经证明,只要方阵A是非奇异的,LU分解总是可以进行的。•lu分解的条件–进行lu分解时,矩阵X必须是方阵。lu分解•MATLAB提供的lu函数用于对矩阵进行LU分解,其调用格式为:–[L,U]=lu(X):产生一个上三角阵U和一个变换形式的下三角阵L(行交换),使之满足X=LU。注意,这里的矩阵X必须是方阵。–[L,U,P]=lu(X):产生一个上三角阵U和一个下三角阵L以及一个置换矩阵P,使之满足PX=LU。当然矩阵X同样必须是方阵。•实现LU分解后,线性方程组Ax=b的解x=U\(L\b)或x=U\(L\Pb),这样可以大大提高运算速度。qr分解•qr分解的含义–qr分解即矩阵的正交分解,是将矩阵X分解为一个正交矩阵Q和一个上三角矩阵R的乘积,即X=QR。•适用条件及范围–qr分解适用于方阵,是非常重要的分解形式。QR分解•Matlab使用函数qr实现QR分解,其格式为:–[Q,R]=qr(A)–[Q,R,E]=qr(A)»求得正交矩阵Q和上三角阵R,E为单位矩阵的变换形式,R的对角线元素按大小降序排列,满足AE=QR。–[Q,R]=qr(A,0)–R=qr(A,0)奇异值分解•奇异值分解也是矩阵求秩运算的基础,对矩阵A进行奇异值分解S=svd(A),得到向量s的非零元素的个数就是矩阵A的秩。奇异值分解•[U,S,V]=svd(X)–产生一个与矩阵X具有相同维数的矩阵S,其对角线元素为递减的非负值,同时得到酉矩阵U和V,使得X=U*S*V;•[U,S,V]=svd(X,0)–得到一个“经济大小”的分解结果,如果X是m×n矩阵且mn,则只计算U矩阵的前n行,且S矩阵是n×n阶的。•S=svd(X,0)–得到矩阵X的奇异值组成的向量;多项式与插值•多项式在数学中有着极为重要的作用,同时多项式的运算也是工程和应用中经常遇到的问题。MATLAB提供了一些专门用于处理多项式的函数,用户可以应用这些函数对多项式进行操作。MATLAB中对多项式的操作包括多项式求根、多项式的四则运算及多项式的微积分。多项式的表示方式•多项式的MATLAB表示法:•如:P=S3+2S2+3S+4•MATLAB可表示为系数向量•P=[1234]多项式的四则运算•由于多项式是利用向量来表示,多项式的四则运算可以转化为向量的运算。•多项式的加减为对应项系数的加减,因此可以通过向量的加减来实现。但是在向量的加减中两个向量需要有相同的长度,因此在进行多项式加减时,需要将短的向量前面补0。•多项式的乘法实际上是多项式系数向量之间的卷积运算,可以通过MATLAB中的卷积函数conv来完成。•多项式的除法为乘法的逆运算,可以通过反卷积函数deconv来实现。多项式的其他运算•除多项式的四则运算外,MATLAB还提供了多项式的一些其他运算。如表所示。函数功能roots多项式求根polyval多项式求值polyvalm矩阵多项式求值polyder多项式求导poly求矩阵的特征多项式;polyfit多项式曲线拟合residue求解余项多项式的运算函数(1)•roots函数和poly函数这两个函数为功能互逆的两个函数。roots函数用于求解多项式的根。该函
本文标题:第三章MATLAB数值计算.
链接地址:https://www.777doc.com/doc-2120128 .html