第三章矩阵与线性代数计算.doc

上传人:啊飒飒 文档编号:11552872 上传时间:2021-08-23 格式:DOC 页数:24 大小:199KB
返回 下载 相关 举报
第三章矩阵与线性代数计算.doc_第1页
第1页 / 共24页
第三章矩阵与线性代数计算.doc_第2页
第2页 / 共24页
第三章矩阵与线性代数计算.doc_第3页
第3页 / 共24页
第三章矩阵与线性代数计算.doc_第4页
第4页 / 共24页
第三章矩阵与线性代数计算.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《第三章矩阵与线性代数计算.doc》由会员分享,可在线阅读,更多相关《第三章矩阵与线性代数计算.doc(24页珍藏版)》请在三一文库上搜索。

1、第三章 矩阵与线性代数计算MATLAB,即“矩阵实验室”,它是以矩阵为基本运算单元。因此,本章从最基本的运算单元出发,介绍MATLAB的命令及其用法。3.1矩阵的定义由mn个元素aij(i=1,2,m;j=1,2,n)排列成的矩形阵称为一个m行n列的矩阵,或mn阶矩阵,可以简记为A=(aij) mn,其中的aij叫做矩阵的第i行第j列元素。当m=n时,称A为n阶方阵,也叫n阶矩阵;当m=1,n2时,即A中只有一行时,称A为行矩阵,或行向量(1维数组);当m2,n=1时,即A中只有一列时,称A为列矩阵,或列向量;当m=1,n=1时,即A中只有一个元素时,称A为标量或数量(0维数组)。3.2矩阵的

2、生成1.实数值矩阵输入MATLAB的强大功能之一体现在能直接处理向量或矩阵。当然首要任务是输入待处理的向量或矩阵。不管是任何矩阵(向量),我们可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(;)分隔。所有元素处于一方括号( )内;当矩阵是多维(三维以上),且方括号内的元素是维数较低的矩阵时,会有多重的方括号。如:【例3】矩阵的生成例。a=1 2 3;4 5 6;7 8 9b=1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9; 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9; 3 3

3、.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9Null_M = %生成一个空矩阵a = 1 2 3 4 5 6 7 8 9b = 1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 2.0000 2.1000 2.2000 2.3000 2.4000 2.5000 2.6000 3.0000 3.1000 3.2000 3.3000 3.4000 3.5000 3.6000 1.7000 1.8000 1.9000 2.7000 2.8000 2.9000 3.7000 3.8000 3.9000Null_M =2复数矩阵输入

4、复数矩阵有两种生成方式:【例32】 a=2.7;b=13/25; C=1,2*a+i*b,b*sqrt(a); sin(pi/4),a+5*b,3.5+1C= 1.0000 5.4000 + 0.5200i 0.8544 0.7071 5.3000 4.5000 【例33】矩阵的生成例。R=1 2 3;4 5 6, M=11 12 13;14 15 16CN=R+i*MR = 1 2 3 4 5 6M = 11 12 13 14 15 16CN = 1.0000 +11.0000i 2.0000 +12.0000i 3.0000 +13.0000i 4.0000 +14.0000i 5.000

5、0 +15.0000i 6.0000 +16.0000i3 大矩阵的生成对于大型矩阵,一般创建M文件,以便于修改:【例34】用M文件创建大矩阵,文件名为c3e4.mexm= 456 468 873 2 579 5521 687 54 488 8 1365 4567 88 98 21 5456 68 4589 654 5 987 5488 10 9 6 33 77在MATLAB命令窗口输入:c3e4;size(exm) %显示exm的大小ans= 5 6 %表示exm有5行6列。4 特殊矩阵的生成命令 全零阵函数 zeros格式 B = zeros(n) %生成nn全零阵B = zeros(m,

6、n) %生成mn全零阵B = zeros(m n) %生成mn全零阵B = zeros(size(A) %生成与矩阵A相同大小的全零阵命令 单位阵函数 eye格式 Y = eye(n) %生成nn单位阵Y = eye(m,n) %生成mn单位阵Y = eye(size(A) %生成与矩阵A相同大小的单位阵命令 全1阵函数 ones格式 Y = ones(n) %生成nn全1阵Y = ones(m,n) %生成mn全1阵Y = ones(m n) %生成mn全1阵Y = ones(size(A) %生成与矩阵A相同大小的全1阵命令 均匀分布随机矩阵函数 rand 格式 Y = rand(n) %

7、生成nn随机矩阵,其元素在(0,1)内Y = rand(m,n) %生成mn随机矩阵Y = rand(m n) %生成mn随机矩阵Y = rand(size(A) %生成与矩阵A相同大小的随机矩阵【例35】 产生一个34随机矩阵R=rand(3,4)R = 0.9501 0.4860 0.4565 0.44470.2311 0.8913 0.0185 0.6154 0.6068 0.7621 0.8214 0.7919【例36】 产生一个在区间10, 20内均匀分布的4阶随机矩阵a=10;b=20;x=a+(b-a)*rand(4)x = 19.2181 19.3547 10.5789 11.

8、3889 17.3821 19.1690 13.5287 12.0277 11.7627 14.1027 18.1317 11.9872 14.0571 18.9365 10.0986 16.0379命令 正态分布随机矩阵函数 randn格式 Y = randn(n) %生成nn正态分布随机矩阵Y = randn(m,n) %生成mn正态分布随机矩阵Y = randn(m n) %生成mn正态分布随机矩阵Y = randn(size(A) %生成与矩阵A相同大小的正态分布随机矩阵【例37】 产生均值为0.6,方差为0.1的4阶矩阵mu=0.6; sigma=0.1;x=mu+sqrt(sigm

9、a)*randn(4)x = 0.8311 0.7799 0.1335 1.0565 0.7827 0.5192 0.5260 0.4890 0.6127 0.4806 0.6375 0.7971 0.8141 0.5064 0.6996 0.8527命令 产生随机排列函数 randperm格式 p = randperm(n) %产生1n之间整数的随机排列【例38】整数的随机排列。randperm(6)ans = 3 2 1 5 4 6命令 产生线性等分向量函数 linspace格式 y = linspace(a,b) %在(a, b)上产生100个线性等分点y = linspace(a,b,

10、n) %在(a, b)上产生n个线性等分点命令 产生对数等分向量函数 logspace格式 y = logspace(a,b) %在( )之间产生50个对数等分向量y = logspace(a,b,n)命令 计算矩阵中元素个数n = numel(a) %返回矩阵A的元素的个数命令 产生以输入元素为对角线元素的矩阵函数 blkdiag格式 out = blkdiag(a,b,c,d,) %产生以a,b,c,d,为对角线元素的矩阵【例39】产生以输入元素为对角线元素的矩阵 out = blkdiag(1,2,3,4) out = 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 4命令

11、Magic(魔方)矩阵函数 magic格式 M = magic(n) %产生n 阶魔方矩阵【例310】产生3 阶魔方矩阵M=magic(3) M = 8 1 6 3 5 7 4 9 2 3.3矩阵的加减乘除运算1 加、减运算设u为一数量,A=(aij) mn和B=(bij) rs为两矩阵,则加减运算的规定为:对应元素相加、减,即按线性代数中矩阵的“十”,“一”运算进行。uA=(uaij) mnAB=( aij bij) mnu*A=(u*aij) mn【例311】矩阵的加减运算。输入:u=9a=1 2 3;4 5 6;7 8 0b=3 4 5;6 7 8;9 10 2c=u+ad=a-be=u

12、*a % 和数组运算相同结果:c = 10 11 12 13 14 15 16 17 9d = -2 -2 -2 -2 -2 -2 -2 -2 -2e = 9 18 27 36 45 54 63 72 02 矩阵的乘及乘方运算设u为一数量,A=(aij) ml和B=(bij) ln为两矩阵, A的列数l和B的行数l相等,可进行A与B 的乘法运算。这里cij=ai1b1j+ai2b2j+ailblj=它表示C的第i行第j列的元素是A第i行的各元分别与B第j列的各对应元的乘积的和。【例312】矩阵的乘及乘方运算。a=1 2 3;4 5 6;7 8 0f=1 2 3g=f*ah=f.*aa = 1

13、2 3 4 5 6 7 8 0g = 30 36 15? Error using = .*3.方阵的求逆单位矩阵:主对角线上的元素都是1,其他各元素都是0的n阶矩阵与任意n阶矩阵A左乘或右乘的乘积仍然是A自身,即EA=AE=A,因此我们叫E为n阶单位矩阵。对满秩方阵A,存在A-1,使A* A-1= A-1*A=E;我们称A-1是A的逆矩阵。命令 逆函数 inv格式 Y=inv(X) %求方阵X的逆矩阵。【例313】求的逆矩阵A=1 2 3; 2 2 1; 3 4 3;Y=inv(A)或Y=A(-1)则结果显示为Y = 1.0000 3.0000 -2.0000 -1.5000 -3.0000

14、2.5000 1.0000 1.0000 -1.0000【例314】求逆运算。 A=2 1 -1;2 1 2;1 -1 1; format rat %用有理格式输出 D=inv(A)D = 1/3 0 1/3 0 1/3 -2/3 -1/3 1/3 0 4除法运算右除:矩阵a右除以矩阵b定义为:a/b=a*b(-1)=a*inv(b)左除:矩阵b左除以矩阵a定义为:ab=a(-1)*b=inv(a)*bMatlab提供了两种除法运算:左除()和右除(/)。一般情况下,x=ab是方程a*x =b的解,而x=b/a是方程x*a=b的解。即:ax=ba(-1)*a*x=a(-1)*bX=inv(a)

15、*b=abxa=bX*a*a(-1)=b*a(-1)X=b*a(-1)=b*inv(a)=b/a【例315】除法运算a=1 2 3; 4 2 6; 7 4 9b=4; 1; 2;x=ab则显示:x=-1.5000 2.00000.5000在数组除法中,A./B表示A中元素与B中元素对应相除。5向量点积向量的点乘(内积):维数相同的两个向量的点乘。函数 dot格式 C = dot(A,B) %若A、B为向量,则返回向量A与B的点积,A与B长度相同;若为矩阵,则A与B有相同的维数。C = dot(A,B,dim) %在dim维数中给出A与B的点积【例316】向量点积X=-1 0 2;Y=-2 -1

16、 1;Z=dot(X, Y)则显示:Z = 46向量叉乘在数学上,两向量的叉乘是一个过两相交向量的交点且垂直于两向量所在平面的向量。在Matlab中,用函数cross实现。函数 cross格式 C = cross(A,B) %若A、B为向量,则返回A与B的叉乘,即C=AB,A、B必须是3个元素的向量;若A、B为矩阵,则返回一个3n矩阵,其中的列是A与B对应列的叉积,A、B都是3n矩阵。C = cross(A,B,dim) %在dim维数中给出向量A与B的叉积。A和B必须具有相同的维数,size(A,dim)和size(B,dim)必须是3。【例317】计算垂直于向量(1, 2, 3)和(4,

17、5, 6)的向量。 a=1 2 3; b=4 5 6; c=cross(a,b)结果显示: c= -3 6 -3可得垂直于向量(1, 2, 3)和(4, 5, 6)的向量为(-3, 6, -3)7混合积混合积由以上两函数实现:【例318】 计算向量a=(1, 2, 3)、b=(4, 5, 6)和c=(-3, 6, -3) 的混合积a=1 2 3; b=4 5 6; c=-3 6 -3;x=dot(a, cross(b, c)结果显示:x = 54注意:先叉乘后点乘,顺序不可颠倒。8张量积函数 kron格式 C=kron (A,B) %A为mn矩阵,B为pq矩阵,则C为mpnq矩阵。说明 A与B

18、的张量积定义为:AB与BA均为mpnq矩阵,但一般地ABBA。【例319】 求AB。A=1 2;3 4;B=1 2 3;4 5 6;7 8 9;C=kron(A,B)C = 1 2 3 2 4 6 4 5 6 8 10 12 7 8 9 14 16 18 3 6 9 4 8 12 12 15 18 16 20 24 21 24 27 28 32 363.4矩阵的行列式1 矩阵转置A=(aij) mn 的转置矩阵在数学中记为A=(aji) nm运算符:运算规则:若矩阵A的元素为实数,则与线性代数中矩阵的转置相同。若A为复数矩阵,则A转置后的元素由A对应元素的共轭复数构成。若仅希望转置,则用如下命

19、令:A.。2 方阵的行列式把行列式按第i行展开:其中Aij=(-1)i+jMij称为aij的代数余子式;而Mij是划去A中元aij所在的行及列得到的n-1阶子式,叫做aij的余子式。函数 det格式 d = det(X) %返回方阵X的多项式的值【例320】行列式的值。A=1 2 3;4 5 6;7 8 9A = 1 2 3 4 5 6 7 8 9D=det(A)D = 03 矩阵的秩子式:在(m,n)矩阵A中取某k个行,k个列,由这些行、列相交的元构成的k阶行列式,叫做A的k阶子式。n阶矩阵只有一个n阶子式,叫做矩阵行列式。用A或detA表示。矩阵的秩:矩阵A中不为零的子式的最高阶数如果是r

20、,就说A的秩是r。常用r(A)表示。即矩阵A的秩是矩阵A中最高阶非零子式的阶数;而向量组的秩通常由该向量组构成的矩阵来计算。n阶矩阵如果它的秩是n,叫做满秩矩阵,否则就是降秩矩阵。一般矩阵A mn中,如果r(A)=min(m,n),称A为满秩阵,否则r(A)min(m,n)称A为降秩阵。函数 rank格式 k = rank (A) %求矩阵A的秩k = rank (A,tol) %tol为给定误差【例321】求向量组,的秩,并判断其线性相关性。A=1 -2 2 3;-2 4 -1 3;-1 2 0 3;0 6 2 3;2 -6 3 4;k=rank(A)结果为k = 3由于秩为3 0时,v为上

21、方第k条对角线;当k0:抽取上方第k条对角线元素;k0为主对角线以上;k0为主对角线以上;k大于关系=大于或等于关系=B, C3=A=BC1 = 0 1 0 1 0 0 1 0C2 = 1 1 1 1 1 0 1 1C3 = 1 0 1 0 1 1 0 16矩阵逻辑运算设矩阵A和B都是mn矩阵或其中之一为标量,在MATLAB中定义了如下的逻辑运算:矩阵的与运算格式 A&B或and(A, B)说明 A与B对应元素进行与运算,若两个数均非0,则结果元素的值为1,否则为0。或运算格式 A|B或or(A, B) 说明 A与B对应元素进行或运算,若两个数均为0,则结果元素的值为0,否则为1。非运算格式

22、A或not (A)说明 若A的元素为0,则结果元素为1,否则为0。异或运算格式 xor (A,B)说明 A与B对应元素进行异或运算,若相应的两个数中一个为0,一个非0,则结果为0,否则为1。【例330】矩阵逻辑运算A=0 2 3 4;1 3 5 0,B=1 0 5 3;1 5 0 5A = 0 2 3 4 1 3 5 0B = 1 0 5 3 1 5 0 5C1=A&B,C2=A|B,C3=A,C4=xor(A,B)C1 = 0 0 1 1 1 1 0 0C2 = 1 1 1 1 1 1 1 1C3 = 1 0 0 0 0 0 0 1C4 = 1 1 0 0 0 0 1 13.6 集 合 运

23、算1两个集合的交集函数 intersect格式 c = intersect(a,b) %返回向量a、b的公共部分,即c= ab。c = intersect(A,B,rows) %A、B为相同列数的矩阵,返回元素相同的行。c,ia,ib = intersect(a,b) %c为a、b的公共元素,ia表示公共元素在a中的位置,ib表示公共元素在b中位置。【例331】两个集合的交集A=1 2 3 4;1 2 4 6;6 7 1 4A = 1 2 3 4 1 2 4 6 6 7 1 4B=1 2 3 8;1 1 4 6;6 7 1 4B = 1 2 3 8 1 1 4 6 6 7 1 4C=inter

24、sect(A,B,rows)C = 6 7 1 42两集合的差函数 setdiff格式 c = setdiff(a,b) %返回属于a但不属于b的不同元素的集合,C = a-b。c = setdiff(A,B,rows) %返回属于A但不属于B的不同行c,i = setdiff() %c与前面一致,i表示c中元素在A中的位置。【例332】两集合的差.A = 1 7 9 6 20; B = 1 2 3 4 6 10 20;c=setdiff(A,B)c = 7 93两个集合交集的非(异或)函数 setxor格式 c = setxor(a,b) %返回集合a、b交集的非c = setxor(A,B

25、,rows) %返回矩阵A、B交集的非,A、B有相同列数。c,ia,ib = setxor() %ia、ib表示c中元素分别在a (或A)、b(或B)中位置【例333】两个集合交集的非。A=1 2 3 4;B=2 4 5 8;C=setxor(A,B)C = 1 3 5 84两集合的并集函数 union格式 c = union(a,b) %返回a、b的并集,即c = ab。c = union(A,B,rows) %返回矩阵A、B不同行向量构成的大矩阵,其中相同行向量只取其一。c,ia,ib = union() %ia、ib分别表示c中行向量在原矩阵(向量)中的位置【例334】两集合的并集。A=

26、1 2 3 4;B=2 4 5 8;c=union(A,B)则结果为c = 1 2 3 4 5 83.7 线性方程的组的求解n个未知量的线性方程组可以写成系数矩阵为 加边(增广)矩阵为x=为一待求列向量 b=为一已知列向量由乘法定义有A*x=b由克莱姆定理有mn;方程为超定方程m=n时:如det(A)0,即A的秩r(A)=n,方程组有唯一解。x=Ab.如det(A)=0,即A的秩r(A)n, r(A) =r(B)方程组有无穷多解。如果r(A) r(B),方程组无解。线性方程组的无穷解 = 对应齐次方程组的通解+非齐次方程组的一个特解;其特解的求法属于解的第一类问题,通解部分属第二类问题。1求线

27、性方程组的唯一解或特解(第一类问题)利用矩阵除法求线性方程组的特解(或一个解)方程:AX=b解法:X=Ab【例335】 求方程组的解。解:A=5 6 0 0 0 1 5 6 0 0 0 1 5 6 0 0 0 1 5 6 0 0 0 1 5; B=1 0 0 0 1;R_A=rank(A) %求秩X=AB %求解运行后结果如下R_A = 5X = 2.2662 -1.7218 1.0571 -0.5940 0.31882 求线性齐次方程组的通解在Matlab中,函数null用来求解零空间,即满足AX=0的解空间,实际上是求出解空间的一组基(基础解系)。格式 z = null % z的列向量为方程组的正交规范基,满足。 % z的列向量是方程AX=0的有理基3 求非齐次线性方程组的通解非齐次线性方程组需要先判断方程组是否有解,若有解,再去求通解。因此,步骤为:第一步:判断AX=b是否有

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1