用于重新排列简单符号代数表达式的算法

Gab*_*son 6 algorithm cas algebra

我想知道是否有一个直接的算法来重新排列简单的符号代数表达式.理想情况下,我希望能够在左侧单独使用一个变量重写任何此类表达式.例如,给定输入:

m = (x + y) / 2
Run Code Online (Sandbox Code Playgroud)

......我想能问x来讲my,或y在条款xm,并得到这些:

x = 2*m - y
y = 2*m - x
Run Code Online (Sandbox Code Playgroud)

当然,我们已经在纸上完成了这个算法多年.但我想知道是否有一个名字.这似乎很简单,但如果有人已经编目了各种"陷阱",它将使生活更轻松.

为了我的目的,我不需要它来处理quadratics.

(是的,CAS系统会这样做,是的,我知道我可以将它们用作库.我想在我的应用程序中避免这种依赖.我真的只想知道是否有命名算法来解决这个问题.)

Agn*_*kas 2

您想要的是方程求解算法。但我敢打赌这是一个很大的话题。一般情况下,可能有:

  • 方程组
  • 方程可能是非线性的,因此需要额外的算法,例如方程分解。
  • 需要了解如何反转函数,例如 => sin(x) + 10 = z,求解 x 我们反转 sin(),即 arcsin()。(并非所有功能都是可逆的!)
  • 最后,有些方程即使对于 CAS 也可能是难解的,例如 sin(x)+x=y,求解 x。

硬答案是 - 你最好的选择是获取一些 CAS 的源代码 - 例如,你可以看一下用 LISP 编写的 MAXIMA CAS 源代码。并找到负责方程求解的代码。

简单的答案 - 如果您需要的只是求解线性方程并且仅由基本运算符 +-*/ 组成。然后你已经知道答案了 - 使用旧的好的纸质方法 - 想想我们在纸上使用的规则,然后将这些规则重写为操纵方程串的符号算法。

祝你好运 !