gpt4 book ai didi

c++ - LAPACKE_zheevx() 收敛失败——如何在 C++ 中使用 2*DLAMCH ('S' 增加 ABSTOL?

转载 作者:行者123 更新时间:2023-11-30 01:42:46 24 4
gpt4 key购买 nike

这是一个关于在 C++ 中使用 LAPACKE_zheevx() 函数为特征值计算的收敛设置适当的公差(“abstol”)的问题。

当 LAPACKE_zheev() 在使用默认值“abstol”(即 abstol=-1)计算特征值/特征向量时无法收敛时,LAPACK 手册说要设置 abstol=2*DLAMCH('S')。但是,DLAMCH 是 Fortran 函数,我使用的 C++ 无法将其识别为有效的 C++ 函数。谁能帮我在使用 C++ 的 LAPACK 时(即使用 LAPACKE 时)如何正确设置“abstol=2*DLAMCH('S')”?

非常感谢!!

背景:LAPACKE 是 LAPACK(用于数值代数的 Fortran 库)的 C++ 接口(interface)。 LAPACKE_zheevx() 是 LAPACKE 的 C++ 接口(interface),用于 LAPACK 的 ZHEEVX() 函数。

关键词:LAPACK、LAPACKE、C++、ABSTOL、DLAMCH、收敛、特征值、特征向量

最佳答案

我对这些库一无所知,但谷歌搜索显示有一个对应的 LAPACKE_dlamch()功能:

double LAPACKE_dlamch(char cmach)

因此您应该能够将 LAPACKE_dlamch('S') 作为 LAPACKE_zheevx()abstol(第 12 个)参数传递:

lapack_int LAPACKE_zheevx (
int matrix_layout,
char jobz,
char range,
char uplo,
lapack_int n,
lapack_complex_double *a,
lapack_int lda,
double vl,
double vu,
lapack_int il,
lapack_int iu,
double abstol,
// ^^^^^^^^^^^^^
lapack_int *m,
double *w,
lapack_complex_double *z,
lapack_int ldz,
lapack_int *ifail
)

关于c++ - LAPACKE_zheevx() 收敛失败——如何在 C++ 中使用 2*DLAMCH ('S' 增加 ABSTOL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39004426/

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