大名鼎鼎的LU分解——Matlab解线性方程组(3)

目录

前言

一、伟大的LU分解法

1.前向消去的步骤

2.LU分解有啥用?

二、多出的一步

1.为什么要选主元?

2.为什么会这样捏?

总结


前言

        前文已经完成了铺垫,这里我们开始进行矩阵的LU分解。第一节我们看到了,因为求逆矩阵会导致运算时间增长、运算量增大,所以在一般求解线性方程组时,常用高斯消元的方法。将高斯消元法凝练、规范化,给出矩阵的LU分解法,将系数矩阵分解成L(乘子矩阵)、U(消元后的矩阵)和P(排列矩阵)——自己起的名字,反正就这么个玩意。


一、伟大的LU分解法

        其实之前已经接触到了LU分解的内容,最内核的就是高斯消元法,这也是在大学线性代数课程中教给大家的方法。

        总体上看来,高斯消元法包括了两个阶段:前向消去(forward elimination)和回代(back substitution)。

        前向消去要进行n-1步,其中第k步的工作是:将第k个方程以下的方程分别减去第k个方程的某个倍数,从而消去第k个变量

        回代有n步,意思是当所有前向消去都进行完成后,第n个方程此时应该只剩下一个变量,这时候就可以通过一步除法得出该变量的值,进而反代回第n-1个方程。此时n-1个方程只剩下两个变量,其中一个变量的值由上一步给出,同理循环即可求出所有变量

        这里需要注意一点,在前向消去时,如果第k行第k个变量的系数(主元)很小,则需要将k以下的某个方程中,第k个变量系数最大的那个换上来。这种方法看上去有点多余,但是在计算机运算中是必须的,下一条会讲到。

1.前向消去的步骤

        停!

        这个时候,需要回顾一下高斯消元整体的过程,要包括到每个细节:

        首先找到所有方程第一个变量系数最大的那个方程是哪个,然后把这个变量所在的方程交换到第一个来。这个过程用矩阵语言描述,就是:找到系数矩阵所有行第一列元素中最大的元素所在行,然后将这一行换到第一行来,形成一个新的系数矩阵。        进行这一步,需要进行一次行变换,用矩阵语言表示,就是需要堆系数矩阵A左乘一个排列矩阵P1:

A_{1}=P_{1}A

        然后,确认第一个方程第一个变量的系数为主元,依次消去剩下所有行的第一个变量的系数。具体做法为,先将主元乘以a1倍,然后与第二个方程第一个变量的系数加减抵消成0;再将主元乘以a2倍,与第三行第一个变量的系数加减抵消成0……,直到把第一个方程以下 所有方程 第一个变量 的系数全部 变成0.  用矩阵语言描述为:将第一行第一个元素确定为主元,然后把第一行的某个倍数加给第二行,用以消去第二行第一个元素,以此类推将第一行以下所有行的第一列元素变成0

        这里需要展开讲解:

        用第一节那个例子。假设矩阵为3*3的方阵,第一行主元是10,第二行第三行的第一个元素分别为-3和5 。 想用第一行的10消去第二行的-3,需要给第一行成0.3倍再加到第二行去。   想用第一行的10消去第三行的5,需要给第一行成0.5倍再减到第三行去。用矩阵表示为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值