2013-09-26 2 views
0

Мне нужно вычислить детерминант комплексной матрицы, которая является симметричной. Размер матрицы варьируется от 500 * 500 до 2000 * 2000. Есть ли у меня подпрограмма? Кстати, я использую ifort для компиляции.вычислительный детерминант комплексной матрицы fortran90

+0

Вы уверены, что вам действительно нужно вычислить определитель? Скорее всего, вы хотите получить соответствующее количество, такое как номер условия. В LAPACK существует несколько соответствующих подпрограмм (это входит в библиотеку Intel MKL, которую вы можете иметь, если у вас есть ifort). Согласно частому варианту LAPACK, существуют проблемы стабильности с использованием детерминант http://www.netlib.org/lapack/faq.html#_are_there_routines_in_lapack_to_compute_determinants – DaveP

ответ

1

Самый простой способ - сделать LU-разложение as described here. Я предложил бы использовать LAPACK для решения этой задачи ...

Это article имеет некоторый код в C делает, что для вещественной симметричной матрицы, поэтому вам необходимо обмениваться dspsv по zspsv для обработки двойной точности комплексных матриц.

Смежные вопросы