python 矩阵元素变为整形_矩阵论分解系列--LU分解及python实现

92ce558eed276e29b6ae725678f64200.png

哈喽,大家好,矩阵论是小师兄正在学习的课程,我总结了一些矩阵分解的资料,如解法、python代码等,将会陆续上传到知乎专栏/WX公众号(信通小师兄),欢迎各位小伙伴关注!

fd00acb18fca84a7724aeb853c69ecc2.png

言归正传,回到今天的主题--LU分解。

LU分解在本质上是高斯消元法的一种表达形式。

敲重点:LU变换实质上是将A通过初等行变换变成一个上三角矩阵,其变换矩阵就是一个单位下三角矩阵。

下面为大家介绍LU的分解步骤,并给一道例题做详细解答,同时用python进行编程,需要python代码的可以下文复制粘贴,也可以回复关键词:LU分解,获取代码文件。

  1. LU分解就是将系数矩阵A转变成等价两个矩阵L和U的乘积 ,其中L和U分别是单位下三角矩阵和上三角矩阵。
  2. 当A的所有顺序主子式都不为0时,矩阵A可以分解为A=LU。其中L是下三角矩阵,U是上三角矩阵。
  3. 它就是从下至上地对矩阵A做初等行变换,将对角线左下方的元素变成零,然后再证明这些行变换的效果等同于左乘一系列单位下三角矩阵的过程。
  4. 这一系列单位下三角矩阵的乘积的逆就是L矩阵,它也是一个单位下三角矩阵。这类算法的复杂度一般在(三分之二的n三次方) 左右。
  5. 实际上,我们可以直接处理矩阵,得到矩阵的LU分解,这就是矩阵的直接LU分解;直接通过矩阵的元素得到计算LU元素的递推公式,不需要任何中间步骤。

1.LU分解的直接分解法(Doolittle/杜利特尔)

3e53b9bdef008d97a6c66b7759d39bfb.png

c00e414ed6a14d96fe3021099e660274.png

以上的四个公式记住,就足以应对矩阵论的期末考试了

不过还是要再补充一些定理。

76dcce732247eece610582df16d4b8be.png

9e7d953a0c520753d6bc2cfb7a9dc946.png

现在提供一道例题,供大家练习

4b9ed877bb80000e517e867b7a10936e.png

f39356b3c56b4805f894e61aad81b6e2.png

以下是python编程的代码:

LU分解的python代码实现

import numpy as np

import pandas as pd

np.random.seed(2)

def LU_decomposition(A):

n = len(A[0])

L = np.zeros([n, n])

U = np.zeros([n, n])

for i in range(n):

L[i][i] = 1

if i == 0:

U[0][0] = A[0][0]

for j in range(1, n):

U[0][j] = A[0][j]

L[j][0] = A[j][0] / U[0][0]

else:

for j in range(i, n): # U

temp = 0

for k in range(0, i):

temp = temp + L[i][k] * U[k][j]

U[i][j] = A[i][j] - temp

for j in range(i + 1, n): # L

temp = 0

for k in range(0, i):

temp = temp + L[j][k] * U[k][i]

L[j][i] = (A[j][i] - temp) / U[i][i]

return L, U

if __name__ == '__main__':

# A=np.random.randint(1,10,size=[3,3]) #注意A的顺序主子式大于零

A = [[1,2,3,4],[3,4,1,2],[4,1,2,3],[2,3,4,1]]

L, U = LU_decomposition(A)

print("L矩阵是:",L)

print("U矩阵是:",U)

下一篇给大家带来矩阵的QR、Schur、奇异值分解的步骤以及python代码的实现

8d8c864bc4bdead73fc7e27cdf6c3eab.gif

参考文献:

[1]戴华.矩阵论[M]北京:科学出版社.2001

[2]CSDN. LU分解[DB/CD].https://blog.csdn.net/reborn_lee/article/details/80947090

c3ed6c3e1b83e39b0eced08bd4cb2ed4.gif
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值