Hi All,
I would like to work on implementing a Linear Algebra Module for CSymPy
this summer
as a GSoC project. I like to focus mainly on Matrices and related
algorithms as they play
a central role in Linear algebra.
I hope to implement following (rough) list of things related to matrices:
1. Basic Operations:
Addition, Scalar multiplication, transposition
Matrix multiplication
Row operations
Finding a Submatrix (by deleting specific rows and columns)
2. Square Matrices
Decompositions
Inverse
Eigen values, Eigen vectors and Determinants
Nullspace
I haven't decided on the magnitude of the scope of this project but since
Matrices are a
well studied and implemented field in scientific and numeric computation
lots of references
can be found so we can start implementing right after we get the
requirements and designs
correct.
Apart from SymPy matrices module, there are open source linear algebra
modules
implemented in c++ like Armadillo <http://arma.sourceforge.net/> and
it++<http://itpp.sourceforge.net/4.3.1/>.
Armadillo seems to be the fastest among
these according to the benchmarks
here.<http://arma.sourceforge.net/speed.html>Armadillo focuses on numeric
computations.
Following two links provide useful information about implementing numerical
matrix
algorithms in C++.
http://arma.sourceforge.net/armadillo_nicta_2010.pdf
http://itee.uq.edu.au/~conrad/misc/sanderson_templates_lecture_uqcomp7305.pdf
Generalizing these functions to work with elements from a more general
field rather than
numeric fields won't be that hard. That way we can support symbolic
expressions as well.
We can create a matrix base class and derive matrices which can support a
specific
Field (domain) effectively, like matrices with rational elements or real
elements.
Should we think about the implementation of about sparse/dense or
mutable/immutable
matrices as a part of this project?
Regards,
Thilina
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
To view this discussion on the web visit
https://groups.google.com/d/msgid/sympy/106e81ad-4f07-4603-a909-ad73ce50a4a1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.