Как умножить ряд матриц вместе? - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть numpy массив матриц, который я пытаюсь умножить вместе в форме A * B * C * D, где A - первая матрица, B - вторая и так далее. Я пробовал этот код:

matrix = matrices[0]
for m in matrices[1:]:
    matrix = np.matmul(matrix, m)

Однако я считаю, что это умножение неверно, так как я получаю неправильные выходные переменные, и я трижды проверил остальную часть моего кода, поэтому я считаю, что это проблема. Как я могу умножить все матрицы в этом массиве вместе? Также длина массива будет варьироваться в зависимости от входного файла, поэтому я не могу использовать подход A * B * C.

1 Ответ

0 голосов
/ 24 апреля 2020

Ваш код для умножения серии матриц вместе должен работать. Вот пример использования вашего метода с некоторыми простыми матрицами.

import numpy as np

matrices = []
matrices.append(np.eye(3,dtype=float))
matrices.append(np.matrix('1.0,2.0,3.0;4.0,5.0,6.0;7.0,8.0,8.0'))
matrices.append(np.eye(3,dtype=float))
matrices.append(np.linalg.inv(np.matrix('1.0,2.0,3.0;4.0,5.0,6.0;7.0,8.0,8.0')))

matrix = matrices[0]
for m in matrices[1:]:
    matrix = np.matmul(matrix, m)
print(matrix)

directmul = np.matmul(matrices[1],matrices[3])
print(np.subtract(matrix,directmul))

Ваша проблема в другом месте: возможно, как вы заполняете список матриц, или как вы заполняете матрицы. Вы пробовали unit testing в своем коде? Вы попробовали отладчик python?

...