计算方法LU分解c语言程序解线性方程组,LU分解求线性方程组的解

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

LU分解可以用来求逆矩阵,解线性方程组等。本文将介绍LU分解求线性方程组的解。

1.定义

如果A是一个方阵,A的LU分解是将A分解成如下形式:

94026417_1.png

其中L,U分别为下三角矩阵和上三角矩阵。

2.例子

对于如下矩阵A,对A进行LU分解

94026417_2

首先将矩阵第一列对角线上元素A11下面的元素通过矩阵初等行变换变为0,

94026417_3

然后再将矩阵第二列对角线上元素A22 下面的元素通过矩阵初等行变换变为0。

94026417_4

则得到的上三角矩阵就是U。这个时候,L也已经求出来了。通过将下三角形主对角线上的元素

都置为1,乘数因子放在下三角相应的位置(放在消元时将元素变为0的那个元素的位置),就

可以得到下三角矩阵L。如下:

94026417_5

对于L的构造,举个例子。如将第一列的元素2变为0时,第二行减去第一行乘以2,于是A21

就变成了0。这个乘数因子将元素A21变成了0,对应的,下三角矩阵L中对应位置的元素L21就为

乘数因子2。其它的与之类似。

3.LU分解程序实现(java实现)

通过上面举的例子,我们应该对LU分解的过程有了一个大致的了解。接下来可以看看程序

是怎么实现LU分解的,进一步加深对LU分解的了解。

/**

* Get matrix L and U. list.get(0) for L, list.get(1) for U

* @param a - Coefficient matrix of the equations

* @return matrix L and U, list.get(0) for L, list.get(1) for U

*/

private static List decomposition(double[][] a) {

final double esp = 0.000001;

double[][] U = a;

double[][] L = createIdentiyMatrix(a.length);

for(int j=0; j

if(Math.abs(a[j][j]) 

throw new IllegalArgumentException("zero pivot encountered.");

}

for(int i=j+1; i

double mult = a[i][j] / a[j][j];

for(int k=j; k

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值