大家好,欢迎来到IT知识分享网。
矩阵一些术语
奇异矩阵(降秩矩阵)
矩阵A是方阵,且该矩阵的秩不是满秩。
- 性质
非奇异矩阵(满秩矩阵)
矩阵A是方阵,且该矩阵的秩是满秩。
- 性质
1、矩阵A的行列式不等于0
2、由|A|≠0可知矩阵A可逆
3、AX=0有且只有唯一零解,AX=b有唯一解
矩阵的顺序主子式
设A为 阶矩阵,矩阵A的n阶顺序主子式为:
对角矩阵、上三角矩阵、下三角矩阵
- 对角矩阵
主队角元素非零,其他元素都是0.
- 数量矩阵
主队角元素相同的对角矩阵
- 单位矩阵
主队角元素都为1的对角矩阵
- 上三角矩阵
主对角线以下都是零的方阵称为上三角矩阵。
性质:
1、具有行列式为对角线元素相乘
2、上三角矩阵间的加减法和乘法运算的结果仍是上三角矩阵
3、上三角矩阵的逆矩阵也仍然是上三角矩阵
4、其逆矩阵对角线上的元素恰好是对应的原矩阵对角线上元素的倒数
5、与对角矩阵相乘结果还是上三角矩阵
- 下三角矩阵
主对角线以上都是零的方阵称为上三角矩阵。
高斯消去法矩阵描述(LU分解)
局限:仅能解决各主元素不为0的情况
设有n元线性方程组:
它写成矩阵形式为:Ax=b
如果A是非奇异矩阵,自然有解的紧凑形式x=A-1b。但当n很大时,用公式来计算A-1的元素是非常困难的。这也就是解线性方程组的Gauss消去法的产生原因,便于求解。
- 步骤
- 设A(0)=A ,b(0)=b
- 将矩阵的第 i 行分别减去矩阵第一行的倍数C = ai1(0)/a11(0),(i = 1、2……、n)即构造消元矩阵L,其中ci1 = ai1(0)/a11(0)。
于是可得到:
- 接着将步骤2得到的A(1),将矩阵的第 i 行分别减去矩阵第一行的倍数C= ai2(0)/a22(0),即构造第二个消元矩阵L2,其中ci2 = ai2(0)/a22(0)。
于是可得到:
- 重复下去,只要主对角线没有出现零值,一直到n-1步后,可得到
可得:Ln-1…L2L1A(0)=A(n-1)
所以: A = A(0) = L1-1 L2-1 …Ln-1-1A(n-1) = LA(n-1),其中L = L1-1 L2-1 …Ln-1-1
L是一个主对角元都是1的下三角矩阵,称为单位下三角矩阵。我们记U=A(n-1),则U是一个上三角矩阵,并且这时得到A的分解为:
A = LU (L是单位下三角矩阵,U是上三角矩阵) - 因为Ax = b,且A = LU ,设y = L-1b,则可得到下面两个方程:
y = L-1b (下三角方程组) 、Ux = y (上三角方程组) - 向前消去法:对于y = L-1b,其第1个方程只含y1,第2个方程只含y1和y2……也可以一个个地逐次求出y1,y2,…,yn。
- 向后回代法:对于Ux = y,其第n个方程只含xn,第n-1个方程只含xn和xn-1……因而可以一个个地依次求出xn,xn-1,…,x1,从而解出式中的解。
代码展示
matrix_a = np.mat([[1,4,7],[2,5,8],[3,6,11]],dtype=float) #系数矩阵A(3, 3) matrix_b = np.mat([1,1,1]).T #常数向量b(3,1) new_mat = np.hstack((matrix_a, matrix_b)) #增广矩阵 for i in range(0,new_mat.shape[0]-1): if matrix_a[i,i] == 0: #如果主对角线值为0,终止 print("error:主对角线值为0") break else: for j in range(i+1,new_mat.shape[0]): new_mat[j:j+1,:] = new_mat[j:j+1,:] - new_mat[i,:]*(new_mat[j,i]/new_mat[i,i]) #将矩阵的第 i 行分别减去矩阵第一行的倍数C = ai1(0)/a11(0) new_mat #得到A(n-1)和b(n-1)的增广矩阵 len_x = matrix_a.shape[0] #3 x = np.mat(np.zeros(len_x),np.float) #(1,3),存放解 x[0,len_x-1] = new_mat[len_x-1,len_x] / new_mat[len_x-1,len_x-1] #上三角矩阵,先求出xn的值 for i in range(len_x-2,-1,-1): #会带过程 try: x[0,i] = (new_mat[i,len_x] - np.sum(np.multiply(new_mat[i,i+1:len_x],x[0,i+1:len_x]))) / new_mat[i,i] except: print("error")
x = matrix([[-0., 0., 0. ]])
new_mat = matrix([[ 1., 4., 7., 1.],
[ 0., -3., -6., -1.],
[ 0., 0., 2., 0.]])
矩阵的三角分解 (LU、LDU)
定义: 设矩阵A∈Cn×n,如果方阵A可分解成一个下三角矩阵K和一个上三角矩阵U的乘积,即A=KU,则称A可做三角分解。如果A可分解成一个单位下三角(即主角线上元素皆为1)矩阵L和一个上三角矩阵U的乘积,即A=LU,则称A可做LU分解。如果A可分解成A=LDU,其中L是单位下三角矩阵,D是对角矩阵,U是单位上三角矩阵,则称A可做LDU分解。
由定义,我们首先指出:一个方阵的三角分解并不唯一。因为若A=KU是一个三角分解,那么取D是同阶的非奇异对角矩阵,则有下三角矩阵 K ~ \widetilde{K} K
=KD,上三角矩阵 U ~ \widetilde{U} U
= D-1U,则:
因此也是A = K ~ \widetilde{K} K
U ~ \widetilde{U} U
也是 一个三角分解。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/144634.html