forked from sympy/sympy
-
Notifications
You must be signed in to change notification settings - Fork 0
GSoC 2009 Ideas
Aaron Meurer edited this page Mar 9, 2011
·
1 revision
The main GSoC SymPy page is here: http://code.google.com/p/sympy/wiki/GSoC2009
Please add new ideas here. And remember, that you can apply with something completely different if you like. This is for inspiration. In no particular order:
- anything from our roadmap
- integrate our experimental Cython core into SymPy
- asymptotic series
- port to Python 3.0 ()
- improve the integration algorithm, so that SymPy can integrate anything that can be integrated.
- implement recursive Risch algorithm (compare with heuristic version)
- improve integration of rational functions (via subresultants)
- integration of functions on domains of maximum extent, etc.
- definite integration & integration on complex plane using residues
- Groebner bases and their applications in geometry, simplification and integration
- improve Buchberger's algorithm and implement Faugere F4 (compare their speed)
- improve polynomial algorithms (gcd, factorization) by allowing coefficients in algebraic extensions of the ground domain
- implement efficient multivariate polynomials (arithmetics, gcd, factorization)
- choose a polynomial representation (e.g. recursive dense) or use task dependent representations
- implement efficient arithmetics (e.g. using geobuckets (Yan) or heaps (Monagan & Pearce))
- implement factorization algorithm (Musser's or Wang's EEZ (better)) and gcd (e.g. EEZ-GCD)
- provide high-level OO abstraction over polynomial tools you've developed
- improve SymPy's pattern matching abilities (efficiency and generality)
- experiment with regular expressions over SymPy's algebraic expressions
- implement similarity measure between expression trees
- expression complexity measures (e.g. Kolmogorov's complexity)
- implement expressions signatures and heuristic equivalence testing
- implement semantic matching (e.g. expression: cos(x), pattern: sin(a*x) + b)
- e.g by using power series for this purpose (improve series speed)
- matching of Python's objects (lists, sets, tuples etc.)
- use pure Python syntax for all this (no preparsing)
- improve simplification and term rewriting algorithms
- add (improve) verbatim and semi-verbatim modes (more control on expression rewriting)
- fix annoying minus sign rewriting problem (separate internal representation and printing)
- extend simplify() function to support something more than rational functions (see trim())
- implement more expression rewrite functions (to an exact form that user specifies)
- maybe put transformation rules in an external database (e.g. prolog), what about speed?
- improve context (e.g. input) depended simplification steps in different algorithms
- e.g. the integrator needs different sets of rules to return "better" output for different input
- but there are more: recurrences, summations, solvers, polynomials with arbitrary coefficients
- what about information carried by expressions?
- what is simpler: chebyshevt(1, x) or x ?
- what is simpler: chebyshevt(1000, x) or (...) ?
- implement symbolic (formal) logics and set theory
- implement predicate (e.g. first-order), modal, temporal, description logics
- implement multivalued logics; fuzzy and uncertain logics and variables
- implement rewriting, minimization, normalization (e.g. Skolem) of expressions
- implement set theory, cardinal numbers, relations etc.
- add nice unicode, latex and mathml pretty printing
- maybe use user dependent sets of symbols e.g. for implication (=>), (->)
- add drawing of Venn diagrams (e.g. for educational purpose)
- improve SymPy's logic facilities to boost assumptions engine
- implement symbolic global optimization (value, argument) with/without constraints, use assumptions
- improve the series expansion (relevant issues)
- formal power series (FPS)
- improve limits - make sure all basic limits work
- objects with indices (tensors)
- improve the plotting module:
- better matplotlib integration
- extract the math TeX typesetting engine from matplotlib (it has some external dependencies on freetype and Agg that will need to be resolved), and integrate it in our plotting lib (maybe create a new project for this engine)
- generalized functions -- Dirac delta, P(1/x), etc... Convolution, Fourier and Laplace transforms
- vector calculus, differential fields, maybe Lie algebras & groups
- parametric integrals asymptotic expansion (integral series)
- differential equations (currently SymPy only supports some very simple ones)
- increase image processing of PIL+SymPy functionality to match that of octave or matlab
- improve SymPy's interoperatibility with other CAS software
- implement general code parsing (Mathematica, Maxima, Axiom etc.) using e.g. pyparsing
- implement Python + SymPy (structure + semantics) translation to your favorite CAS (other than SymPy :)
Efficient Groebner bases and their applications
- Status:
- Idea:
- Rating: 5 (very hard)
- Status:
- Idea:
- Rating: 4-5 (quite hard)
- Status:
- Idea:
- Rating: 4-5 (quite hard)
Implement Risch algorithm, a decision procedure for symbolic integration
- Status:
- Idea:
- Rating: 3-5 (quite hard)
- Status:
- Idea:
- Rating: 3-5 (quite hard)
- Status:
- Idea:
Rating: 3-4 (hard)
Implement Karr algorithm, a decision procedure for symbolic summation
- Status:
- Idea:
- Rating: 3-5 (quite hard)
If you are willing to mentor, please add yourself here:
- Ondrej Certik
- David Joyner (for DEs or image processing)
- Mateusz Paprocki