《matlab数值计算一》由会员分享,可在线阅读,更多相关《matlab数值计算一(55页珍藏版)》请在金锄头文库上搜索。
1、第4讲 MATLAB数值计算一,西南科技大学网络教育系列课程,数学软件,数学软件,主讲教师: 鲜大权 副教授,西南科技大学理学院数学系,4.1 特殊矩阵 4.2 矩阵分析 4.3 矩阵分解与线性方程组求解 4.4 数据处理与多项式计算,4.1 特殊矩阵,4.1.1对角阵与三角阵 1. 矩阵的对角元素 (1)提取矩阵的对角线元素 设A为mn矩阵,diag(A)函数用于提取矩阵A主对角线元素产生一个具有min(m,n)个元素的列向量。 diag(A)函数还有更进一步的形式diag(A,k),其功能是提取第k条对角线的元素。 (2)构造对角矩阵 设V为具有m个元素的向量,diag(V)将产生一个mm
2、对角矩阵,其主对角线元素即为向量V的元素。 diag(V)函数也有更进一步的形式diag(V,k),其功能是产生一个nn(n=m+)对角阵,其第k条对角线的元素即为向量V的元素。,例4.1 先建立55矩阵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,2. 矩阵的三角阵 (1)下三角矩阵 求矩阵A的下三角阵的MATLAB函数是tril(A)。 tril(A)函数也有更进一步的一种形式tri
3、l(A,k),其功能是求矩阵A的第k条对角线以下的元素。 (2)上三角矩阵 在MATLAB中,提取矩阵A的上三角矩阵的函数是triu(A)和triu(A,k),其用法与提取下三角矩阵的函数tril(A)和tril(A,k)完全相同。,4.1.2 特殊矩阵的生成 1. 魔方矩阵 函数magic(n),其功能是生成一个n阶魔方阵。 例4.2 将101125等25个数填入一个5行5列的表格中,使其每行每列及对角线的和均为565。 命令如下: B=100+magic(5) 2. 范得蒙矩阵 函数vander(V)生成以向量V为基础向量的范得蒙矩阵。,3. 希尔伯特矩阵 生成希尔伯特矩阵的函数是hilb
4、(n)。MATLAB中,有一个专门求希尔伯特矩阵的逆的函数invhilb(n),其功能是求n阶的希尔伯特矩阵的逆矩阵。 4. 托普利兹矩阵 生成托普利兹矩阵的函数是toeplitz(x,y),它生成一个以x为第1列,y为第1行的托普利兹矩阵。这里x, y均为向量,二者不必等长。 5. 友矩阵 生成友矩阵的函数是:compan(P),生成多项式P的友矩阵。P是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。 6. 帕斯卡矩阵 函数pascal(n)生成一个n阶的帕斯卡矩阵。,例4.3求(x+y)5的展开式。 在MATLAB命令窗口,输入命令: pascal(6) ans = 1 1 1 1
5、 1 1 1 2 3 4 5 6 1 3 6 10 15 21 1 4 10 20 35 56 1 5 15 35 70 126 1 6 21 56 126 252 其次对角线上的元素1,5,10,10,5,1即为展开式的系数。,4.2 矩阵分析,4.2.1 矩阵结构变换 1. 矩阵的转置 转置运算符是单撇号()。 2. 矩阵的旋转 矩阵的旋转利用函数rot90(A,k),功能是将矩阵A旋转90的k倍,当k为1时可省略。 3. 矩阵的左右翻转 对矩阵A实施左右翻转的函数是fliplr(A)。 4. 矩阵的上下翻转 对矩阵A实施上下翻转的函数是flipud(A)。,4.2.2 矩阵的逆与伪逆 1
6、. 矩阵的逆 求一个矩阵的逆非常容易。求方阵A的逆可调用函数inv(A)。 例4.4 用求逆矩阵的方法解线性方程组。 命令如下: A=1,2,3;1,4,9;1,8,27; b=5,2,6; x=inv(A)*b 一般情况下,用左除比求矩阵的逆的方法更有效,即x=Ab。,2. 矩阵的伪逆 MATLAB中,求一个矩阵伪逆的函数是pinv(A)。 例4.5 求A的伪逆,并将结果送B。 命令如下: A=3,1,1,1;1,3,1,1;1,1,3,1; B=pinv(A) 例4.6 求矩阵A的伪逆。 在MATLAB命令窗口,输入命令: A=0,0,0;0,1,0;0,0,1; pinv(A),4.2.
7、3 方阵的行列式 求方阵A所对应的行列式的值的函数是det(A)。 例4.7用克莱姆(Cramer)方法求解线性方程组。 程序如下: D=2,2,-1,1;4,3,-1,2;8,5,-3,4;3,3,-2,2; %定义系数矩阵 b=4;6;12;6; %定义常数项向量 D1=b,D(:,2:4); %用方程组的右端向量置换D的第1列 D2=D(:,1:1),b,D(:,3:4); %用方程组的右端向量置换D的第2列 D3=D(:,1:2),b,D(:,4:4); %用方程组的右端向量置换D的第3列 D4=D(:,1:3),b; %用方程组的右端向量置换D的第4列 DD=det(D); x1=d
8、et(D1)/DD; x2=det(D2)/DD; x3=det(D3)/DD; x4=det(D4)/DD; x1,x2,x3,x4,4.2.4 矩阵的秩 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是一个满秩矩阵。,4.2.5 向量和矩阵的范数 1. 计算向量3种常用范数的函数 (1)norm(V)或norm(V,2) 计算向量V的2范数 (2)norm(V,1) 计算向量V的1范数 (3)norm(V,inf) 计算向量
9、V的范数 例4.8 已知V,求V的3种范数。 命令如下: V=-1,1/2,1; v1=norm(V,1) %求V的1范数 v2=norm(V) %求V的2范数 vinf=norm(V,inf) %求范数,2. 矩阵的范数及其计算函数 MATLAB中提供了求3种矩阵范数的函数,其函数调用格式与求向量的范数的函数完全相同 例4.9 求矩阵A的三种范数。 命令如下: 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
10、(A,inf) %求A的范数,4.2.6 矩阵的条件数和迹 1. 的条件数 MATLAB中,计算矩阵A的3种条件数的函数是: (1)cond(A,1) 计算A的1范数下的条件数 (2)cond(A)或cond(A,2) 计算A的2范数数下的条件数 (3)cond(A,inf) 计算A的 范数下的条件数 例4.10 求矩阵X的三种条件数。 命令如下: 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=2 2 3;4 5 -6;7 8 9; tra
11、ce(X) ans = 16,4.2.7 矩阵的特征值与特征向量 MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有3种: (1)E=eig(A) 求矩阵A的全部特征值,构成向量E。 (2)V,D=eig(A) 求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。 (3)V,D=eig(A,nobalance) 与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量。,例4.11 用3种不同的格式求A的特征值和特征向量。 命令如下: A=1,2,2;1,-1,1;4,-12,1; E=
12、eig(A) V,D=eig(A) V,D=eig(A,nobalance),例4.12用求特征值的方法解方程。 命令如下: p=3,-7,0,5,2,-18; A=compan(p); %A的友矩阵 x1=eig(A) %求A的特征值 x2=roots(p) %直接多项式p的零点 两种方法求得的方程的根是完全一致的,实际上,roots函数正是应用求友矩阵的特征值的方法来求方程的根。,4.2.8 MATLAB在三维向量中的应用 1. 向量共线或共面的判断 例4.13 设X=(1,1,1),Y=(-1,2,1),Z=(2,2,2),判断这三个向量的共线共面问题。 命令如下: X=1,1,1;Y=
13、-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. 向量方向余弦的计算 例4.14设向量V=(5,-3,2),求V的方向余弦。 建立一个函数文件direct.m: function f=f(v) r=norm(v); if r=0 f=0 else f=v(1)/r,v(2)/r,v(3)/r; end return 在MATLAB命令窗口,输入命令: v=5,-3,2; f=direct(v),3. 向量的夹角 例4.15 设U=(1,0,0),V=(0,1,0),求U
14、,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. 两点间的距离 例4.16 设 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. 向量的向量积 例4.17设U=(2,-3,1),V=(3,0,4),求UV。 命令如下: 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
15、=det(A1),det(A2),det(A3) UV= -12 -5 9 6. 向量的混合积 例4.18 设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 = 6,7. 点到平面的距离 例4.19求原点到平面X+Y+Z=1的距离。 命令如下: u=0,0,0;v=1,1,1; % A=B=C=1,u1=u2=u3=0,D=-1 r=abs(u*v-1)/norm(v,2) r = 0.5774,4.3 矩阵分解与线性方程组求解,4.3.1矩阵分解 1. 实对称矩阵的QDQ分解 例4.20设对称矩阵A,对A进行QDQ分解。 命令如下: 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.0000 1.0000 4.0000 6.0000 1.0000 2.0000 1.0000 5.0000 4.0000 1.0000