2014-01-10 2 views
2

Я хочу вычислить детерминант матрицы из ее разложения LUP в MATLAB. Определитель можно найти по следующей формуле:Учитывая LUP-разложение матрицы, как найти определитель в MATLAB?

enter image description here

Р является permutation matrix и S это количество обменов строк, необходимых для преобразования P в единичной матрице. Как найти S в приведенной выше формуле в MATLAB? Имеет ли он какие-либо заранее определенные функции и т. Д.?

ответ

3

Если интерпретировать P в качестве матрицы смежности, а вектор cycles содержит длину всех циклов в графе, описанных P, то S=sum(cycles) - length(cycles).

Теперь все осталось, чтобы найти длину всех циклов, для которых есть несколько функций в обмене файлами, например this one.

КСТАТИ: [L, U, P] = lu(A) и det(A) = det(inv(P))*det(L)*det(U)

+0

Функция на обмен файлами не принимает P в качестве матрицы смежности, потому что это не симметричны. Что я могу сделать? – user215721

+1

@ user215721 'симметричныйP = (P + P) '' – Jonas

+0

Большое спасибо! (опечатка в приведенном выше комментарии: symmetP = P + P ') – user215721

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