我想开发一个 GUI 应用程序来显示给定的数学方程式。当您单击方程式中的特定变量以表示它是未知变量(即要计算的变量)时,方程式会自行转换以评估所需的未知变量。
例如:
a = (b+c*d)/e
让我们假设我点击“d”表示它是未知变量。那么等式应该重组为:
d = (a*e - b)/c
到目前为止,我只想知道如何根据用户输入重新排列给定的方程式。我从我兄弟那里得到的一个建议是在后端使用前缀/后缀符号表示来评估它。
这是唯一的方法还是有更简单的建议? 此外,我不仅会使用基本的数学函数,还会使用三角函数和微积分(我认为是基本的。没有偏微积分等等)。我认为前/后修复符号评估可能对评估更高的数学函数没有帮助。
这只是我个人的看法,如有错误请指出。 另外,我将使用 SymPy对于数学评估,因此给定数学方程的评估不是问题,从给定的通用方程创建特定方程是我的主要问题。
最佳答案
使用 SymPy ,你的例子会是这样的:
>>> import sympy
>>> a,b,c,d,e = sympy.symbols('abcde')
>>> r = (b+c*d)/e
>>> l = a
>>> r = sympy.solve(l-r,d)
>>> l = d
>>> r
[(-b + a*e)/c]
>>>
它似乎也适用于三角函数:
>>> l = a
>>> r = b*sympy.sin(c)
>>> sympy.solve(l-r,c)
[asin(a/b)]
>>>
并且由于您使用的是 GUI,您(可能)希望在字符串和表达式之间来回转换:
>>> r = '(b+c*d)/e'
>>> sympy.sympify(r)
(b + c*d)/e
>>> sympy.sstr(_)
'(b + c*d)/e'
>>>
或者您可能更愿意将它们显示为渲染的 LaTeX or MathML .
关于python - Python 中的数学方程式操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1010583/