Разногласия в получении обратной матрицы Sympy двумя способамиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Разногласия в получении обратной матрицы Sympy двумя способами

Сообщение Anonymous »

Я пытаюсь инвертировать простую числовую матрицу в Sympy. Начну с матрицы:

Код: Выделить всё

In [56]: A_MATRIX_M
Out[56]:
⎡0.174683794941032   0.174688696013867   0.174688696013957   0.174683794941032   0.174688696013867   0.174688696013957 ⎤
⎢                                                                                                                      ⎥
⎢0.152985639387222   0.153053070078189   0.153053070078123   0.152985677401143   0.153053070078189   0.153053070078123 ⎥
⎢                                                                                                                      ⎥
⎢0.122289719307085    0.12255894161074    0.12255894161075   0.122289780080333    0.12255894161074    0.12255894161075 ⎥
⎢                                                                                                                      ⎥
⎢0.0888623464387251  0.0894599879866164  0.0894599879864983  0.0888623905998649  0.0894599879866165  0.0894599879864984⎥
⎢                                                                                                                      ⎥
⎢0.0584375462953993  0.0593271595778474  0.0593271595779078  0.0584375753365935  0.0593271595778473  0.0593271595779078⎥
⎢                                                                                                                      ⎥
⎣0.034711924284652   0.0356325950288525  0.035632595028856   0.0347119415351321  0.0356325950288525  0.035632595028856 ⎦
Я могу получить обратное с помощью .inv():

Код: Выделить всё

In [59]: A_M_INV.inv()
Out[59]:
⎡-4.20862006694537e-38  -3.64678015602041e-38  -4.89393679687261e-39  -5.26008046298975e-38  -1.29781892788192e-38  1.12107780599699e-37 ⎤
⎢                                                                                                                                        ⎥
⎢-1.19250990841802e-38  -1.17838767512258e-38  -5.49930182641769e-39  -1.79347381150519e-38  -3.76673961453884e-39  3.67594291864767e-38 ⎥
⎢                                                                                                                                        ⎥
⎢1.27521806859415e-38   1.38241733868129e-38   1.33016305680983e-39   1.89098712400354e-38   7.63333345652249e-39   -4.07574230117266e-38⎥
⎢                                                                                                                                        ⎥
⎢-3.71566091342595e-39  -3.69178932808298e-39  -1.37147644288023e-39  -4.68481431180264e-39  -3.97158856857654e-39  8.39451101073365e-39 ⎥
⎢                                                                                                                                        ⎥
⎢1.47794212524182e-38   1.21859956435038e-38   7.46216287435121e-40   2.08223967916098e-38   8.25097707225834e-39   -4.0465253879286e-38 ⎥
⎢                                                                                                                                        ⎥
⎣-2.5158985894826e-39   -3.62021834376681e-39  -3.99023376900161e-40   -5.881653010039e-39   -3.44892577031322e-39  6.50635833262352e-39 ⎦
Однако я также смогу получить обратное значение, разделив сопряженную матрицу на определитель матрицы. Однако он дает совершенно другой ответ:

Код: Выделить всё

In [57]: A_M_INV = A_MATRIX_M.adjugate() / A_MATRIX_M.det()

In [58]: A_M_INV
Out[58]:
⎡-1.03014934740997e+38  9.76285991918083e+37   -2.61712726811554e+38  -2.91755290755826e+38  2.02091254231468e+37   8.60970411767247e+37 ⎤
⎢                                                                                                                                        ⎥
⎢-1.0350460657459e+38   1.09196345494244e+38   1.65391718422458e+38   -4.62921116834264e+37  -4.10946591995717e+38  -2.93534695043802e+38⎥
⎢                                                                                                                                        ⎥
⎢3.44664755653471e+37   -1.86912642859017e+38  -8.76351586189679e+37  -2.26077970623935e+38  -1.67328014514703e+37  1.00789976403353e+38 ⎥
⎢                                                                                                                                        ⎥
⎢1.82916593489888e+37   -8.10152924803704e+37  -1.33638262519626e+38  2.88888937621382e+38   1.19814518627368e+38   -3.22157029803083e+38⎥
⎢                                                                                                                                        ⎥
⎢6.14049097203001e+37   2.94210971355518e+37   5.88396356342516e+37   -2.59752889211905e+38   1.036688778158e+38    1.24211877586664e+38 ⎥
⎢                                                                                                                                        ⎥
⎣-4.62263666898771e+37  2.94055576923073e+37   -1.04165393746291e+38  -2.89791317977202e+37  -5.86035000752247e+37  -1.95539341633241e+38⎦
Вот пример, где кто-то другой использует этот метод для инвертирования матрицы:
Почему Sympy.Matrix.inv работает медленно?< /p>
Почему они разные? Попытка использовать это обратное уравнение для решения простого уравнения показывает, что ни одно из них не является правильным обратным уравнением. Я не уверен, что может пойти не так; это из-за больших показателей степени или точности, необходимой для описания матрицы?
Заранее спасибо за вашу помощь!
РЕДАКТИРОВАТЬ: с @Jared's Помогите ниже, я еще немного покопался и нашел этот вопрос: результаты обратной матрицы в MATLAB и Python различаются теперь, когда я знаю, что моя матрица плохо обусловлена/по существу сингулярна, что не позволяет ей иметь четко определенную обратную матрицу.

Подробнее здесь: https://stackoverflow.com/questions/782 ... n-two-ways
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Перестановка многомерной матрицы. Разногласия между Джулией и Python
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Перестановка многомерной матрицы. Разногласия между Джулией и Python
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Перестановка многомерной матрицы. Разногласия между Джулией и Python
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Перестановка многомерной матрицы Разногласия между Джулией и Python
    Anonymous » » в форуме Python
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Перестановка многомерной матрицы Разногласия между Джулией и Python
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»