На основании документов
http://www.gnu.org/software/gsl/manual/html_node/Householder-Transformations.html
и
http://en.wikipedia.org/wiki/Householder_transformation
Я полагал, что следующий код успешно создаст матрицу для отражения в плоскости, ортогональной единичному вектору normal_vector
.
gsl_matrix * reflection = gsl_matrix_alloc(3, 3);
gsl_matrix_set_identity(reflection);
gsl_linalg_householder_hm(2, normal_vector, reflection);
Однако, насколько я могу судить, результат не является матрицей отражения. В частности, в моем случае оно имеет действительное собственное значение - (2 + 1/3), что невозможно для матрицы отражения.
Итак, мои вопросы:
(1) Что я делаю не так? Мне кажется, это должно сработать.
(2) Если такой подход не работает, кто-нибудь знает, как построить такую матрицу, используя gsl?
[В качестве последнего замечания я понимаю, что gsl предоставляет функции для применения преобразований Домохозяев без фактического нахождения матриц. Мне действительно нужны матрицы в моем случае для другой работы.]