600 likes | 909 Views
Matlab 在线性代数中的应用. 一、行列式 二、矩阵运算 三、矩阵初等变换 四、求解线性方程组. Matlab 的最初设计目的就是为程序员或科研人员编写专业化的数值线性代数程序提供一个简单实用的接口。在 Matlab 的命令提示符下运行 help matfun 命令可以查看 Matlab 提供的所有与线性代数相关的函数。. 一、行列式. 1 、 二阶行列式. 2 、三阶行列式. (i) 每一项均是由取自不同行、不同列的三个元素的 乘积构成,除符号外可写为. “ +” 123 231 312 (偶排列)
E N D
Matlab在线性代数中的应用 一、行列式 二、矩阵运算 三、矩阵初等变换 四、求解线性方程组 Matlab的最初设计目的就是为程序员或科研人员编写专业化的数值线性代数程序提供一个简单实用的接口。在Matlab的命令提示符下运行help matfun命令可以查看Matlab提供的所有与线性代数相关的函数。
一、行列式 1、二阶行列式 2、三阶行列式
(i)每一项均是由取自不同行、不同列的三个元素的(i)每一项均是由取自不同行、不同列的三个元素的 乘积构成,除符号外可写为 “+” 123 231 312 (偶排列) “-” 321 213 132 (奇排列) (ii)符号为 (iii)项数为 3!=6
定义:n阶行列式 并冠以符号 的项的和。 (i) 是取自不同行、不同列的n个元素的乘积; (ii)行标按自然顺序排列,列标排列的奇偶性 决定每一项的符号; (iii) 表示对所有的 构成的n!个排列求和. 是所有取自不同行、不同列n个元素的乘积
3、排列 由自然数1,2,…,n,组成的一个有序数组i1i2…in 称为一个n级排列. (总数为 n!个) 如:由1,2,3可组成的三级排列有3!=6个: 123 132 213 231 312 321 4、 排列的逆序数 在一个n级排列i1i2…in中,若某两数的前后位置与大小顺序相反,即is>it(t>s),则称这两数构成一个逆序。排列中逆序的总数,称为它的逆序数,记为(i1i2…in)。 奇(偶)排列:若排列i1i2…in的逆序数为奇(偶),称它为奇(偶)排列.
高等教育出版社 同济大学数学教研室 编《工程数学——线性代数》(第三版)P7 练习:编写一个M函数求排列的逆序数: 输入:一个排列,如 k = [3 2 1 4 5] 输出:排列的逆序数 t = 5
克莱姆法则:如果n元线性方程组 克莱姆法则 则方程组有惟一解 的系数行列式
其中Dj (j=1,2,…,n) 是把系数行列式D中第j列的元素 换成方程组的常数项b1,b2,…,bn所构成的n级行列式, 即:
1、矩阵相等 定义 设有两个m×n矩阵 则称矩阵A和B相等. 记作A=B Matlab中,矩阵相等可用函数 isequal(A,B) 来判断
2、矩阵转置、共轭转置运算 对称矩阵:一个矩阵与其转置矩阵相等 isequal(A,A.’) == 1 反对称矩阵:一个矩阵与其转置矩阵的和为零矩阵 isequal(-A,A.’) == 1 • A’ 矩阵共轭转置 • A.’ 矩阵转置 转置的运算级别比加、减、乘、除等运算高
3、矩阵加法 定义 设有两个m×n矩阵 称为矩阵A与B的和. 记作 Matlab中,矩阵的加法就是 A + B
4、矩阵减法 Matlab中,矩阵减法就是 A - B
定义 数k与矩阵A的乘积记作kA或 A k,规定为 运算规律: 5、数与矩阵的乘法 (i) k(A+B)=kA+kB (ii) (k+h)A=kA+hB (iii) k(h A)=(k h)A (iv) 1A=A 其中A、B为m╳n 矩阵;k、h为数。 Matlab中,数与矩阵的乘法为:c*A 或c.*A,这里*和.*的结果是一样的。
6、矩阵的乘法 矩阵A与B的乘积是一个m×n矩阵 其中 记作C =AB Matlab中,矩阵与矩阵的乘法就是 A*B
7、方阵的迹 由n2个数排成的n×n矩阵: 称为n阶方阵。记作A=(aij ), i,j=1,2,…,n或 由方阵左上角元素到右下角元素表示的位置称为方阵的主对角线,主对角线元素的和称为方阵的迹,记作: Matlab中,方阵的迹用函数 trace(A) 实现,或用sum(diag(A))来实现
8、方阵的幂 定义:设A是一个n阶方阵,k为正整数, 称为A的k次幂. A k 就是k个A连乘.显然只有方阵的幂才有意义。 规定:A0=E (i) A k Al=A k+1 (ii)(A k)l=A k l 其中k、l为正整数. 例如 Matlab中,方阵的幂就是 A^k
9、矩阵多项式 Matlab中,方阵的多项式用函数polyvalm(p,A)实现。
在matlab中,一个一元多项式用一个行向量来表示的,向量元素为多项式系数的降幂排列,其中最后一个元素代表多项式中的0幂项。 在matlab中,一个一元多项式用一个行向量来表示的,向量元素为多项式系数的降幂排列,其中最后一个元素代表多项式中的0幂项。 p = [1,-5, 3] A = [2,-1;0,3] F = polyvalm(p,A)
定义:对于n阶方阵A,如果有一个n阶方阵B,使得 AB=BA=E,则方阵A称为可逆矩阵,简称A可逆。方阵B称为A的逆矩阵。记为A-1. 10、方阵的逆 注 (1) 这时矩阵B亦可逆,B的逆阵为A.即B-1=A. (2)如果方阵A可逆,则A的逆矩阵是惟一的. (3)可逆矩阵也称为非退化阵,也常被称为非奇异阵; 不可逆矩阵称为退化阵,也常被称为奇异阵. Matlab中,方阵的逆用函数inv(A)实现,或直接用A-1实现
练习 答案
求矩阵 X使满足 AXB = C 若A-1,B-1存在,则由A-1左乘上式,B-1右乘上式,有: A-1AXBB-1=A-1CB-1, (A-1A)X(BB-1 )=A-1CB-1, 即 X = A-1CB-1.
练习 答案
利用伴随矩阵求逆矩阵 定理矩阵A为可逆矩阵的充分必要条件是 并且当A可逆时,有
三、矩阵初等变换 Matlab中:A([i,j],:) = A([j,i],:) Matlab中:A(i,:) = k*A(i,:) Matlab中:A(i,:) =A(i,:) + k*A(j,:)
~ ~ ~ 1 1 2 1 4 ~ ~ 0 1 1 1 0 0 0 0 1 3 0 00 0 0 用matlab实现下面的初等变换 r1r2 1 1 2 1 4 r32 2 1 1 1 2 2 3 1 1 2 3 6 9 7 9 r2r3 r22 1 1 2 1 4 1 1 2 1 4 r32r1 r35r2 0 2 2 2 0 0 1 1 1 0 0 5 5 3 6 0 0 0 2 6 r43r1 r43r2 0 3 3 4 3 0 00 1 3 r3r4 r1r2 1 0 1 0 4 r42r3 r2r3 0 1 1 0 3 0 0 0 1 3 0 00 2 6 0 00 0 0 行阶梯形矩阵 行最简形矩阵
行阶梯形矩阵 经过初等行变换,可把矩阵化为行阶梯形矩阵,其特点是:可画出一条阶梯线,线的下方全为0;每个台阶只有一行,台阶数即是非零行的行数,阶梯线的竖线(每段竖线的长度为一行)后面的第一个元素为非零元,也就是非零行的第一个非零元. 例如
行最简形矩阵(reduced row echelon form) 经过初等行变换,行阶梯形矩阵还可以进一步化为行最简形矩阵,其特点是:非零行的第一个非零元为1,且这些非零元所在列的其它元素都为0. 例如 Matlab中,行最简形矩阵用函数rref()实现
用矩阵的初等行变换来解方程组 用矩阵的初等行变换来解方程组(1-1),其变换过程可与线性方程组的消元过程一一对照: (1-1)
最后得到的矩阵称为行阶梯矩阵,它对应于方程组(1-2),对该矩阵还可以继续进行行初等变换。最后得到的矩阵称为行阶梯矩阵,它对应于方程组(1-2),对该矩阵还可以继续进行行初等变换。 (1-2)
继续化简,得 (1-3)
最后得到最简行阶梯矩阵,它所对应的线性方程组即是方程组(1-3)。归纳起来,所谓行阶梯形矩阵,是指满足下列两个条件的矩阵: (1)如果有零行(元素全为零的行),则零行全部位于该矩阵的下方; (2)每个非零行(元素不全为零的行)的第一个非零元素(下称为基准元素),其前面零的个数随行数的增加而增加。 当行阶梯形矩阵进一步满足: (1)每行的基准元素取值都是1; (2)每行的基准元素所在列的其余元素都是零。 则称此矩阵为最简行阶梯形矩阵(或称行最简形)
综上所述,用矩阵初等行变换方法解线性方 程组的步骤是: • (1)写出线性方程组的增广矩阵,运用矩 阵的初等行变换把它化为行阶梯形矩阵(或 进一步化为行最简形)。 • (2)写出行阶梯矩阵(或行最简形)所表 示的方程组,对它进行求解。 [U0,ip] = rref(A) 输入可以是线性方程组的系数矩阵,也可以是其增广矩阵,输出是A的最简行阶梯形式U0,还可给出基准列的列号数组ip。
矩阵的标准形 对行阶梯形矩阵再进行初等列变换,可得到 矩阵的标准形,其特点是:左上角是一个单位矩 阵,其余元素都为0. 例如
四、求解线性方程组 对于方程Ax=b,如果A为方阵,则此方程称为恰定方程。解恰定方程可以用: (1)克拉默法则(最慢) (2)方阵的逆 (3)Matlab定义的矩阵的除法(最快)
矩阵的除法 / 右除 \ 左除 数学中没有定义矩阵的除法,这是matlab的定义 • 若 A 可逆方阵,则 A/B<==> A 的逆右乘 B <==> B*inv(A) A\B<==> A 的逆左乘 B <==> inv(A)*B • 通常,矩阵除法可以理解为 X=A\B<==> A*X=B X=B/A<==> X*A=B A 和 B 行数相等时才可进行左除 A 和 B 列数相等时才可进行右除
用矩阵除法求解求解恰定方程 Ax = b 利用除法求解时,不用先对矩阵A求逆,而是直接进行计算,即保证计算的精度,又节省大量的计算时间。 x = A\b
解 超定 方程组 • 对于方程Ax=b,rank(A)=min(r,c),其中r和c分别时矩阵A的行数和列数,并且等式的数量多于未知数的数量(即r>c)时,该方程组称为超定方程组。 • 超定方程组没有精确解。 • 在matlab中,求超定方程组的解时,使用矩阵左除或矩阵右除得到使平均误差e=A*x-y最小的解,该解被称为最小二乘解,(符合数据拟合的要求)
练习:多项式拟合的细节知识 某同学做实验测得如下数据: 设y和x之间满足: 若记: 则y和x之间的关系可改写成如下的矩阵形式: 由Matlab求出b就完成了多项式拟合。 。
解 欠定 方程组 • 在方程组A*x=b中,如果rank(A)=min(r,c),其中r和c分别时矩阵A的行数和列数,并且等式的数量少于未知数的数量(即r<c)时,该方程组称为欠定方程组。 • 欠定方程组存在无穷多个解,利用matlab可以求出其中的两个解。 • 一个解利用除法得到,该解在所有的解中0元素最多 • 另一个解通过计算x=pinv(A)*b得到,该解的长度(也叫范数)小于所有其他的解,因此又叫最小范数解。