I have always been amazed by the development of calculators
over time. Couple decades ago, a calculator could only solve simple numerical
computation such as addition, subtraction, multiplication and division. Thanks
to the fast growth of Computer Science, calculators have been improved a lot so
that they can solve complex mathematical expressions. However, the explosion of
mobile devices nowadays makes many people want to design a math library or
system on mobile devices in order to replace regular calculators. Such a system
has to be able to do symbolic computation.
What is symbolic computation? Symbolic computation allows us to express mathematical problems in
symbols and solve them using variables, formulas and functions. Values do not
need to be assigned to variables until we want to. Symbolic computations give
us more accurate results since they reduce the inaccuracy of doing mathematical
problems by hands.
A symbolic computational system can do a lot of things
including numerical computing, derivatives, integrals, and many other complex
expressions. There are two most popular systems which are Maple and Wolfram. They both have very complicated graphical and computational
features, which are implemented very well to handle complex expressions that cannot
be solved by humans.
In order to build such systems on mobile devices, there are
several considerations to be considered.
- Space: consider a simple expression like (a + 5) ^ 10. It expands to 3 terms, however (a + 5) ^ 200000 can expand up to 2000 terms. This might take some space (probably more than 1 Mb). Therefore, simple things get bigger very fast when you begin to compute with them.
- Time: The above polynomial looks simple, but if we want to take the derivative or integrate it over some interval might take quite long, so how long a mobile user would want to wait for an answer?
- Format: Mobile users always want simple inputs but beautiful outputs.
- Built-in library: To make this system portable, we need to have a library.
- Extensibility: To make the system bigger and more useful, users can add more functionality to it.
In conclusion, symbolic computing/programming plays an
important role in solving a lot of mathematical problems that were created many
centuries ago. It also builds a much stronger platform for a new kind of
computing.