Java 将表达式推导为表达式和方程

标签 java parsing equation solver derivative

我正在尝试解决两个问题。 我正在做一个应该解决数学问题的应用程序。

我有基于语法和 AST 的表达式解析器,但主要问题是我需要从具有未知变量的表达式创建派生表达式,这里是示例。

函数:(x1)^2+4(x2)^2-2x1-4x2

x1 = 5+α
x2 = 2

我需要派生 (5+α)^2+4(2)^2-2*(5+α)-4*2 === 2*(5+α)+8 => 作为字符串结果

然后从2*(5+α)+8计数α=?

最佳答案

您需要用数学规则来转换 AST。为了更好的可读性,我使用 x 而不是 x1。

为了找到 f'(x),我们需要一个匹配 x^n 形式的所有表达式并将其替换为 n*x^(n-1) 的规则。

现在您可以将变量替换为实际值。为了找到更简单的表示,您必须评估和转换 AST 项。作为表达式,您有变量(例如 a)、数字和运算(例如求和积,...)。可视化这一点的最佳方法是画树。

带有数值的简单表达式的示例:

  • prod(num(2), num(3)) => num(6)

带变量的表达式示例:

  • sum(prod(var(a),num(2)), prod(var(a),num(3))) => prod(var(a), sum(num(2),num(3)))

在这里,您必须考虑要进行哪些转换...您在 AST 上定义的规则将决定该术语最终的外观。

关于Java 将表达式推导为表达式和方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43024172/

相关文章:

django 'urlize' 字符串形式的文本就像推特

java - 为什么求解方程时 URL 结果循环会出现意外情况

matlab - 如何求解线性代数方程 AC=D,其中 A 是非方阵

java - 从 Amazon S3 下载文件之前,如何确保文件已使用 SSE-C 加密?

java - 如何从spring资源获取文件

java - 线程中的异常 "main"java.lang.ArrayIndexOutOfBoundsException : 3 when adding objects of array

java - 为什么 HTTPURLConnection.getInputStream() 需要时间

python - 解析嵌套的 JSON 响应 Python

python - 如何使用 html5lib 解析 HTML,并使用 XPath 查询解析后的 H​​TML?

algorithm - 计算具有互质系数的多变量线性丢番图方程的解数