【发布时间】:2017-12-09 01:16:12
【问题描述】:
免责声明:不是家庭作业
我已经使用标记器在 Java 中编写了非常基本的计算器解析器,但我最近开始编写一个问题来帮助我理解化学。随着我开始编写越来越多的公式,越来越明显的是,求解每个方程所需的复杂性几乎比掌握方程本身更乏味。以方程 PV = nRT 为例,我怎样才能编写一个解析器,让我输入所有已知变量并在它可解的情况下求解?我可以做可解性背后的逻辑,但这里有一些要求:
必须能够求解任何未知变量。
解析应该能够用于任何大小的公式(例如:我想实现多个公式,例如 π = MRT 和越来越复杂的公式,并且只想定义一次。)
再一次,这纯粹是为了我的享受并用作学习工具。任何帮助将不胜感激,因为在谷歌和 StackOverflow 上搜索这个问题给了我模糊或不适用的答案。
【问题讨论】:
-
PV = nRT的长格式是什么?是PV = nRT还是PV = n * RT还是PV = n * R * T?方程中的变量需要有规则。 -
这个(符号代数)是一个非常复杂的问题,为许多博士论文提供了肥沃的土壤。行业标准是 Mathematica 和 Wolfram Alpha(尽管它们也做得更多)。这两种产品都代表了数百人年的工作,我们无法解释如何作为 StackOverflow 的答案来做到这一点。这是一个很好的起点:en.wikipedia.org/wiki/Computer_algebra
-
如果我的问题过于宽泛,我深表歉意。我不想要像胡安这样的解决方案。还有 PV = n *RT。如果有的话,我可以发布一些生产风格的代码,但我觉得有一个大部分是空的方法会分散注意力并降低可能答案的整体质量。
标签: java parsing token formula equation