求解以字符串表示的线性方程

阿克斯

我得到了一个字符串2*x + 5 - (3*x-2)=x + 5,我需要解决x我的想法是将其转换为表达式树,例如,

          =
        /  \
       -    +
      /\    /\
     +  -   x  5
    /\  /\ 
   *  5 * 2
  /\   /\
 2  x  3 x

但是,我实际上如何从此处减少树形结构?还有其他想法吗?

用户名

您必须使用代数公理来减少它

a * (b + c) -> (a * b) + (a * c)

通过检查通过树中每个节点的类型来完成此操作。将事物完全扩展为术语后,您可以检查它们是否实际上是线性的,等等。

树中的值将是变量或数字。但是,将这些表示为从某些AbstractTreeNode类继承的类并不是很整洁,因为cplusplus没有多个分派。因此最好采用“ c”方式。

enum NodeType {
    Number,
    Variable,
    Addition //to represent the + and *
}

struct Node {
    NodeType type;
    //union {char*,  int, Node*[2]} //psuedo code, but you need
    //something kind of like this for the 
    //variable name ("x") and numerical value
    //and the children
}

现在,您可以使用switch case查询它们的节点类型及其子节点。

就像我之前说的那样-C ++惯用代码将使用虚函数,但缺少必要的多重调度来彻底解决此问题。(您仍然需要存储类型)

然后将术语等分组并求解方程。

您可以有一些规则来规范化树,例如

constant + variable -> variable + constant

将x始终放在术语的左边。然后x * 2 + x * 4可以更容易地简化

var * constant + var * constant -> (sum of constants) * var

在你的例子中...

首先,通过移动术语简化“ =”(按照上述规则)

右侧为-1 *(x + 5),变为-1 * x + -1 *5。左侧将较难-请考虑将a-b替换为a + -1 * b。

最终,

2x + 5 + -3x + 2 + -x + -5 = 0

然后,您可以按所需的方式对术语进行分组。(通过扫描等)

(2 + -3 + -1)x + 5 + 2 + -5 = 0

总结一下,当您拥有mx + c时,将其求解。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在python中求解非线性方程

来自分类Dev

在Fortran 95中求解线性方程

来自分类Dev

SciPy中线性方程的求解时间

来自分类Dev

无法使编码求解线性方程

来自分类Dev

无法使编码求解线性方程

来自分类Dev

求解线性方程:复杂的矩阵定义

来自分类Dev

在 Matlab 中求解非线性方程

来自分类Dev

matlab非线性方程求解器

来自分类Dev

迭代求解非线性方程

来自分类Dev

求解线性方程组

来自分类Dev

Sympy:求解非线性方程

来自分类Dev

用python求解非线性方程组

来自分类Dev

在Python中求解x的高度非线性方程

来自分类Dev

符号/参数求解Matlab中的非线性方程

来自分类Dev

使用Math.NET符号求解线性方程

来自分类Dev

用四个变量求解线性方程

来自分类Dev

如何在R中求解非线性方程

来自分类Dev

在八度中求解非线性方程

来自分类Dev

如何求解非线性方程组

来自分类Dev

通过高效的Java矩阵库求解线性方程

来自分类Dev

求解非线性方程组

来自分类Dev

如何使用python求解非线性方程

来自分类Dev

在MATLAB中求解非线性方程组

来自分类Dev

使用Math.NET Symbolics求解线性方程

来自分类Dev

如何求解A为非平方的线性方程xA = x

来自分类Dev

求解非线性方程的levenberg-marquardt方法

来自分类Dev

非线性方程组的求解在 Matlab 中

来自分类Dev

求解线性方程组 R - 验证

来自分类Dev

通过 C 中的附加矩阵求解线性方程