Определитель комплексной матрицы в R - PullRequest
6 голосов
/ 19 июля 2010

Есть ли способ вычислить определитель комплексной матрицы?

F4<-matrix(c(1,1,1,1,1,1i,-1,-1i,1,-1,1,-1,1,-1i,-1,1i),nrow=4)
det(F4)
Error in determinant.matrix(x, logarithm = TRUE, ...) : 
  determinant not currently defined for complex matrices

library(Matrix)
 determinant(Matrix(F4))
Error in Matrix(F4) : 
  complex matrices not yet implemented in Matrix package
Error in determinant(Matrix(F4)) : 
  error in evaluating the argument 'x' in selecting a method for function 'determinant'

Ответы [ 2 ]

4 голосов
/ 20 июля 2010

Если вы используете prod (eigen (F4) $ values) Я бы порекомендовал prod(eigen(F4, only.values=TRUE)$values)
вместо этого.

Обратите внимание, что qr() рекомендуется использовать тогда , который вас интересует только абсолютное значение, а точнее Mod():

 prod(abs(Re(diag(qr(x)$qr))))

дает Mod(determinant(x))
{В X = QR, | det (Q) | = 1 и диагональ R действительна (по крайней мере, в R).}

Кстати: вы заметили предостережение

Часто вычисление детерминанта не что вы должны делать решить данную проблему.

на странице справки (определителя)?

3 голосов
/ 19 июля 2010

Если вы знаете, что характеристический многочлен матрицы A разбивается на линейные множители, то det (A) является произведением собственных значений A, и вы можете использовать функции собственных значений, такие как this для работы вокруг вашей проблемы. Я подозреваю, что вы все еще хотите чего-то лучшего, но это может быть началом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...