python - Python 中的数学方程式操作

标签 python math equation

我想开发一个 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/

相关文章:

c - GCC 的 sqrt() 编译后如何工作?使用哪种root方法?牛顿-拉夫森?

python - 如何在 Python 中求解方程?

python - 我什么时候应该使用 hstack/vstack vs append vs concatenate vs column_stack?

python - 将 Bokeh 服务器嵌入为库 : Tornado error

javascript - 有没有办法从 4x4 矩阵计算 X 和 Y 轴上的 3D 旋转

c# - 如何编写对称版本的对齐值公式(在 C# 中)

python - 复杂的数学公式 Python

Python:如何使用 16 位 channel (例如 48 RGB)保存图像?

python - 如何将网站的多个部分中的多个属性映射为 scrapy 项目?

python - numpy.sin 函数以度为单位?