当我只有一个总是应用枢轴的LU解算器时,如何进行LDL分解



我希望我只是错过了矩阵算术的一个简单技巧,但我遇到的问题是,我所能访问的只是一个LU求解器(Matlab LU*或SuperLU),我需要对称矩阵a的LDL分解。所以我想"没问题",因为LU分解是唯一的,LDL分解也是唯一的,所以D只是U的对角线。

但问题是它从来没有做过A=LU,而是PA=LU和PA不是对称的!所以我不知道如何从PA=LU 中确定A=LDL

我能做些简单的事情来解决这个问题吗?非常感谢您的帮助。

附言:先发制人:是的,我真的,真的,确实需要低密度脂蛋白分解。不是,没有其他选择。是的,我确信。不,你不需要我为你列出确切的问题来确认我确实需要LDL分解。

*我知道Matlab有自己的LDL函数,但我只是用它来原型,而C++(主要是SuperLU)中的库似乎没有任何这样的函数。

使用[L,U]=LU_decomposition(A)。然后计算D=Uinv(转置(L))。则它保持A=LU=L*D*L'。注意,D是右上三角形,因为inv(转置(L))和U是右上三角形。

显然,如果A是对称的,那么D是对称的并且你有你的LDLT分解。希望能有所帮助。

干杯,Martin

相关内容

  • 没有找到相关文章

最新更新