资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,2.1.3 矢量的各种运算,矢量的各种运算,加减运算,数乘运算,乘积运算,数量积,矢量积,混合积,1、矢量的加减运算,A=x1i+y1j+z1k,B=x2i+y2j+z2k;,AB=(x1x2)i+(y1y2)j+(z1z2)k;,2、矢量的数乘运算,A=x1i+y1j+z1k;,A x1i+ y1j+ z1k;,3、矢量的数量积运算,A=x1i+y1j+z1k,B=x2i+y2j+z2k;,AB=x1x2+y1y2+z1z2;,MATLAB提供了dot函数专门进展这项运算。,C=dot(A,B),C=dot(A,B,dim),%注意,参与运算的向量的维数必须一样,此时,作为维数的dim参数可以省略。,4、矢量的矢量积运算,A=x1i+y1j+z1k,B=x2i+y2j+z2k;,MATLAB提供了cross函数进展矢量积运算。C=cross(A,B),C=cross(A,B,dim),5、矢量的混合积运算,A=x1i+y1j+z1k,B=x2i+y2j+z2k;C=x3i+y3j+z3k;,MATLAB提供了函数det()专门进展矢量混合积的运算。其实就是求一个方阵的行列式值。,2.2 矩阵和矩阵运算,2.2.1矩阵的表示,1、矩阵的一般输入方式,A=-1 0 1 3;0 1 2 4;0 0 -1 0;-9 2 0 3,A =,-1 0 1 3,0 1 2 4,0 0 -1 0,-9 2 0 3,2、矩阵的等差输入方式,1等差行矢量输入, t=0:0.1:0.6,t =,0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000,2等差矩阵输入,a=1:0.1:0.6;1.1:0.1:1.7;1.2:0.1:1.8;1.3:0.1:1.9;1.4:0.1:2.0,a =,1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000,1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000,1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 1.8000,1.3000 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000,1.4000 1.5000 1.6000 1.7000 1.8000 1.9000 2.0000,3、零矩阵 元素全是0的矩阵称之为零矩阵。,B=zeros(n) %输出n阶零方阵,B=zeros(m,n) %输出mn阶零矩阵,B=zeros(m,n) %输出mn阶零矩阵,B=zeros(d1,d2,d3) %输出多维零数组,B=zeros(d1 d2 d3) %输出多维零数组,B=zeros(size(A) %输出一个与矩阵A行列数一样,的零矩阵, zeros(2,3), b=zeros(3,5,2),行 列 组,b=zeros(3,5,2,3),仔细体会以下指令执行后的输出结果:,5、单位矩阵 MATLAB中利用eye()函数构造单位矩阵。,Y=eye(n) %输出n阶单位方阵,Y=eye(m,n) %输出mn阶单位矩阵,B=eye(size(A) %输出一个与矩阵A行列数一样,的单位矩阵,6、全1矩阵,元素全是1的矩阵称之为全1矩阵。,B=ones(n) %输出n阶全1方阵,B=ones(m,n) %输出mn阶全1矩阵,B=ones(m,n) %输出mn阶全1矩阵,B=ones(d1,d2,d3) %输出多维全1数组,B=ones(d1,d2,d3) %输出多维全1数组,B=ones(size(A) %输出一个与矩阵A行列数一样,的全1矩阵,7、对角矩阵,主对角线以外元素全部为0的矩阵称为对角矩阵。,MATLAB中利用diag()函数构造对角矩阵。,diag()函数格式如下:,X=diag(v,k) %v为主对角线向量,k为控制参数,X=diag(v),v=diag(X,k) %提取矩阵X当中的某条对角线的内容,v=diag(X),out=blkdiaga,b) %组建分块对角矩阵,下面执行如下指令,体会输出结果:,先执行,a=diag(1:5,0),,再执行,v=diag(a,0),;,先执行,a=diag(1:5,1),,再执行,v=diag(a,-1),;,先输入a=1 2; 2 0;再输入b=6 8;6 -2;再执行c=blkdiag(a,eye(3),b);,8、随机矩阵,利用MATLAB可以生成随机矩阵。随机矩阵分为两种:均匀分布随机矩阵正态分布随机矩阵。,1rand()构造均匀分布随机矩阵 元素值0,1,B=rand(n) %输出n阶均匀分布随机方阵,B=rand(m,n) %输出mn阶均匀分布随机矩阵,B=rand(m,n) %输出mn阶均匀分布随机矩阵,B=rand(d1,d2,d3) %输出多维均匀分布随机数组,B=rand(d1 d2 d3) %输出多维均匀分布随机数组,B=rand(size(A) %输出一个与矩阵A行列数一样,的均匀分布随机矩阵,2randn()构造正态分布随机矩阵 元素平均值为0,方差为1,标准差为1。,B=randn(n) %输出n阶正态分布随机方阵,B=randn(m,n) %输出mn阶正态分布随机矩阵,B=randn(m,n) %输出mn阶正态分布随机矩阵,B=randn(d1,d2,d3) %输出多维正态分布随机数组,B=randn(d1 d2 d3) %输出多维正态分布随机数组,B=randn(size(A) %输出一个与矩阵A行列数一样,的正态分布随机矩阵,9、魔块方阵,特点:一样阶的模块方阵其特征和相等,为1n2)/n; 模块方阵的每行元素和、每列元素和以及主对角线元素和与特征和一样。,MATLAB中用magic()函数构造模块方阵。格式为:,Magic(n) n2,输出一个模块方阵,a=magic(4),a=,16 2 3 13,5 11 10 8,9 7 6 12,4 14 15 1,求模块方阵的特征和, sum(1:42)/4,ans =,34,计算模块方阵的列矢量和, sum(a),ans =,34 34 34 34,计算模块方阵的行矢量和, sum(a),ans =,34,34,34,34,计算模块方阵的主对角线和, sum(diag(a),ans =,34,10、Hilbert方阵,特点:元素的值等于元素行列数之和减1后取倒数。,MATLAB中利用hilb()函数构造Hilbert方阵。,H=hilb(n) %构造一个n阶Hilbert方阵 (n15),Y=invhilb(n) %构造一个n阶Hilbert逆方阵 (n H=hadamard(4),H =,1 1 1 1,1 -1 1 -1,1 1 -1 -1,1 -1 -1 1, H*H,ans =,4 0 0 0,0 4 0 0,0 0 4 0,0 0 0 4, H*inv(H),ans =,1 0 0 0,0 1 0 0,0 0 1 0,0 0 0 1,12、Hankel方阵,该方阵是矩阵中的特殊矩阵,用来判断一样最小实现的维数时使用。,MATLAB中用hankel()函数构造Hankel方阵。格式如下:,Hhankel(c) %c表示hankel矩阵的第一列矢量;,H=hankel(c,r) %c同上,r表示hankel矩阵的最后一行行,矢量。c和r重叠的元素取c所对应的值。, c=5 6 7 8;, r=1 2 3 4;, hankel(c),ans =,5 6 7 8,6 7 8 0,7 8 0 0,8 0 0,0, hankel(c,r),ans =,5 6 7 8,6 7 8 2,7 8 2 3,8 2 3 4,13、Vandermonde方阵,Vandermonde方阵也是特殊矩阵。假设存在矢量v,v中各,元素为c,1,、,c,2,、,c,3,、,c,n,,此时, Vandermonde方阵中(i,j)元素为c,i,n-j,,其数学表达式为:,MATLAB中用vander()函数构造该矩阵。格式为:,A=vander(v),V为Vandermonde方阵中的第n-1列矢量。, k=4:7;, A=vander(k),A =,64 16 4 1,125 25 5 1,216 36 6 1,343 49 7 1,14、Toeplitz矩阵,假设存在矢量c,c中各元素为c1 、 c2 、 c3 、 cm;存在矢量r,r中各元素为r1 、 r2 、 r3 、 cn;此时, Toeplitz矩阵的表达式如下:,toeplitz(c,r), r=1:5;, a=toeplitz(r),a =,1 2 3 4 5,2 1 2 3 4,3 2 1 2 3,4 3 2 1 2,5 4 3 2 1,toeplitz(r) %表c=r, c=4:7;, b=toeplitz(c,r),b =,4 2 3 4 5,5 4 2 3 4,6 5 4 2 3,7 6 5 4 2,15、freqspace矩阵,用该矩阵可以构造频率响应的间隔。调用格式如下:,f1,f2=freqspace(n) %输出等间隔的频率响应矩阵,n表示矩阵阶数,f1,f2表示矩阵输出的行、列矢量。当n为奇数时,f1=f2=(-n+1):2,:(n-1)/n;当,n为偶数时, f1=f2=(-n):2,:(n-2)/n。,f1,f2=freqspace(m,n) %输出等间隔的频率响应矩阵, n 对应行矢量f1的阶数;m对应列矢量f2的阶数。当m或n为奇数时,计算对应f=(-n+1):2,:(n-1)/n;,当m或n为偶数时,计算对应f=(-n):2,:(n-2)/n。,f=freqspace(N) %输出值为单位圆上的等间隔值。f为一维矢量,f=0,:(2/N):1。N为偶数时,矢量f包括(n+2)/2个元素;当N为奇数时,f包括(n+1)/2个元素。,f=freqspace(N,whole) %输出值为单位圆上的等间隔值。一维矢量f= f=0,:(2/N):2(N-1)/N。, f1,f2=freqspace(4 5),f1 =,-0.8000 -0.4000 0 0.4000 0.8000,f2 =,-1.0000 -0.5000 0 0.5000, f=freqspace(4,whole),f =,0 0.5000 1.0000 1.5000,16、linspace矩阵,用该矩阵可以构造等间隔的线性矢量。调用格式如下:,y=linspace(a,b) %输出(a,b)区间100个等分元素;,y=linspace(a,b,n) %输出(a,b)区间n个等分元素;, y=linspace(1,10,7),y =,1.0000 2.5000 4.0000 5.5000 7.0000 8.5000 10.0000,2.2.2 矩阵的运算,1、矩阵的加减运算,2、矩阵的乘法,3、矩阵的转置(如果一个矩阵是复数矩阵,那么输出的转矩是原矩阵的共扼转置矩阵, A=1 2 3;4 5 6;7 8 9,4、矩阵的幂 Ak=AAA,是A的k次方幂。调用格式:,C=Ak,5、矩阵的除法 分为左除和右除两种。,矩阵左除AB 表示方程A*X=B的解A,-1,B;,矩阵右除A/B 表示方程X*B=A的解AB,-1,;, A=1 2;3 4,A =,1 2,3 4, B=5 6;7 8,B =,5 6,7 8, C=AB,C =,-3.0000 -4.0000,4.0000 5.0000, D=A/B,D =,3.0000 -2.0000,2.0000 -1.0000,6、行列式 调用格式为:,det(X) X为输入方阵;,7、逆矩阵 调用格式为:,inv(X) X为输入方阵;,8、矩阵的迹 矩阵的迹指矩阵主对角线元素的和。调用格式为:trace(X) X为一般矩阵,不一定是方阵;,2.2.3 矩阵的操作,1、矩阵的合并 将相关矩阵重新组合以得到新的矩阵。,调用格式如下:,C=cat(dim,A,B) %dim=1表示以列为基准进展合并;dim=2表示以行为基准进展合并。,C=vertcat(A1,A2, ),等效于dim=1 C=horzcat(A1,A2, ),等效于dim=2, a=1 2;3 4;, b=6 7;8 9;, c=cat(1,a,b),c =,1 2,3 4,6 7,8 9, horzcat(a,b),ans =,1 2 6 7,3 4 8 9,2、矩阵的累积乘积 设A=aij)mn,调用格式:Bcumprod(A), A=1 2 3;4 5 6;7 8 9;, B=cumprod(A),3、矩阵的累积求和 设A=aij)mn,调用格式:Bcumsum(A), A=1 2 3;4 5 6;7 8 9;, B=cumsum(A),4、矩阵的最大元素和最小元素,C=max(A) %求每列元素的最大值构成的行向量;,C=max(A,B) %求A,B中最大元素构成的矩阵;,C=min(A) %求每列元素的最小值构成的行向量;,C=min(A,B) %求A,B中最小元素构成的矩阵;,5、矩阵元的升序排列 由sort(A)函数执行,B=sort(A,dim) %dim=1进展列元素升序排列;dim=2进展行元素的升序排列;,B=sort(A) 与sort(A,dim) dim=1的功能完全一样。, A=9 8 7;1 2 3;5 4 6, B=sort(A,1);, C=sort(A,2);,6、矩阵元素的求和与求积,B=sum(A,dim) %dim=1进展列元素求和;dim=2进展行元素求和;,B=sum(A) % 与sum(A,dim) dim=1的功能完全一样。,C=prod(A,dim) %dim=1进展列元素求积;dim=2进展行元素求积;,C=prod(A) % 与prod(A,dim) dim=1的功能完全一样。, A=9 8 7;1 2 3;5 4 6,A =,9 8 7,1 2 3,5 4 6,7、矩阵的上下三角局部,B=tril(A,k) %矩阵的下三角形局部输出,k为主对角线控制参数;,B=tril(A) 与B=tril(A,k) k=0效果一样;,C=triu(A,k) %矩阵的上三角形局部输出,k为主对角线控制参数;,C=triu(A) 与C=triu(A,k) k=0效果一样;, A=1 2 3;4 5 6;7 8 9,A =,1 2 3,4 5 6,7 8 9, tril(A),ans =,1 0 0,4 5 0,7 8 9, triu(A,-1),ans =,1 2 3,4 5 6,0 8 9,8、矩阵的旋转 MATLAB软件利用flip()函数进展矩阵旋转,调用格式如下:,B=flipdim(A,dim) %对矩阵进展指定的旋转,dim=1时对输入矩阵进展上下翻转;dim=2时,对输入矩阵进展左右翻转;,B=fliplr(A) %对输入矩阵进展左右翻转;,B=flipud(A) %对输入矩阵进展上下翻转;,B=rot90(A) %对输入矩阵进展逆时针90旋转,B=rot90(A,k) %对输入矩阵进展逆时针k倍90旋转, A=1 2 3;4 5 6;7 8 9,A =,1 2 3,4 5 6,7 8 9, fliplr(A),ans =,3 2 1,6 5 4,9 8 7, flipud(A),ans =,7 8 9,4 5 6,1 2 3, rot90(A,3),ans =,7 4 1,8 5 2,9 6 3,2.3 数组和数组运算,2.3.2 数组的运算,1、数组的加减运算,数组的加减运算和矩阵及矢量的加减运算完全一致。其含义是不同维数的对应元素直接进展和差运算。,2、数组的乘法,数组的乘法与矩阵的乘法有着本质的区别。数组乘法,等于数组对应元素的乘积。表达式:,C=A.*B,举例:, A=3 1 1;3 2 5;4 1 7;, B=2 3 0;1 4 1;2 0 1;, C=A.*B,C =,6 3 0,3 8 5,8 0 7,3、数组的转置 表达式如下:,C=A. 注意,如果A为复数矩阵,那么转置不会是共扼的,元素仅仅是互换位置而已, C=1+i 1 2-8i;3 1-4i 6;-2 4 -3-6i,C =,1.0000 + 1.0000i 1.0000 2.0000 - 8.0000i,3.0000 1.0000 - 4.0000i 6.0000,-2.0000 4.0000 -3.0000 - 6.0000i, D=C.,D =,1.0000 + 1.0000i 3.0000 -2.0000,1.0000 1.0000 - 4.0000i 4.0000,2.0000 - 8.0000i 6.0000 -3.0000 - 6.0000i,4、数组的幂 数组A的k次幂等于数组相对应元素的k次幂。表达式:C=A.k。, A=2 3;4 53,A =,116 153,204 269,5、数组的除法 数组的除法也分为左除和右除两种。,左除,定义,右除,定义, A=1:3;2:4;3:5;, B=1 1 2;3 1 6;-1 2 -3;, C=A./B,C =,1.0000 2.0000 1.5000,0.6667 3.0000 0.6667,-3.0000 2.0000 -1.6667, D=A.B,D =,1.0000 0.5000 0.6667,1.5000 0.3333 1.5000,-0.3333 0.5000 -0.6000,6、数组的自然对数 对数组X中的每个元素求自然对数。调用格式:,Y=reallog(X),7、数组元素分别求幂 这种方法可以对数组中的不同元素求不同的幂。调用格式:,Z=realpow(X,Y) %,X、Y必须同维,Y中的数据作为X数组对应位置上元素的幂次值。,这样,realpow(X,X) =X.X 这个结论十分有用。,8、数组的平方根运算 求数组每个元素的平方根。,Y=realsqrt(X),2.3.3 数组的操作,1、数组的关系运算,在MATLAB中,数组的关系运算是一系列特殊的运算,关系运算是对数组相关元素进展关系比较。当数组的关系成立时,输出值为真,用1表示;当数组的关系不成立时,输出值为假,用0表示。共有如下运算符:, = = =, a=1 2;3 4,a =,1 2,3 4, b=0 -2;4 3,b =,0 -2,4 3, ab,ans =,1 1,0 1, a a=1 2;3 4;, b=0 -2;4 3;, a&b,ans =,0 1,1 1, a|b,ans =,1 1,1 1, b,ans =,1 0,0 0,3、实数数组的判别,MATLAB中用isreal()函数判断数组是否为全实数数组。调用格式: y= isreal(A)。如果数组A全为实数构,成,输出值为真,即y=1;否那么,y=0。,4、数组的质数判别, A=1 2 3 4 5;6 7 8 9 10,A =,1 2 3 4 5,6 7 8 9 10, y=isprime(A),y =,0 1 1 0 1,0 1 0 0 0,MATLAB中用isprime()函数判断数组中对应位置的元素,是否是质数。调用格式 y= isprime(A)。如果数组A中,有质数存在,那么对应位输出值为真,否那么为假。,5、组合数组 MATLAB中用perms()函数生成元素排列数组,格式如下:,P=perms(v) %v为输入矢量 对输入的矢量元素进展排列组合,生成组合数组。, p=perms(1 2 3),p =,3 2 1,3 1 2,2 3 1,2 1 3,1 2 3,1 3 2,2.4 线性代数,这一节的内容涉及线性方程组、特征值与特征向量、二次型、稀疏矩阵、范数理论等有关内容。,2.4.1 线性方程组,1、矩阵的标准型,矩阵在经过一系列的行列变换后,可以化成阶梯型的标准矩阵。MATLAB中利用函数rref()实现这一原本极为复杂的变换过程。调用格式为:,R=rref(A),通过这一变换可以反映出行列式的许多性质,比方行列式的秩、线性方程组解的构造、对应矩阵的特征值等。, A=10 2 5;1 8 6.3;4 5.6 55,A =,10.0000 2.0000 5.0000,1.0000 8.0000 6.3000,4.0000 5.6000 55.0000, rref(A),ans =,1 0 0,0 1 0,0 0 1,可以看出,此处矩阵,A,的秩为,3,。,2、矩阵的秩 MATLAB中利用rank()函数求得矩阵的秩。调用格式为:,k=rank(A),3、矩阵的范数,在MATLAB中利用norm()函数求矩阵或者矢量的范数。调用格式为,n=norm(A) %只计算矩阵的2范数,与下面p=2的效果一样;,n=norm(A,p) %根据p的不同,用来计算矩阵的不同范数。,P=1为1范数,即矩阵A列矢量和的最大值;,P=2为2范数,即为矩阵A的最大奇异值;,P=-inf,为负无穷范数,即行矢量和的最小值;,P=ing,为正无穷范数,即行矢量和的最大值;,P=fro时,计算矩阵A的Frobenius范数;,不同范数的数学含义如下:, A=10 2 5;1 8 6.3;4 5.6 55,A =,10.0000 2.0000 5.0000,1.0000 8.0000 6.3000,4.0000 5.6000 55.0000, n1=norm(A),n1 =,56.2160, n2=norm(A,inf),n2 =,64.6000, n3=norm(A,fro),n3 =,57.4983,2.4.2 特征值和特征向量,1、矩阵的特征值和特征向量,设P为一个数域,A为P上的n阶方阵,假设存在数P及n维非零列矢量x Pn,使得Ax= x,那么称是A的一个特征值,x是属于的一个特征向量。,MATLAB中利用eig()函数求解矩阵的特征值和特征向量。调用格式如下:,d=eig(A) %d为A的特征值组成的向量;,V,D=eig(A) %V为输出的特征向量矩阵;D为输出的特征值矩阵;,V,D=eig(A,nobalance) %输出的特征值和特征向量没有经过提高特征值精度的balance()函数的处理。,矩阵的广义特征值和特征向量:设P为一个数域,A为P上的n阶方阵,假设存在数P及n维非零列矢量x Pn,使得B-1Ax= x,那么称是A的一个广义特征值,x是属于的一个广义特征向量。,广义特征值和特征向量的求解见下面的函数调用:,d=eig(A,B),V,D=eig(A,B),V,D=eig(A,B,flag),flag为chol时,对矩阵进展Cholesky分解; flag为qz时,对矩阵进展QZ分解;, A=1 2 2;1 -1 1;4 -12 1;, d=eig(A),d =,1.0000,-0.0000 + 1.0000i,-0.0000 - 1.0000i, V,D=eig(A),V =,0.9045 -0.7255 -0.7255,0.3015 -0.2176 - 0.0725i -0.2176 + 0.0725i,-0.3015 0.5804 - 0.2902i 0.5804 + 0.2902i,D =,1.0000 0 0,0 -0.0000 + 1.0000i 0,0 0 -0.0000 - 1.0000i,2、矩阵的相似变换,设P为一个数域,A为P上的n阶方阵,引入一个相似变换矩阵T,使得B=T-1AT,称为矩阵的相似变换。如果A为对称矩阵,那么会有B=A,且有T=I。,MATLAB中利用balance()函数进展矩阵的相似变换。调用格式如下:,T,B=balance(A) %求解矩阵的相似变换矩阵和输出矩阵,B= balance(A) %直接输出相似变换后的输出矩阵, A=0.5 100 6600;300 1 0.03;90 0.1 2700;,A =1.0e+003 *,0.0005 0.1000 6.6000,0.3000 0.0010 0.0000,0.0900 0.0001 2.7000, T,B=balance(A),T =,4.0000 0 0,0 8.0000 0,0 0 0.5000,B =1.0e+003 *,0.0005 0.2000 0.8250,0.1500 0.0010 0.0000,0.7200 0.0016 2.7000, p=poly(A) %求得矩阵A的特征方程系数,p =,1.0000 -5.0000 -28.0000 64.0000 42.0000, roots(p) %求得方程的根,即求得A特征值,ans =,7.4965,-4.3388,2.3839,-0.5417,4、矩阵的特征值条件数 矩阵的条件数用来判断特征值是否为多重特征值。如果矩阵的特征值条件数较大,那么矩阵具有多重特征值。,V,D,s=condeig(A) %输出矩阵的特征向量、特征值和条件数,c=condeig(A) %只输出矩阵的条件数, V,D,s=condeig(A),V =,-0.2206 -0.2984 -0.6754 -0.6169,0.4849 0.7560 -0.3681 0.7200,0.3328 0.5786 -0.6351 -0.1846,-0.7781 0.0674 0.0700 -0.2588,D =,7.4965 0 0 0,0 -4.3388 0 0,0 0 2.3839 0,0 0 0 -0.5417,s =,1.6667,2.0358,1.9861,2.4720,这一结果在上面解特征方程的根时已经结出来了,现在大家可以比照一下,看看结果是不是完全一致。,9、矩阵的Jordan标准型,并不是任意一个复数矩阵都能相似于一个对角矩阵,但是,任意一个复数矩阵却可以相似于一个被称为Jordan标准型的矩阵。什么是Jordan标准型呢?设,为复数,形如,的mi级矩阵mi1称为一个Jordanz块,那么把下面的准对角矩阵,称为一个Jordan矩阵。任意一个复矩阵A都相似于一个Jordan矩阵,即存在可你矩阵V,使得V,-1,AV=J。,MATLAB中利用jordan()计算矩阵的Jordan标准型,函数的调用格式如下:,J= jordan(A),V,J= jordan(A), A=3 1 0;-4 -1 0;4 -8 -2,A =,3 1 0,-4 -1 0,4 -8 -2, V,J=jordan(A),V =,0 2.0000 1.0000,0 -4.0000 0,3.1111 13.3333 -3.1111,J =,-2 0 0,0 1 1,0 0 1,2.4.3 矩阵的分解 在实际工程计算中,由于矩阵的阶数很大,使得矩阵的运算十分困难,因此需要在保持阶数不变的情况下,将复杂的矩阵分解为假设干便于工程计算的矩阵。,1、Cholesky分解,设P为一个数域,A为P上的n阶对称正定方阵,如果矩阵A是对称矩阵,可以将矩阵A分解为如下形式,矩阵R 称为矩阵A的Cholesky分解。,MATLAB中利用chol()函数计算矩阵的Cholesky分解矩阵,函数的调用格式如下:,R=chol(X),R,p=chol(X) %p为返回值,如X为一个正定矩阵,那么返回p=0。, X=pascal(4),X =1 1 1 1,1 2 3 4,1 3 6 10,1 4 10 20, R,p=chol(X),R =1 1 1 1,0 1 2 3,0 0 1 3,0 0 0 1,p =,0, B=R.*R,B =,1 1 1 1,1 2 3 4,1 3 6 10,1 4 10 20,2、LU分解,设P为一个数域,A为P上的n阶方阵,可以将矩阵A分解为如下形式,这种分解称为LU分解。,MATLAB当中用函数lu()来计算矩阵的LU分解矩阵。调用格式如下:,L,U=luX %这个调用格式是最常用的,L,U,P=luX %L、U含义同前,P被称为置换矩阵,且有关系LU=PX。, X=rand(4),X =,0.2618 0.7009 0.4319 0.9455,0.5973 0.9623 0.6343 0.9159,0.0493 0.7505 0.8030 0.6020,0.5711 0.7400 0.0839 0.2536, L,U=lu(X),L =,0.4382 0.4160 0.4930 1.0000,1.0000 0,0,0,0.0825 1.0000 0,0,0.9560 -0.2681 1.0000,0,L,U,P=luX %L、U含义同前,P被称为置换矩阵,且有关系LU=PX。, X=rand(4),X =,0.2618 0.7009 0.4319 0.9455,0.5973 0.9623 0.6343 0.9159,0.0493 0.7505 0.8030 0.6020,0.5711 0.7400 0.0839 0.2536, L,U=lu(X),L =,0.4382 0.4160 0.4930 1.0000,1.0000 0,0,0,0.0825 1.0000 0,0,0.9560 -0.2681 1.0000,0,U =,0.5973 0.9623,0.6343 0.9159,0,0.6711,0.7507 0.5264,0,0,-0.3212 -0.4809,0,0,0,0.5622, L*U,ans =,0.2618 0.7009 0.4319 0.9455,0.5973 0.9623 0.6343 0.9159,0.0493 0.7505 0.8030 0.6020,0.5711 0.7400 0.0839 0.2536,3、QR分解,设P为一个数域,A为P上的n阶方阵,可以将矩阵A进展正交三角分解,分解为酉矩阵Q和上三角矩阵R的乘,积,其中上三角矩阵R为,矩阵A可以表示成为A=QR,称为QR分解。MATLAB中用qr()函数计算矩阵的QR分解矩阵,调用格式为:,Q,R=qr(A) %这个调用格式是最常用的,Q,R,E=qr(A) %Q、R含义同前,E被称为置换矩阵,且有关系AE=QR。, X=rand(4),X =,0.8735 0.9614 0.8580 0.3567,0.5134 0.0721 0.3358 0.4983,0.7327 0.5534 0.6802 0.4344,0.4222 0.2920 0.0534 0.5625, Q,R=qr(X),Q =,-0.6619 0.5935 -0.0977 -0.4473,-0.3890 -0.7920 -0.1729 -0.4375,-0.5552 -0.0876 -0.3000 0.7708,-0.3199 -0.1128 0.9330 0.1199,R =,-1.3197 -1.0650 -1.0932 -0.8511,0 0.4321 0.1777 -0.2845,0 0 -0.2961 0.2734,0 0 0 0.0247,2.5 函数和多项式,2.5.1 数的相关操作,1、设置变量精度,digits(d) %用来设置变量的精度,默认精度32位,d=digits %用来显示变量的精度,R=vpa(A) %使用默认精度表示相关变量,R=vpa(A,d) %使用指定精度表示相关变量, digits(60), vpa(sin(2),ans =, vpa(sin(2),12),ans =,.909297426826,2、有理数转化 MATLAB中,利用rat()函数将小数转化为近似的有理数。调用格式为:,N,D=rat(X) %N为转化后的有理数分子,D为转化后的有理数分母;,rat(X) %用来将小数转化为近似的有理数;, N,D=rat(sin(20),N =1615,D =1769, rat(sin(20),ans =,1 + 1/(-11 + 1/(-2 + 1/(-19 + 1/(4),3、求余运算 MATLAB中,利用mod()函数和rem()函数进展求余运算。调用格式为:,M=mod(X,Y) %X为被除数,Y为除数,M为余数;,R=rem(X,Y) %X为被除数,Y为除数,R为余数;,注意,这两个函数是有区别的,当被除数为负,除数为正时,mod(X,Y) rem(X,Y)Y, M=mod(10,2.1),M =1.6000, rem(-100,3),ans = -1, mod(-100,3),ans =2,4、舍入法 MATLAB中调用以下函数执行摄入运算:,fix(a) %向0舍入,floor(a) %向舍入,ceil(a) %向舍入,round(a) %向最接近的整数靠近, fix(2.968),ans =2, floor(2.968),ans =2, ceil(2.968),ans =3, round(2.968),ans =3, round(2.016),ans =2, round(-2.016),ans =-2,精品课件,!,精品课件,!,
展开阅读全文