Nếu tôi hỏi SymPy chèo-giảm ma trận số ítTại sao SymPy cho tôi câu trả lời sai khi tôi hàng-giảm ma trận tượng trưng?
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()
sau đó nó sẽ trả về ma trận sắc
(Matrix([
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1]]), [0, 1, 2, 3])
mà nó không nên làm, vì ma trận là số ít. Tại sao SymPy lại cho tôi câu trả lời sai và làm thế nào tôi có thể đưa nó cho tôi câu trả lời đúng?
Tôi biết SymPy biết ma trận là số ít, bởi vì khi tôi yêu cầu A3.inv(), nó mang lại cho
raise ValueError("Matrix det == 0; not invertible.")
Hơn nữa, khi tôi loại bỏ thịt cừu từ ma trận (tương đương với thiết cừu = 0) , SymPy cung cấp câu trả lời đúng:
(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])
dẫn tôi tin rằng vấn đề này chỉ xảy ra với nhiều hơn một biến.
EDIT: Thật thú vị, tôi chỉ nhận được câu trả lời đúng khi tôi vượt qua rref() đối số "simplify = True". Tôi vẫn không có ý tưởng tại sao đó là mặc dù.
Lưu ý rằng thao tác này hiện hoạt động chính xác trong phiên bản phát triển của SymPy. – moorepants