Hallo Andreas,
Aus dem Help geht nicht klar hervor, ob RowReduce bei einer rechteckigen
Matrix funktionieren soll, die eine numerische singuläre Matrix enthält.
Es wird gesagt: "If m is a sufficiently nondegenerate rectangular matrix
with k rows and more than k columns, then the first k columns of
RowReduce[m] will form an identity matrix."
Was ist genügend regulär? Die ersten k Spalten können nur dann eine
Einheitsmatix bilden, wenn die rechteckige Matrix eine k x k reguläre
Matrix enthält. Im vorliegenden Fall ist jedoch NullSpace[M]
eindimensional! Auf den ersten beiden Zeilen von M kann man RowReduce
also nutzen, ohne dass die Symbole verschwinden:
In[14]:= RowReduce[{{1, -2, 5, a}, {4, -5, 8, b}}]
Out[14]= {{1, 0, -3, (1/3)*(-5*a + 2*b)}, {0, 1, -4, (1/3)*(-4*a + b)}}
Mit diesen beiden Lösungsvektoren kann und muss man noch die linear
abhängige Zeile {-3, 3, -3, c} zum Verschwinden bringen, d.h. man muss 3
mal die erste Zeile addieren und 3 mal die zweite Zeile abziehen und erhält
{0, 0, 0, c - a + b}.
Dieses Ganze könnte man zu einem Verfahren ausbauen:
(1) M umordnen, bis in der linken oberen Ecke eine reguläre Matrix M'
steht (i.e. alle Einträge von M' sind Zahlen und die Determintante von
M' ist ungleich 0)
(2) auf die ersten rg[M'] Zeilen dieses Systems RowReduce[] anwenden
(3) die restlichen linear abhängigen Zeilen mit den zuvor erhaltenen
Vektoren verschwinden lassen.
Ich habe das jetzt nicht ausgeführt, weil Sonntag ist und wegen der
verschiedenen Probleme, die damit verbunden sind: Die Symbole finden,
die Matrix umordnen und pivotisieren, die o.g. Schritte ausführen. Wenn
Sie immer Matrizen haben, bei denen die Symbole auf der letzten Spalte
stehen, könnte es dennoch ein Weg sein. Im allgemeinen scheint es fast
befriedigender, den Gaussschen Algorithmus zu implementieren oder im
Netz zu suchen.
Mit den besten Grüssen
Udo.
Andreas Rychen wrote:
Hallo, Mathematica Fans
Ich möchte für eine Matrix M, die neben Zahlen auch Variablen
enthält, die reduzierte Treppenform berechnen (siehe Beilage:
RowReduce.nb).
Der Befehl "RowReduce" führt jedoch nicht zum Ziel, da die Variablen
verschwinden. Nur wenn ich M mit geeigneten Elementarmatrizen
multipliziere, erhalte ich das Gewünschte.
Kann mir jemand verraten, wie ich mir diese Mühsal ersparen kann?
Mit freundlichen Grüssen
Andreas