Alles, ich habe mir die folgende Antwort angeschaut und es sieht alles gut aus. Matrix multiplication, solve Ax = b solve for x Ich muss etwas falsch machen, aber wenn ich das Problem von Hand ausarbeite, bekomme ich eine andere Lösung.
Matrix-Multiplikation Ax = 1 oder Ax = 0
Methode 1:
A = [[0,1,0],
[0,0,1],
[.5,.5,0]]
b = [1,1,1]
x = numpy.linalg.lstsq(A,b)
x
Ausbeuten
(array([ 1., 1., 1.]),
array([], dtype=float64),
3,
array([ 1.14412281, 1. , 0.43701602]))
Methode 2 (wie durch Kevin vorgeschlagen I unten die Matrix transponiert):
A = [[0,0,.5],[1,0,.5],[0,1,0]]
b = [1,1,1]
x = numpy.linalg.lstsq(A,b)
x
Ausbeuten
(array([ 0., 1., 2.]),
array([], dtype=float64),
3,
array([ 1.14412281, 1. , 0.43701602]))
Wenn ich Ax = b von Hand ausarbeite bekomme ich x = 1/5 * [1,2,2]. Beachten Sie, dass ich Beispiel 11.19 über den folgenden Link bearbeite:
https://www.probabilitycourse.com/chapter11/11_3_2_stationary_and_limiting_distributions.php
Was fehlt mir?
Wenn ich folge dem Beispiel auf diesem Link: https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.solve.html
3x+y=9
x+2y=8
[x,y]=[2,3]
ich die richtige Lösung bekommen, wenn ich es mit Python oder von Hand tun. Irgendwelche Zeiger? Ich muss etwas sehr einfaches hier vermissen
Wenn Sie Python und Numpy verwenden, möchten Sie diese Tags möglicherweise zu der Frage hinzufügen, damit die Benutzer sie sehen können. –
Ihre Handmathematik ist falsch. Du gehst entlang A in die falsche Richtung, wenn du dich multiplizierst. – user2357112
Ich beziehe das Beispiel 11.19 aus dem folgenden Link, um die stationäre Verteilung zu berechnen. Zugegeben, ich berechne P * pi = pi und bekomme die richtige Antwort von Hand. Wenn ich versuche, die Berechnung wie folgt umzukehren, bekomme ich [0,1,2], was wiederum nicht richtig ist. Wo ist mein Problem genau? x = np.dot (b, np.linalg.inv (A)) https://www.probabilitycourse.com/chapter11/11_3_2_stationary_and_limiting_distributions.php – fullofquestions