如何将方程式转换为单个变量的公式?

Bob*_*tiz 5 .net c# math logic expression-trees

如何将方程式转换为单个变量的公式?我正在考虑一个数学方程式:

c^2 = a^2 + b^2
Run Code Online (Sandbox Code Playgroud)

我想有一个可以处理任何公式的函数,并给我单独的变量公式.上面的等式将产生以下结果:

a = (c^2 - b^2)^0.5
b = (c^2 - a^2)^0.5
c = (a^2 + b^2)^0.5
Run Code Online (Sandbox Code Playgroud)

我还想从:

a = (c^2 - b^2)^0.5
Run Code Online (Sandbox Code Playgroud)

并输出:

b = (c^2 - a^2)^0.5
c = (a^2 + b^2)^0.5
Run Code Online (Sandbox Code Playgroud)

我看过表达式树,但我无法想象它是如何工作的.我想要.NET(C#,VB.NET或F#)解决方案.有任何想法吗?

就像是:

public string[] GetFormulas(string equation)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

Dan*_*ner 6

符号方程求解是一个复杂的问题,许多方程都没有封闭解.编写自己的计算机代数系统并非易事,但您可以编写一个简单方程式的程序.

您必须构建输入字符串的表达式树并定义用于操作表达式树的转换规则.为了解决变量,您可以在表达式树的空间上执行搜索(由良好的启发式指导以保持运行时可接受),该空间可以通过转换规则的多个应用从原始树派生.