gpt4 book ai didi

c - LAPACKE_dgesvd(..) 中的参数 superbed 是什么意思?

转载 作者:太空狗 更新时间:2023-10-29 15:38:37 27 4
gpt4 key购买 nike

提出这样的问题会让人感到良心不安……尽管如此,我发现用谷歌搜索这个问题出奇地困难。我正在试验

lapack_int LAPACKE_dgesvd(
int matrix_order, char jobu, char jobvt,
lapack_int m, lapack_int n, double* a,
lapack_int lda, double* s, double* u, lapack_int ldu,
double* vt, lapack_int ldvt, double* superb);

promise 奇异值分解。已经不再害怕 Fortran 我在这里找到了一个信息金矿:http://www.netlib.no/netlib/lapack/double/dgesvd.f

实际上,该链接的目标解释了所有参数,但 LAPACKE 特定的double* super(以及顺序参数,但在 FORTRAN 中所有参数都是 COL_MAJOR)。

接下来,这里http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mkl_lapack_examples/lapacke_dgesvd_row.c.htm我发现了一个似乎暗示“这是某种工作缓存”的程序。

但是,如果这是真的,LAPACKE_dgesvd_work(..) 的原因是什么?

此外,我还有第二个问题:在示例中,他们使用 min(M,N)-1 作为 superbed 的大小。为什么?

最佳答案

根据 http://www.netlib.no/netlib/lapack/double/dgesvd.f , 关于 fortran 版本的参数 WORK :

WORK(工作空间/输出) double 组,维度(MAX(1,LWORK)) 退出时,如果 INFO = 0,WORK(1) 返回最优 LWORK;如果 INFO > 0,WORK(2:MIN(M,N)) 包含上双对角矩阵 B 的未收敛超对角线元素,其对角线在 S 中(不一定排序)。 B满足A = U * B * VT,故其奇异值与A相同,奇异 vector 与U、VT相关。

有可能 superb 是这个上双对角矩阵 B 的超对角线,它具有与 A 相同的奇异值。这也解释了长度 min(n,m)-1

查看从 http://www.netlib.org/lapack/ 下载的 lapack-3.5.0/lapacke/src/lapacke_dgesvd.c证实了这一点。

源代码还显示了高层函数lapacke_dgesvd()调用了中间层接口(interface)lapacke_dgesvd_work()。如果您使用高级接口(interface),则不必关心 WORK 的最佳大小。它将被计算并且 WORK 将在 lapacke_dgesvd()

中分配

我想知道使用中间层接口(interface)是否有任何好处......也许当这个函数在相同大小的小矩阵上被多次调用时......

再见,

弗朗西斯

关于c - LAPACKE_dgesvd(..) 中的参数 superbed 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21758782/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com