2016-09-01 4 views
0

Я пытаюсь решить матричное уравнение, такое как A.B = C. A - неизвестная матрица, и я должен ее найти. У меня B(n*1) и C(n*1), поэтому A должно быть n*n.Решение матричного уравнения A B = C. с B (n * 1) и C (n * 1)

Я использовал метод BT* A.T =C.T (numpy.linalg.solve(B.T, C.T)). Но выдает ошибку:

LinAlgError: Last 2 dimensions of the array must be square.

Таким образом, проблема в том, что B не является квадратом.

+1

являются векторами 'A' и' B' с одним столбцом? Если это так, то нет возможного решения (вам нужно больше переменных, в частности, вам нужно, чтобы 'A' была квадратной матрицей). – Barranka

+3

У вас есть два 'n'-мерных вектора, и вы пытаетесь решить матрицу' n'-by-'n'? Если «n» равно 1 или «A» - это нулевой вектор, это недоказано и существует бесконечно много правильных ответов. –

+0

Извините, я изменил вопрос, чтобы быть более правильным. @ Barranka @Tanner Swett –

ответ

0

Вот небольшой пример для вас:

import numpy as np 

a = np.array([[1, 2], [3, 4]]) 
b = np.array([5, 6]) 
x = np.linalg.solve(a, b) 

print "A={0}".format(a) 
print "B={0}".format(b) 
print "x={0}".format(x) 

Для получения дополнительной информации, пожалуйста, прочитайте docs

+0

проблема, что а не квадрат –

+0

Это решает для одного из векторов. ОП задал вопрос о том, как решить матрицу (что не очень полезно, но это вопрос). – interjay

+0

@interjay OP отредактировал вопрос, изменив значение ... этот был хороший один несколько часов назад – BPL

0

Если вы решаете для матрицы, существует бесконечное число решений (в предположении, что B отлична от нуля). Вот одно из возможных решений:

Выберите ненулевой элемент B, Bi. Теперь построим матрицу A так, чтобы столбец i был C/Bi, а остальные столбцы равны нулю.

Должно быть легко проверить, что умножение этой матрицы на B дает C.

+0

Это хорошая идея ... спасибо –

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

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