LAPACKE_dgesvd(..)中的参数精湛是什么意思?

马库斯·赫尔曼

提出这样的问题会让人感到良心不安...不过,我发现使用谷歌搜索它出奇地困难。我正在尝试

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);

这保证了奇异的价值分解。已经停止担心Fortran了,我在这里找到了一个信息黄金矿:http : //www.netlib.no/netlib/lapack/double/dgesvd.f

实际上,该链接的目标说明了所有参数,但LAPACKE特定的double *一流(很好,还有顺序参数,但在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作为高超的大小。为什么?

弗朗西斯

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

WORK(工作区/输出)DOUBLE PRECISION数组,维数(MAX(1,LWORK))在退出时,如果INFO = 0,则WORK(1)返回最佳LWORK;否则,返回0。如果INFO> 0,则WORK(2:MIN(M,N))包含对角线为S(不一定排序)的上对角线矩阵B的未收敛超对角线元素。B满足A = U * B * VT,因此它具有与A相同的奇异值,并且具有与U和VT相关的奇异向量。

极好是该上对角线矩阵的超对角线B,具有与A相同的奇异值。这也解释了长度min(n,m)-1

查看从http://www.netlib.org/lapack/下载的lapack-3.5.0 / lapacke / src / lapacke_dgesvd.c可以确认。

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

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

再见,

弗朗西斯(Francis)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章