# How do you break down an equation into separate variable formulas?

.net c# expression-trees logic math ### Question

How to convert an equation into formulas for individual variables? I am thinking about a math equations like:

``````c^2 = a^2 + b^2
``````

I would like to have a function that could process any formula, and give me the individual variable formulas. The above equation would produce the following:

``````a = (c^2 - b^2)^0.5
b = (c^2 - a^2)^0.5
c = (a^2 + b^2)^0.5
``````

I would also like to start with:

``````a = (c^2 - b^2)^0.5
``````

and output:

``````b = (c^2 - a^2)^0.5
c = (a^2 + b^2)^0.5
``````

I have looked at expression trees, but I am having trouble visualizing how this will work. I would like a .NET (C#, VB.NET, or F#) solution. Any ideas?

Something like:

``````public string[] GetFormulas(string equation)
{
...
}
``````

Thanks.

1
6
4/17/2009 2:27:07 PM

#### Fastest Entity Framework Extensions

Symbolic equation solving is a complex problem and there is no closed solution for many equations. Writing your own Computer Algebra System is none trivial, but you may be able to write a program for simple equation.

You will have to build a expression tree of the input string and define transformation rules for manipulating the expression tree. To solve for a variable you might then perform a search (guided by good heuristics to keep the runtime acceptable) on the space of expression tree that can be derived from the orginal tree by multiple aplications of transformation rules.

7
4/17/2009 2:32:31 PM

This is a non-trivial problem you're trying to solve... I don't think you'll have much luck trying to solve it on your own. Better to find some kind of third-party app or library that does it. There are a number of programs that can do the operation you're talking about, such as Matlab and Maple. Also, a TI-89 graphing calculator can do it. You may be able to get the algorithms you need from Octave, which is essentially an open-source implementation of Matlab.

Prime Library

More Projects...