Python Sympy和Latex的10次幂

2024-06-02 06:15:10 发布

您现在位置:Python中文网/ 问答频道 /正文

这也许微不足道,但我找不到答案。考虑以下代码:

from sympy import *
X = Symbol('X')
a=10
b=100
c=1000
d=10000
s = latex ( a*b*c*d / X  )
print (s)

显示:

^{pr2}$

我更希望

\frac{10^{10}}{X}

有可能吗?注意,a、b、c和d是从文件中读取的。所以每次运行时值都会改变。那么,以下的东西并不能解决我的问题:

n20 = Symbol('10')

都不是

latex(S('10**10/X', evaluate=False))

Tags: 文件答案代码fromimportfalsesymbollatex
2条回答

你所需要的只是一个小小的帮助,它会在移除10的幂次后返回你的数字。然后用未经评估的Mul将其包裹并传递给latex:

>>> def u10(n):
...  if abs(n) < 10 or int(n) != n: return n
...  s = str(n)
...  m = s.rstrip('0')
...  if len(m) == len(s): return n
...  return Mul(int(m), Pow(10, len(s) - len(m), evaluate=0), evaluate=0)
...
>>> u10(12300)
123*10**2
>>> latex(Mul(_,1/x,evaluate=False))
'\\frac{123 \\cdot 10^{2}}{x}'�
>>> from sympy import *
>>> var('X')
X
>>> latex(S('10**20/X', evaluate=False))
'\\frac{10^{20}}{X}'

{见^ a1。在

编辑:你编辑的问题与原文有很大不同。这里有一个答案。在

因为您的输入值可能不是10的幂,r可能不是。因此,当它表示为10的幂时,它的指数可能不是整数;因此,使用以10为底的对数。在

^{pr2}$

这些值a, b, cd的结果是\frac{10^{10.0}}{X}。在

相关问题 更多 >