我尝试使用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
输出。
答案 0 :(得分:3)
这些是相关的费用
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
或(可能更好)其符号版本:{ {3}}。