Для подстановки значений вы можете использовать subs
со словарем, отображающим каждую переменную в ее значение.
Обратите внимание, что использование sy.Integer(1)
или аналогичных выражений необходимо только тогда, когда работая с дробями констант , чтобы Python не преобразовывал эти дроби в числа с плавающей точкой, прежде чем sympy сможет его захватить.
import sympy as sy
a, b, c = sy.symbols('a, b, c', real = True)
A = sy.Matrix([[1, 2, -3, a], [4, -1, 8, b], [2, -6, -4, c]])
A_rref = A.rref()
print(A_rref[0].subs({a: 3, b: 6, c: 7}))
Вывод:
Matrix([[1, 0, 0, 31/14],
[0, 1, 0, -16/91],
[0, 0, 1, -69/182]])
Чтобы узнать о том, как создаются выражения sympy, srepr
пригодится:
print(sy.srepr(A_rref[0][0,3]))
, что дает:
Add(Mul(Rational(2, 7), Symbol('a', real=True)), Mul(Rational(1, 7), Symbol('b', real=True)), Mul(Rational(1, 14), Symbol('c', real=True)))
Итак, выражение дерево подвыражений. На самом высоком уровне есть сумма, так что это то, что показано при печати type
. Этот пост содержит код для рисования дерева выражений в виде текстовой диаграммы:
+---> symbol Rational(1, 7)
|
+---> symbol Symbol('b', real=True)
|
+---+ function <class 'sympy.core.mul.Mul'> had 2 arguments
|
| +---> symbol Rational(1, 14)
| |
| +---> symbol Symbol('c', real=True)
| |
+---+ function <class 'sympy.core.mul.Mul'> had 2 arguments
|
| +---> symbol Rational(2, 7)
| |
| +---> symbol Symbol('a', real=True)
| |
+---+ function <class 'sympy.core.mul.Mul'> had 2 arguments
|
+ function <class 'sympy.core.add.Add'> had 3 arguments