Я пытаюсь узнать Характеристический многочлен и Собственные значения с помощью sympy. Но когда я печатаю результаты в блокноте Jupyter, все доли в коэффициентах полиномов оцениваются как float (например, 0.5x**2+1), но мне нужен $(1/2)x^2+1$). Есть ли что-нибудь, чтобы решить эту проблему. Спасибо.
Мой код
import sympy as sp
from sympy import *
x, y, z = symbols('x,y,z')
init_printing(use_unicode=False, wrap_line=False)
M = sp.Matrix([[0, -1/2], [1/3, 0]])
x = symbols('x')
p = M.charpoly(x)
p
Выход.






это соответствующие изменения
from fractions import Fraction
M = sp.Matrix([[0, -Fraction(1, 2)], [Fraction(1, 3), 0]])
которые дают
PurePoly(x**2 + 1/6, x, domain='QQ')
Дело в том, что 1/3 сразу же конвертируется в float 0.3333 ... способ избежать этого - использовать fractions.Fraction или (возможно, лучше) его симпатичную версию: sympy.Rational.
это может помочь: stackoverflow.com/questions/13208286/….