SymbolicC++
Developer(s) | Yorick Hardy, Willi-Hans Steeb and Tan Kiat Shi |
---|---|
Stable release | 3.24
/ May 27, 2009 |
Written in | C++ |
Operating system | Cross-platform |
Type | Mathematical software |
License | GPL |
Website | http://issc.uj.ac.za/symbolic/symbolic.html |
SymbolicC++ is a general purpose computer algebra system embedded in the programming language C++. It is free software released under the terms of the GNU General Public License. SymbolicC++ can be used by simply including a C++ header file or by linking against a library.
Examples
#include <iostream> #include "symbolicc++.h" using namespace std; int main(void) { Symbolic x("x"); cout << integrate(x, x); // => 1/2 xˆ2 Symbolic y("y"); cout << df(y, x); // => 0 cout << df(y[x], x); // => df(y[x],x) return 0; }
The following program fragment inverts the matrix symbolically.
Symbolic theta("theta"); Symbolic R = ( ( cos(theta), sin(theta) ), ( -sin(theta), cos(theta) ) ); cout << R(0,1); // sin(theta) Symbolic RI = R.inverse(); cout << RI[ (cos(theta)^2) == 1 - (sin(theta)^2) ];
The output is
[ cos(theta) −sin(theta) ] [ sin(theta) cos(theta) ]
Further examples can be found in the books listed below[1][2][3].
History
SymbolicC++ is described in a series of books on computer algebra.
The first book[4] described the first version of SymbolicC++. In this version the main data type for symbolic computation was the Sum
class. The list of available classes included
Verylong
: An unbounded integer implementationRational
: A tempate class for rational numbersQuaternion
: A template class for quaternionsDerive
: A template class for automatic differentiationVector
: A template class for vectors (see vector space)Matrix
: A template class for matrices (see matrix (mathematics))Sum
: A template class for symbolic expressions
Example:
#include <iostream.h> #include "rational.h" #include "msymbol.h" int main(void) { Sum<int> x("x",1); Sum<Rational<int> > y("y",1); cout << Int(y, y); // => 1/2 yˆ2 y.depend(x); cout << df(y, x); // => df(y,x) return 0; }
The second version[5] of SymbolicC++ featured new classes such as the Polynomial
class and initial support for simple integration. Subsequently support for Gröbner bases was added[6].
The third version[3] features a complete rewrite of SymbolicC++ and was released in 2008. This version encapsulates all symbolic expressions in the Symbolic
class.
Newer versions are available from the SymbolicC++ website.
See also
References
- ^ Steeb, W.-H. (2008). The Nonlinear Workbook: Chaos, Fractals, Cellular Automata, Neural Networks, Genetic Algorithm, Gene Expression Programming, Wavelets, Fuzzy Logic with C++, Java and SymbolicC++ Programs, fourth edition World Scientific Publishing, Singapore
- ^ Steeb, W.-H. (2007). Continuous Symmetries, Lie Algebras, Differential Equations and Computer Algebra, second edition World Scientific Publishing, Singapore
- ^ a b Hardy, Y, Tan Kiat Shi and Steeb, W.-H. (2008). Computer Algebra with SymbolicC++, World Scientific Publishing, Singapore
- ^ Tan Kiat Shi and Steeb, W.-H. (1997). SymbolicC++: An introduction to Computer Algebra Using Object-Oriented Programming Springer-Verlag, Singapore
- ^ Tan Kiat Shi, Steeb, W.-H. and Hardy, Y (2000). SymbolicC++: An Introduction to Computer Algebra using Object-Oriented Programming, 2nd extended and revised edition, Springer-Verlag, London
- ^ Kruger, P.J.M (2003). Gröbner bases with Symbolic C++, M. Sc. Dissertation, Rand Afrikaans University