2016-05-31 2 views
-1

R 0.99.893 решения() на Windows 10 - Ошибка в solve.default (а)Пытаясь вычислить инверсию квадратной матрицы

Пытаясь вычислить обратную квадратной матрицы, но получаю сообщение об ошибке:

a <- matrix(1:16, 4,4) solve(a) Error in solve.default(a) : Lapack routine dgesv: system is exactly singular: U[3,3] = 0

Я также попытался решить (a, diag (4)), но получил ту же ошибку.

+2

Это хорошая идея для Google такие сообщения об ошибках перед отправкой вопросов. Это привело бы вас к дублированию вопросов, например, указанных выше. – nrussell

+1

R версия 0.99.893? Это должно быть больше 15 лет. Теперь мы находимся на версии 3.3.0. Вы должны рассмотреть возможность обновления. (R studio и R - отдельные части программного обеспечения). – lmo

+0

@ ZheyuanLi Очень неприятно, что люди объединяют две части программного обеспечения, поскольку один предшествует другому, по меньшей мере, 10 лет. (и, технически, последняя версия - 0.99.902 :)) – lmo

ответ

2

Не все матрицы имеют обратные. Проверьте, является ли ваша матрица особой, то есть проверьте, равен ли ее определитель 0. Сингулярные матрицы не имеют обратного.

2

К сожалению, эта матрица вырождена:

a <- matrix(1:16, 4, 4) 

1 5 9 13 
2 6 10 14 
3 7 11 15 
4 8 12 16 

Почему? См. Это:

a[, 3, drop = FALSE] + a[, 2, drop = FALSE] - a[, 1, drop = FALSE] 

    [,1] 
[1,] 13 
[2,] 14 
[3,] 15 
[4,] 16 

ровно a[, 4, drop = FALSE].

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

Фактически, матрицы типа a <- matrix(1:(n*n), n, n) являются особыми, для любых n > 2. Вы можете доказать, что эти матрицы имеют только ранг 2, независимо от того, насколько велика n.

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

  • Нет связанных вопросов^_^