Ich versuche, das folgende lineare System mit optimize.rootoptimize.root mit einer Matrix Gleichung
AX = b
Mit dem folgenden Code zu lösen.
A = [[0,1,0],[2,1,0],[1,4,1]]
def foo(X):
b = np.matrix([2,1,1])
out = np.dot(A,X) - b
return out.tolist()
sol = scipy.optimize.root(foo,[0,0,0])
Ich weiß, dass ich einfach die numpy.linalg.solve
verwenden kann dies leicht zu tun. Aber ich versuche tatsächlich, ein nichtlineares System zu lösen, das in Matrixform vorliegt. Siehe meine Frage here. Also muss ich einen Weg finden, diese Methode zum Laufen zu bringen. Um das zu tun, versuche ich dieses Problem in diesem einfachen Fall zu lösen. Aber ich habe den Fehler
TypeError: fsolve: there is a mismatch between the input and output shape of the 'func' argument 'foo'.Shape should be (3,) but it is (1, 3).
Von dem, was ich von anderen ähnlichen Stackoverflow Fragen gelesen haben geschieht dies, weil die aus der foo Funktion setzte nicht kompatibel mit der Form der anfänglichen Vermutung ist [0,0,0]
Sicherlich gibt es Eine Möglichkeit, diese Gleichung mithilfe von scipy.optimize.root zu lösen. Kann mir bitte jemand helfen?
Entschuldigung. Ja, es ist ein Tippfehler für 'A'. – minibuffer
Wie transformiere ich die Ausgabe der Funktion 'foo' in die Form' (3,) '? – minibuffer
Verwendet 'np.array' nicht für' b' Arbeit? Und ich bin ziemlich sicher, dass Sie die '.tolist()' nicht brauchen. –