如何在不评估的情况下将分数保留在输出中

时间:2018-09-19 09:40:07

标签: python sympy

我尝试使用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

输出。

Output

1 个答案:

答案 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}}。