Существует ли способ вычислить детерминант сложной матрицы?
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'
Если вы используете prod (eigen (F4) $ values)
Я бы рекомендовал
prod (eigen (F4, only.values = TRUE) $ values)
вместо этого.
Обратите внимание, что qr ()
рекомендуется использовать , если вас интересует только
абсолютное значение или, скорее, Mod ()
:
prod(abs(Re(diag(qr(x)$qr))))
дает Mod (определитель (x))
{В X = QR, | det (Q) | = 1 и диагональ R реально (по крайней мере, в R).}
BTW: Вы обратили внимание на оговорку
Часто вычисление определителя а не то, что вам следует делать для решения данной проблемы.
на справочной (определяющей) странице?
Если вы знаете, что характеристический полином матрицы A разбивается на линейные множители, тогда det (A) является произведением собственных значений A, и вы можете использовать функции собственных значений, такие как этот , чтобы обойти вашу проблему. Я подозреваю, что тебе все равно захочется чего-нибудь получше, но это может быть началом.