2016-09-01 16 views
0

Ich versuche eine Matrixgleichung wie A.B = C zu lösen. Das A ist die unbekannte Matrix und ich muss es finden. Ich habe B(n*1) und C(n*1), also A muss n*n sein.Lösen der Matrixgleichung A B = C mit B (n * 1) und C (n * 1)

Ich verwendete die BT* A.T =C.T Methode (numpy.linalg.solve(B.T, C.T)). Aber es erzeugt einen Fehler:

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

Das Problem ist also, dass B nicht quadratisch ist.

+1

sind beide "A" und "B" Vektoren mit einer Spalte? Wenn ja, dann gibt es keine mögliche Lösung (Sie benötigen mehr Variablen, insbesondere benötigen Sie "A" als quadratische Matrix). – Barranka

+3

Sie haben zwei 'n'-dimensionale Vektoren und versuchen, nach einer' n'-by-'n' Matrix zu lösen? Es sei denn, "n" ist 1 oder "A" ist der Nullvektor, das ist unterspezifiziert und es gibt unendlich viele richtige Antworten. –

+0

Sorry, ich habe die Frage geändert, um richtiger zu sein. @ Barranka @Tanner Swett –

Antwort

0

Hier ist ein kleines Beispiel für Sie:

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) 

Für weitere Informationen lesen Sie bitte die docs

+0

das Problem, dass ein ist nicht quadratisch –

+0

Dies löst für einen der Vektoren. OP fragte, wie man nach der Matrix (die nicht sehr nützlich scheint, aber das war die Frage) zu lösen. – interjay

+0

@interjay OP bearbeitet die Frage die Bedeutung ändern ... das war eine gute vor ein paar Stunden – BPL

0

Wenn Sie für die Matrix sind zu lösen, ist es eine unendliche Anzahl von Lösungen (unter der Annahme, dass B ist ungleich Null). Hier ist eine der möglichen Lösungen:

Wählen Sie ein Element ungleich Null von B, Bi. Konstruiere nun eine Matrix A, so dass die i th Spalte C/Bi ist und die anderen Spalten Null sind.

Es sollte leicht zu überprüfen sein, dass die Multiplikation dieser Matrix mit BC ergibt.

+0

Es ist eine gute Idee ... danke –

Verwandte Themen