LAPACK/BLAS 或其他地方是否有 Fortran 子例程来计算 LDL 分解?

发布于 2024-07-22 10:08:43 字数 166 浏览 15 评论 0原文

就像标题所说,我需要为我的正定矩阵 A 形成 cholesky LDL 分解(就像正常的 cholesky 一样,但有一个 L 的对角线,D 是对角矩阵)。 我在 Lapack 中只发现一个函数可以做到这一点,但它说矩阵 A 必须是三对角的。 是否有某种函数可以在像 lapack 这样的免费子例程库中执行此操作?

Like the title says, I need to form cholesky LDL decomposition for my positive definite matrix A (Like normal cholesky, but there's ones one diagonal of L, and D is diagonal matrix). I have found only one function in Lapack which does that, but it says the matrix A has to be tridiagonal. Is there somekind of function which does that in some free subroutine libraries like lapack?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空气里的味道 2024-07-29 10:08:43

查看 LAPACK 中的 SSPTRF 函数:

目的
=======

SSPTRF 计算存储的实数对称矩阵 A 的因式分解
使用 Bunch-Kaufman 对角旋转方法以打包格式:

A = U*D*U**T 或 A = L*D*L**T

其中 U(或 L)是排列和单位上(下)的乘积
三角矩阵,D 是对称的且块对角矩阵
1×1 和 2×2 对角线块。

此外,Golub 和 van Loan 的“矩阵计算”一书给出了进行分解的算法。 在我的第三版中,它位于第 138 页,第 4.1.2 节“对称性和 LDL^T 分解”。

Check out the SSPTRF function from LAPACK:

Purpose

=======



SSPTRF computes the factorization of a real symmetric matrix A stored
in packed format using the Bunch-Kaufman diagonal pivoting method:



A = U*D*U**T or A = L*D*L**T



where U (or L) is a product of permutation and unit upper (lower)
triangular matrices, and D is symmetric and block diagonal with
1-by-1 and 2-by-2 diagonal blocks.


Also, Golub and van Loan's "Matrix Computations" book gives an algorithm for doing the decomposition. In my third edition, it's on page 138, Section 4.1.2 "Symmetry and the LDL^T Factorization".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文