我对C编程语言有基本了解。我知道循环结构,数组和控制语句。突然间,我需要知道如何使用 C语言中的 GSL库对Hermitian矩阵进行对角化。安装GSL不是问题。但我想知道如何将它用于此特定目的。我这几天正在阅读GSL手册,但是会非常感谢一个简明扼要的答案吗?
答案 0 :(得分:1)
首先查看15.2 Complex Hermitian Matrices部分。
要计算您首先要在此处查看的特征值:
gsl_eigen_herm_workspace * gsl_eigen_herm_alloc (const size_t n)
此函数分配用于计算特征值的工作空间 n-by-n复杂的Hermitian矩阵。工作空间的大小为O(3n)。
然后看看:
int gsl_eigen_herm (gsl_matrix_complex * A, gsl_vector * eval, gsl_eigen_herm_workspace * w)
该函数计算复Hermitian矩阵的特征值 A.必须在w中提供适当大小的附加工作空间。 A的对角线和下三角形部分在此期间被摧毁 计算,但没有参考严格的上三角部分。 假设对角线的虚部为零,而不是 引用。特征值存储在向量eval中并且是 无序的。
特征值和特征向量可以使用:
找到gsl_eigen_hermv_workspace * gsl_eigen_hermv_alloc (const size_t n)
int gsl_eigen_hermv (gsl_matrix_complex * A, gsl_vector * eval, gsl_matrix_complex * evec, gsl_eigen_hermv_workspace * w)