web-dev-qa-db-fra.com

Comment imprimer joliment dans le cahier ipython via sympy?

J'ai essayé pprint, print, le premier imprime uniquement la version Unicode, et le dernier ne fait pas de jolis tirages.

from sympy import symbols, Function
import sympy.functions as sym
from sympy import init_printing
init_printing(use_latex=True)
from sympy import pprint
from sympy import Symbol

x = Symbol('x')

# If a cell contains only the following, it will render perfectly.
(pi + x)**2

# However I would like to control what to print in a function, 
# so that multiple expressions can be printed from a single notebook cell.
pprint((pi + x)**2)
41
colinfang

vous devez utiliser l'affichage:

from IPython.display import display

display(yourobject)

Il choisira la représentation appropriée (texte/LaTex/png ...), dans la version assez récente d'IPython (6.0+), l'affichage est importé par défaut, nous vous recommandons néanmoins de l'importer explicitement.

56
Matt

Le problème vient de votre instruction init_printing. Dans un cahier, vous ne voulez pas exécuter latex, à la place, vous devez utiliser mathjax, essayez donc ceci à la place:

init_printing(use_latex='mathjax')

Lorsque j'utilise ceci, j'obtiens une jolie impression normale partout, même lorsque j'ai une expression sympy comme dernière ligne de la cellule.

26
Kyle

Cela marche,

from IPython.display import display, Latex
from sympy import *

x = symbols('x')
display(x)

int_x = Integral(cos(x)*exp(x), x)
result = "$${} = {}$$".format(latex(int_x), latex(int_x.doit()))
display(Latex(result))

derv_x = Derivative(cos(x)*exp(x), x)
result = "$${} = {}$$".format(latex(derv_x), latex(derv_x.doit()))
display(Latex(result))

essayez par vous-même.

1
acesaif