Получение сообщения об ошибке 'LinAlgError: Singular matrix' с матрицей полного ранга при использовании Numpy - PullRequest
1 голос
/ 14 июля 2020

Я использую Python 3.7 и Numpy 1.16.5.

Я пытался использовать следующий код:

import numpy as np

M = [[np.eye(3), np.zeros((3,3))],[temp4, np.eye(3)]]
FTp = [[-0.0003],[0.0008],[0.0008],[0.0055],[0.0020],[0.0044]]
FT = np.linalg.solve(M,FTp)

Цель этого кода - получить левое деление между M и FTp (FT = M \ FTp).

temp4 - это матрица 3x3 с пользовательскими значениями. Какое бы значение не было temp4, матрица M должна быть полностью ранжированной.

Однако, когда я попытался запустить этот код, я получил следующее сообщение:

LinAlgError : Сингулярная матрица

Что вызвало эту ошибку и как ее исправить?

1 Ответ

2 голосов
/ 14 июля 2020

Использование np.block для создания 2d-массива, начиная с 2d-блоков:

import numpy as np

tmp = np.random.rand(3,3)
M = np.block([[np.eye(3), np.zeros((3,3))],[tmp, np.eye(3)]])
M.shape # (6, 6)

FTp = [[-0.0003],[0.0008],[0.0008],[0.0055],[0.0020],[0.0044]]
FT = np.linalg.solve(M,FTp)

FT
array([[-0.0003    ],
       [ 0.0008    ],
       [ 0.0008    ],
       [ 0.00477519],
       [ 0.0014083 ],
       [ 0.00380704]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...