如何在C中使用GSL库来对Hermitian矩阵进行对角化?

时间:2014-11-04 05:30:15

标签: c gsl

我对C编程语言有基本了解。我知道循环结构,数组和控制语句。突然间,我需要知道如何使用 C语言中的 GSL库对Hermitian矩阵进行对角化。安装GSL不是问题。但我想知道如何将它用于此特定目的。我这几天正在阅读GSL手册,但是会非常感谢一个简明扼要的答案吗?

1 个答案:

答案 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)