引言

这是小编第二篇文章啦!其实纠结了很久作者该用什么自称比较好,于是度娘了一番,发现还真是有些讲究。小编或笔者是最常用的了吧。emmm纠结了一番(其实没纠结)还是自称小编吧,自称笔者感觉很客观很严肃,这里还是活泼一点阿哈哈哈~好,进入正题。

正文

因为矩阵分析的老师要求我们用程序实现LU分解,于是小编认真研究了一下LU分解的步骤,因为涉及矩阵运算,首先想到了用python的numpy实现。然后小编就开始码代码了!
经过小编反反复复的纠结与研究,LU分解的原理其实非常简单。首先高斯消元可以得到U,在高斯消元的过程中把每一次消元过程中的乘数(小编自己想的名词,大家领会精神)存储下来并记录该乘数的位置,就是L下三角矩阵中非主对角元素的值,再通过一个循环将主对角元素赋1就能得到L了。
难点就在于如何设置循环!小编为了探索循环的设置,手动拆解了一个三维矩阵:

A = np.array([[2., 2., 3.],[4., 7., 7.],[-2.,4., 5.]])

首先初始化LU为零矩阵

L = np.zeros(shape=(n,n))
U = np.zeros(shape=(n,n))

然后小编就开始拆解了

L[1,0]=A[1,0]/A[0,0]
A[1]=A[1]-L[1,0]*A[0]L[2,0]=A[2,0]/A[0,0]
A[2]=A[2]-L[2,0]*A[0]  L[2,1]=A[2,1]/A[1,1]
A[2]=A[2]-L[2,1]*A[1]

因为小编一开始就想到每次消元都是以一行为基准,后几行来消,所以就想到用base行来定义每次作为基准的行,于是,整理出来了base循环:

for base in range(n-1):L[1,base]=A[1,base]/A[base,base]A[1]=A[1]-L[1,base]*A[base]

一个循环解决了,之后就很容易发现规律了,在一个确定的基准行下进行消元时,是从第base+1行到最后一行,因此就得到另一个循环了:

for base in range(n-1):for i in range(base+1,n):L[i,base]=A[i,base]/A[base,base]A[i]=A[i]-L[i,base]*A[base]

循环问题解决,LU分解函数诞生!!

import numpy as np
def LU_decompose(A):n = len(A)L = np.zeros(shape=(n,n))U = np.zeros(shape=(n,n))for base in range(n-1):for i in range(base+1,n):L[i,base]=A[i,base]/A[base,base]A[i]=A[i]-L[i,base]*A[base]for i in range(n):#range(n) 范围:[0,n-1]L[i,i]=1U=np.array(A)print("L:")print(L)print("U:")print(U)A = np.array([[2., 2., 3.],[4., 7., 7.],[-2.,4., 5.]])
LU_decompose(A)

其中还遇到一个问题就是range()函数的范围问题,一定要注意!>o<

python实现LU分解相关推荐

  1. Python实现部分主元法下LU分解

    Python实现部分主元法下LU分解 ''' <矩阵分析与应用>小作业1 实现部分主元法下的LU分解 by苗栋 程序大体介绍: 引入了numpy便于对数组的操作 ①寻找出一列中绝对值最大的 ...

  2. Python 不完全LU分解

    A = sparse.csc_matrix([[1., 5., 0.], [5., 0., 2.], [0., 2., 0.]], dtype=float) B = linalg.spilu(A) # ...

  3. 【计算方法】实验二:python实现高斯消去、列主元高斯消去,LU分解分别求解线性方程组

    文章目录 题目 方法一:高斯消去法 结果截图 方法二:列主元素高斯消元法 结果截图 方法三:LU分解 结果截图 结果总结 题目 实现高斯消去.列主元高斯消去,LU分解分别求解线性方程组 方法一:高斯消 ...

  4. 数值分析——LU分解求解线性方程组的Python实现

    import numpy as np import math A=np.array([[1,2,3],[2,5,2],[3,1,5]]) # np.mat创建矩阵,np.arry创建数组 b=np.a ...

  5. 【机器学习中的矩阵分解】LU分解、QR分解、SVD分解

    学习总结 文章目录 学习总结 一.三角分解(LU分解) 1.1 高斯消元 1.2 LU分解原理 1.3 LU分解python代码 1.4 LU分解算法 二.QR分解 2.1 Schmid 正交化 2. ...

  6. 三阶矩阵的lu分解详细步骤_计算方法(三)矩阵分解2-LU分解

    LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积,作为解线性方程以及优化高斯消去法的一个分解方法,在后续文章中会使用到. 如下列方 ...

  7. 矩阵三角分解法(LU分解)

    矩阵分解法是高斯消元法的变形,它的复杂度和高斯消元法一样都是O(n^3),但是矩阵分解法在处理线性方程组系(具有相同的系数矩阵,但是右端项不同的方程组)时,运算比较方便. 下面是矩阵分解原理的原理: ...

  8. 高斯消去、列主元消去、Lu分解、追赶法(matlab)

    文章目录 一.高斯消去法 二.高斯列主元消去法 三.Lu分解 四.追赶法 一.高斯消去法 比如对与上面的这个方程组,用消去法解方程组的基本思想是用逐次消 去未知数的方法把原方程组 Ax = b 化为与 ...

  9. 高斯消元法对矩阵LU分解的影响

    ** 欢迎大家到Matlab与线性代数专栏中查看相关图文. ** 本文详细介绍了Matlab进行lu分解操作时l不为三角形的原理.

  10. 对矩阵分解的粗浅理解之LU分解

    ** 欢迎大家到Matlab与线性代数专栏中查看相关图文. ** 本图文从行列式计算出发引出了对矩阵LU分解的粗浅理解,希望对正在学习线性代数的同学有所帮助.

最新文章

  1. adb devices只显示List of devices attached
  2. Sublime Text 3 常用插件以及安装方法(转)
  3. 【怎样写代码】向现有类型“添加”方法 -- 扩展方法(二):扩展方法的实现与调用
  4. BIEE物理业务层编辑之后发布路径
  5. usb serial converter驱动安装_让你到期的机顶盒再发挥余热,终极办法任意安装软件,三网可用...
  6. STM32F4 HAL库开发 -- STM32CubeMX
  7. 在 CloudFoundry 环境下开发 multitenant 应用的一些基本概念
  8. Java制作VCARD
  9. 果断收藏!156页PPT全景展现全球区块链发展(附完整版下载手册)
  10. OpenShift 4 - Ingress、Route与Shard
  11. mysql 日期_「13」MySQL中与日期与时间相关的函数
  12. celery expires 让celery任务具有时效性
  13. 使用内存映射文件在进程间共享数据
  14. 基础篇:数据库 SQL 入门教程
  15. windows本地破解用户口令
  16. matlab参数摄动仿真,过程控制工程及仿真 基于MATLABSimulixnk_IT教程网
  17. 哪怕我变成一个庸俗女子
  18. 企业经营性icp许可证与非经营性icp的区别
  19. mac php dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib 亲测有效
  20. 【VS Nuget包数据源无效】

热门文章

  1. Ubuntu软件下载速度慢解决
  2. Tesseract-OCR识别 学习(一)命令识别
  3. .net快速开发框架源码分享
  4. 最全浏览器兼容性问题以及解决方案
  5. 百度网盘无提取码分享文件方法
  6. 密码编码学与网络安全学习笔记
  7. 在SQL 2014 Server上安装Northwind和Pubs示例数据库
  8. Appium自动化测试基础--补充:C/S架构和B/S架构说明
  9. ASP.NET操作EXCEL 合并单元格 大全
  10. Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(5):显示、NFC、overlay