Wenn ich SymPy bitten, die singuläre MatrixWarum gibt mir SymPy die falsche Antwort, wenn ich eine symbolische Matrix reihum reduziere? es kehrt zu rudern-reduce
nu = Symbol('nu')
lamb = Symbol('lambda')
A3 = Matrix([[-3*nu, 1, 0, 0],
[3*nu, -2*nu-1, 2, 0],
[0, 2*nu, (-1 * nu) - lamb - 2, 3],
[0, 0, nu + lamb, -3]])
print A3.rref()
dann die Identitätsmatrix
(Matrix([
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1]]), [0, 1, 2, 3])
, die sie nicht tun sollten, da die Matrix singulär ist. Warum gibt SymPy mir die falsche Antwort und wie bekomme ich es, um mir die richtige Antwort zu geben?
Ich weiß SymPy kennt die Matrix singulär ist, weil, wenn ich für A3.inv fragen(), gibt es
raise ValueError("Matrix det == 0; not invertible.")
Außerdem, wenn ich Lamm aus der Matrix (entspricht Einstellung Lamm = 0) entfernen gibt SymPy die richtige Antwort:
(Matrix([
[1, 0, 0, -1/nu**3],
[0, 1, 0, -3/nu**2],
[0, 0, 1, -3/nu],
[0, 0, 0, 0]]), [0, 1, 2])
, die mich führt zu glauben, dass dieses Problem nur mit mehr als einer variablen geschieht.
EDIT: Interessanterweise habe ich gerade die richtige Antwort, wenn ich rref() das Argument "simplify = True" übergeben. Ich habe immer noch keine Ahnung, warum das so ist.
Beachten Sie, dass dies jetzt in der Entwicklungsversion von SymPy ordnungsgemäß funktioniert. – moorepants