Jeśli pytam SymPy wiosłować-zmniejszenie liczby pojedynczej macierzyDlaczego SymPy daje mi złą odpowiedź, gdy zaczynam wiersze - zredukować symboliczną matrycę?
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()
wówczas zwraca macierz jednostkowa
(Matrix([
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1]]), [0, 1, 2, 3])
których nie powinien robić, ponieważ matryca jest w liczbie pojedynczej. Dlaczego SymPy daje mi złą odpowiedź i jak mogę ją zdobyć, by dać mi właściwą odpowiedź?
wiem SymPy wie, matryca jest w liczbie pojedynczej, bo kiedy pytam o A3.inv(), to daje
raise ValueError("Matrix det == 0; not invertible.")
Ponadto, kiedy wyjąć baranka z matrycy (równoważne ustawieniu jagnięcina = 0) , SymPy daje poprawną odpowiedź:
(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])
która prowadzi mnie do przypuszczenia, że ten problem występuje tylko z więcej niż jednej zmiennej.
EDYCJA: Interesujące, właśnie dostałem poprawną odpowiedź, gdy przekazuję rref() argument "uproszczenie = prawda". Wciąż nie mam pojęcia, dlaczego tak jest.
Zauważ, że to teraz działa poprawnie w wersji rozwojowej SymPy. – moorepants