Parsing 解析数学方程

Parsing 解析数学方程,parsing,math,haskell,parsec,Parsing,Math,Haskell,Parsec,为了好玩,我正在尝试创建一个可以简化、因子化和扩展代数方程的应用程序。如果我能把方程转换成一个好的可操作的格式,那么编写规则似乎是很简单的。解析这些方程被证明是一件很麻烦的事情,目前正在使用Python,但我并不反对学习一些新的东西 是否有任何语言库可以使这个项目变得非常简单,或者这是一个白日梦 [用Haskell标记这一点,因为我有一种感觉,这就是“简单”的所在]是的,Haskell有许多库,使编写解析器变得相当简单。这是一个很好的开始,它甚至有,包括那篇文章的链接,看起来它也可以工作 这是一

为了好玩,我正在尝试创建一个可以简化、因子化和扩展代数方程的应用程序。如果我能把方程转换成一个好的可操作的格式,那么编写规则似乎是很简单的。解析这些方程被证明是一件很麻烦的事情,目前正在使用Python,但我并不反对学习一些新的东西

是否有任何语言库可以使这个项目变得非常简单,或者这是一个白日梦


[用Haskell标记这一点,因为我有一种感觉,这就是“简单”的所在]

是的,Haskell有许多库,使编写解析器变得相当简单。这是一个很好的开始,它甚至有,包括那篇文章的链接,看起来它也可以工作

这是一个示例说明,它可能不是一流的Parsec或Haskell:它表明了Haskell解析库的强大功能,正好有4行代码实现了整个解析器

您还可以浏览旧的问题和答案,以了解各种库和技术,例如,和


为更大的项目确定攻击线的最佳方法是从小处着手,在熟悉工具之前尝试一些东西:选择一个库并尝试实现一个相对简单的解析器,比如只使用数字+和*解析表达式,或者甚至只使用括号解析数字和+。。。小但不太小的东西;这两个示例都具有非平凡性,第一个具有运算符优先级,第二个具有递归嵌套。如果您不太喜欢该库,请尝试其他库。

Python或matlab将是我的建议。您是否计划将整个方程存储在一个字符串中,然后将其拆分,以进行因子分解和简化


提供更多信息,这是一个很酷的项目。

几乎每种语言都有

Python有一个用于解析代数方程和符号数学的库,可以随时使用:


我建议重用,除非你的目的是学习如何编写这样的东西。

这是一个老问题,但我建议你使用MathParseKit

这是一个C++类库,它给出了一个字符串2×3/4,它给出了一个定义表达式的函数/变量/常量树。 您可以解决它,但您甚至可以更改它并以字符串格式再次将其放入

您可以在以下网址找到:


易于理解的编程?你一定是新来的-你没有定义你要处理的代数方程。另外,对于三角函数、指数函数、对数函数、多项式函数及其组合的合理定义,简化它们的问题是无法确定的。使用Haskell中的Parsec库,解析使用常用运算符+-*等而不是方程的表达式相当容易。为其他语言创建了受Parsec启发的库,但它们可能还没有定义表达式解析器工具包。Daan Leijen为Parsec编写了优秀的文档,包括编写表达式解析器,不幸的是,该手册现在有点过时了:Scala内置了解析器组合器。Maxima是一个用lisp编写的相当完整的计算机代数系统,重点是符号计算。maxima.sourceforge.net。有一个很好的GUI叫做wxMaxima。