2016-11-09 3 views
0

Я хочу инвертировать матрицу Q + 1e-5 * np.eye (d) (размер d X d) и использовать следующий код для получения приблизительного результата.Обратная матрица в python

Q = X.dot(X.T) # X is a large sparse matrix, Q is singular 
P = np.linalg.inv(Q+1e-5*np.eye(d)) 

Но я получил это:

P=[[ nan nan nan ..., nan nan nan] 
    [ nan nan nan ..., nan nan nan] 
    [ nan nan nan ..., nan nan nan] 
    ..., 
    [ nan nan nan ..., nan nan nan] 
    [ nan nan nan ..., nan nan nan] 
    [ nan nan nan ..., nan nan nan]] 

Есть ли у кого-нибудь идеи?

+1

Вы хотите инвертировать сингулярную матрицу? – BadZen

+4

Вы знаете, что сингулярная матрица не имеет обратного, по определению, права? – Batman

+0

(Вы имеете в виду, что пытаетесь решить систему одновременных линейных уравнений, заданных сингулярной матрицей?) – BadZen

ответ

1

Необычная матрица по определению не имеет обратного. Основываясь на этом примере, похоже, что авторы numpy решили дать вам неопределенный результат вместо того, чтобы бросать ошибку, когда вы пытаетесь инвертировать матрицу, которая не может быть инвертирована.

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