patternMinor
Computer Algebra: Algorithms for solving equations symbolically
Viewed 0 times
solvingequationsalgorithmssymbolicallyforcomputeralgebra
Problem
As a hobby, I have written a basic computer algebra system. My CAS handles expressions as trees. I have advanced it to the point where it can simplify expressions symbolically (i.e., sin(pi/2) returns 1), and all expressions can be reduced to a canonical form. The CAS can also differentiate expressions.
Using this paradigm, what kinds of algorithms are there for solving equations? An equation in my model would be represented as an (=) tree with two subtrees that are the left and right expressions. I know there is no "magic bullet" for solving all equations, but are there algorithms out there that are designed to symbolically solve an equation? If there aren't, what would be the general approach? What kind of classes can equations be split into (so that I might be able to implement an algorithm for each kind)? I don't want to use naive methods and then paint myself into a metaphorical corner.
Using this paradigm, what kinds of algorithms are there for solving equations? An equation in my model would be represented as an (=) tree with two subtrees that are the left and right expressions. I know there is no "magic bullet" for solving all equations, but are there algorithms out there that are designed to symbolically solve an equation? If there aren't, what would be the general approach? What kind of classes can equations be split into (so that I might be able to implement an algorithm for each kind)? I don't want to use naive methods and then paint myself into a metaphorical corner.
Solution
I am no specialist, but IMO this problem is even harder than symbolic integration, and I have not heard of a general theorem that would parallel that of Liouville. (https://en.wikipedia.org/wiki/Liouville%27s_theorem_(differential_algebra))
Of course, the case of univariate polynomials was settled by Galois, but only the degrees up to four are "easy" to handle.
Now many equations can be turned to polynomials by clever substitutions, but I have no idea of a general method to achieve that. (E.g.
For transcendental equations that cannot be reduced to polynomial form, you are completely helpless. Needless to say, the case of systems of equations is even harder.
Now some CAS switch to numerical resolution when they cannot find a symbolic solution. But even this is challenging because though we have excellent root finders, little is said about root separation, i.e. methods that can guarantee that you have found all the roots.
Of course, the case of univariate polynomials was settled by Galois, but only the degrees up to four are "easy" to handle.
Now many equations can be turned to polynomials by clever substitutions, but I have no idea of a general method to achieve that. (E.g.
9^x+3^x=5 can be reduced to quadratic. 9^x+4^x=5 can not.)For transcendental equations that cannot be reduced to polynomial form, you are completely helpless. Needless to say, the case of systems of equations is even harder.
Now some CAS switch to numerical resolution when they cannot find a symbolic solution. But even this is challenging because though we have excellent root finders, little is said about root separation, i.e. methods that can guarantee that you have found all the roots.
Context
StackExchange Computer Science Q#9538, answer score: 2
Revisions (0)
No revisions yet.