【发布时间】:2014-02-23 07:54:08
【问题描述】:
我正在使用 python3 和 QT 开发一个 GUI 应用程序(在土木工程环境中),并希望以三种不同的方式显示方程:
- 符号:sigma=N/A
- 值:sigma=200kN/20cm²
- 结果:sigma=10kN/cm²
方程的布局和符号的顺序对于 (1) 和 (2) 都必须相同,但我只想在我的源代码中输入一次方程。我搜索了很多,这是我能得到的最好的:
class myfancy_equation():
def __init__(self):
self.a = Symbol('a')
self.b = Symbol('b',commutative=False)
self.x = Symbol('x')
self.expr = (self.b * self.a)/self.x
def mlatex(self):
return latex(self.expr)
def mevaluate(self,a_in,b_in,x_in):
unev = self.expr.subs({self.a:a_in,self.b:b_in,self.x:x_in})
symb_names = dict()
symb_names[self.a] = str(a_in)
symb_names[self.b] = str(b_in)
symb_names[self.x] = str(x_in)
# unev_latex = latex(self.expr.subs({self.a:a_in,self.b:b_in,self.x:x_in}))
unev_latex = latex(self.expr,symbol_names=symb_names)
ev = self.expr.subs({self.a:a_in,self.b:b_in,self.x:x_in}).evalf()
return unev,unev_latex,ev
mfe = myfancy_equation()
lat = mfe.mlatex()
un,unl,ev = mfe.mevaluate(5,7,3)
print("Original, unevaluated, evaluated:")
print( lat,"=",unl,'=',ev)
我读到 sympy 最初并不是为显示方程而开发的,但对于更复杂的方程,结果很难读取(并且不可预测)。我尝试使用“交换”参数,但总是以这样的混合方程结束: http://www.oberthanner.at/render.png 我错过了重点还是同情是不可能的?
顺便说一句:我在使用 python2 时遇到了可交换参数的不同行为。
【问题讨论】:
-
我在您的问题中看不到与 qt 的任何关系。
-
我试图完整,但你是对的,我删除了 qt 标签
标签: python math equation sympy