2010-07-19 26 views
6

Existe-t-il un moyen de calculer le déterminant d'une matrice complexe?Déterminant d'une matrice complexe dans R

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' 

Répondre

3

Si vous savez que le polynôme caractéristique d'une matrice A se divise en facteurs linéaires, det alors (A) est le produit des valeurs propres de A, et vous pouvez utiliser eigen fonctions de valeur comme this de travailler autour de votre problème. Je suppose que vous voudrez toujours quelque chose de mieux, mais cela pourrait être un début.

+0

Pour le moment j'utilise aussi prod (valeurs propres (F4) $) –

4

Si vous utilisez prod (eigen (F4) valeurs de $) Je recommande prod(eigen(F4, only.values=TRUE)$values)
à la place.

Notez que le qr() est préconisé d'utiliser ssi vous ne souhaitez que la valeur absolue ou plutôt Mod():

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

donne la Mod(determinant(x))
{Dans X = QR, | det (Q) | = 1 et la diagonale de R est réel (en R au moins)}

BTW:. Avez-vous remarqué la mise en garde

Souvent, le calcul du déterminant est et non ce que vous devez faire pour résoudre un problème donné.

sur l'aide (déterminant) la page?