LU分解的实现

LU分解将矩阵转化为下三角和上三角矩阵的乘积,适用于不可逆矩阵。当矩阵的所有子式非零时,可进行LU分解。 LU分解在JAMA库中通过Crout/Doolittle算法实现,即使矩阵不可逆,只要满足特定秩条件也可进行分解。
摘要由CSDN通过智能技术生成

LU分解是将矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积。矩阵可以不是NxN的矩阵

一个可逆矩阵可以进行LU分解当且仅当它的所有子式都非零。如果要求其中的L矩阵(或U矩阵)为单位三角矩阵,那么分解是唯一的。同理可知,矩阵的LDU可分解条件也相同,并且总是唯一的。
即使矩阵不可逆,LU仍然可能存在。实际上,如果一个秩为k的矩阵的前k个顺序主子式不为零,那么它就可以进行LU分解,但反之则不然。
目前,在任意域上一个方块矩阵可进行LU分解的充要条件已经被发现,这些充要条件可以用某些特定子矩阵的秩表示。用高斯消元法来得到LU分解的算法也可以扩张到任意域上。
任意矩阵A(不仅仅是方块矩阵)都可以进行LUP分解。其中的L和U矩阵是方阵,P矩阵则与A形状一样。

这里给出高斯消元法的思想

Matrix A (M x N) 
for(column index i from 1 to N){
	select max(A[i][i...M]), swap to row i //第i列中从第i行到第N行绝对值最大值元素的行作为第i行
	if(A[i][i] is not zero){
		for(row index j from i + 1 to M){
			A[j][i] /= A[i][i]
			for(column index k from i + 1 to N){
				A[j][k] -= A[j][i] * A[i][k]
			}
		}
	}
}


L如下

1, 	0, 	0, ... 	, 	0
A[21], 	1,	0, ...	,	0
A[31],	A[32],	1, ...	,	0
A[41],	A[42],	A[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值