Решение матриц вида Ax = B ==> ошибка: матрица близка к сингулярной или плохо масштабируется

У меня проблемы с решением системы вида Ax = B

Решение системы должно быть

x = inv(A)*B

Однако это не не работает.

Я получаю следующее сообщение об ошибке, когда пытаюсь выполнить приведенную выше строку кода:

Warning: Matrix is close to singular or badly scaled.
     Results may be inaccurate. RCOND = 1.156482e-018. 

Похоже, что у Matlab возникли проблемы с инвертированием указанной мною матрицы. Я попытался убедиться, что обратная функция работает правильно, набрав inv (A) * A

. Это должно дать единичную матрицу, однако я получил ту же ошибку и несколько мусорных номеров.

Это матрица A, которую я использую:

A = [5/2   1/2  -1     0     0    -1/2  -1/2   0     0
     1/2   1/2   0     0     0    -1/2  -1/2   0     0 
    -1     0     5/2  -1/2  -1     0     0    -1/2   1/2
     0     0    -1/2   1/2   0     0     0     1/2  -1/2
     0     0    -1     0     3/2  -1/2   1/2   0     0
    -1/2  -1/2   0     0    -1/2   2     0    -1     0  
    -1/2  -1/2   0     0     1/2   0     1     0     0 
     0     0    -1/2   1/2   0    -1     0     2     0 
     0     0     1/2  -1/2   0     0     0     0     1]

Есть идеи, почему это не работает? Я также попытался преобразовать A в разреженную матрицу (sparse (A)), а затем запустить обратную команду. Никаких кубиков.

12
задан Stewie Griffin 5 January 2014 в 19:12
поделиться