根据我对LU分解的理解,这意味着对于下三角矩阵L和上三角矩阵U,矩阵A可以写为A= LU。
然而,scipy中与LU分解(lu
,lu_factor
,lu_solve
)相关的函数似乎涉及第三个矩阵P,使得A= PLU,P是置换矩阵( L,U与前面一样)。
这个排列矩阵的意义是什么?如果“真正的”LU分解总是可能的,为什么P不是单位矩阵呢?
发布于 2014-04-22 09:31:55
考虑高斯消去过程。如果轴上有一个零,你会怎么做?您必须交换行,这引入了一个P矩阵。
更重要的是,非常小的非零轴值会导致浮点环境中的数值不稳定。基本算法通过在透视表列中搜索具有最大绝对值的条目并将相应的行与透视表行进行切换来避免这种情况。
这种切换可能很昂贵,因此通常情况下,最大的绝对值条目必须比轴心的绝对值大一些,例如10,才会发生切换。这减少了开关的数量,但保留了限制浮点错误所需的开关。
在"LU factorization with partial“中搜索关于这个问题的任何数量的好资源。
注:由于P是置换矩阵,因此P^T = P^(-1)。因此,Ax =b具有与LUx = P^T b相同的解决方案(有些实现返回您所说的P,而另一些实现返回您所说的P^T并称之为P-确保您知道它是哪一个。这是'PA = LU‘和'A = PLU’之间的区别-P在每种情况下都不相同)。
发布于 2014-04-22 09:25:34
不是所有的矩阵都有LU分解。但是每个方阵至少有一个具有LU分解的行排列。
发布于 2014-04-23 07:34:54
添加到@DomJack:更改排列(也称为重新排序)也会影响L和U因子中的非零数。因此,在内存方面,重新排序可以导致更有效的因式分解。
https://stackoverflow.com/questions/23208640
复制相似问题