ich einen Code haben, wie lautet:Generator Rückkehr immer das gleiche Element
def xgauss(self):
m, n = self.m, self.n
M = self.copy()
for k in range(n):
for i in range(k + 1, m):
yield M
if not likezero(M[i][k]):
lam = M[i][k]/M[k][k]
M[i] = M[i] - lam * M[k]
yield M
Vorerst genug ist, zu sagen, dass likezero true zurück, wenn der Wert als Genauigkeit geringer ist (für numerische Vergleiche) ;-)
Mein Ziel ist es, jede Iteration des Gauss Elimination-Algorithmus für Studie Sake (Klassenzimmer) zurückzugeben.
Ich habe einige Testeingaben wie:
In [77]: A
Out[77]:
Matrix([
[ 1, 4, 1],
[ 1, 6, -1],
[ 2, -1, 2]
])
In [78]: Ab
Out[78]:
Matrix([
[ 1, 4, 1, 7],
[ 1, 6, -1, 13],
[ 2, -1, 2, 5]
])
Schräge oder nicht, wenn ich den Generator über die Matrix Ab rufen (über AI auch das gleiche Verhalten bekommen), ich habe:
In [76]: list(Ab.xgauss())
Out[76]:
[Matrix([
[ 1, 4, 1, 7],
[ 0, 2, -2, 6],
[ 0, 0, -9, 18]
]), Matrix([
[ 1, 4, 1, 7],
[ 0, 2, -2, 6],
[ 0, 0, -9, 18]
]), Matrix([
[ 1, 4, 1, 7],
[ 0, 2, -2, 6],
[ 0, 0, -9, 18]
]), Matrix([
[ 1, 4, 1, 7],
[ 0, 2, -2, 6],
[ 0, 0, -9, 18]
])]
Das ist die richtige Antwort (sollte nur die letzte Iteration sein), aber ich kann nicht jeden Schritt sehen, der Generator gibt das Matrixergebnis in allen Iterationen zurück. Ich habe keine Ahnung, was passieren kann.
Sehr coole Diashow, auch wenn jemand diese Konzepte verstanden hat. Vielleicht möchten Sie einen Haftungsausschluss hinzufügen, dass Sie es gemacht haben. – gyre