Doolittle分解法(LU分解法)的Python实现

本文介绍了如何使用Doolittle分解法,也称为LU分解法,来解决非奇异矩阵线性方程组。这种方法通过构建下三角矩阵L和上三角矩阵U来分解矩阵A。文章详细阐述了分解过程,并给出了一个具体的Python代码示例来演示这一过程。
摘要由CSDN通过智能技术生成

在解一般的非奇异矩阵线性方程组的时候,或者在迭代改善算法中,需要使用LU分解法。
对于一个一般的非奇异矩阵A=(a11, a12,…,a1n,a21,…ann),可分解为一个下三角矩阵L和一个上三角矩阵U。其中L的主对角线元素都是1.
希望得到一个M,最后在需要的时候将M拆分为L和U

M=[[u11 u12 u13 ...... u1n
    l21 u22 u23 ...... u2n
    l31 l32 u33 ...... u3n
    ......                 ]]
L=[[1   0   0......
	l21 1   0......
	l31 l32 1......
	......         ]]
U=[[u11 u12 u13......
	0   u22 u23......
	0   0   u33......
	......         ]]

doolittle分解法分两步进行
首先,根据已知A直接做出一个基矩阵M,其中,矩阵的第一行就是A的第一行,矩阵的第一列为A的第一列除以矩阵M的第一列的第一个元。即
u1j=a1j j=1,2,…,n
li1=ai1/u11, i=1,2,…,n
接着,从第二行开始,从第二列到最后一列一次求解M的元素,列数大于等于行数则属于U,否则属于L,有公式
ukj=akj-sum(lkmumj)(m∈(1, k-1)), j=1,2,…,n
lik=(aik-sum(lim
umk)(m∈(1, k-1)))/ukk, i=1,2,…,n
可以发现lik与ukj公式的区别只有lik多除以了一个ukk即这一列的对角线元
下面给出一个例子

A=[[1  2  -3
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值