-
Notifications
You must be signed in to change notification settings - Fork 0
GSoC 2010 Ideas
The main GSoC SymPy page is here: http://code.google.com/p/sympy/wiki/GSoC2010
Please add new ideas here. And remember, that you can apply with something completely different if you like (if you are a student, interested in applying, please get in touch with us on our sympy mailinglist, so that we can help you with the application). This is for inspiration. In no particular order. Ideas in bold are ones that we would really like to have implemented. Some of this was copied from the old list, so they might be outdated. Checkout the current source or asking on the mailing list to see where things presently stand:
- 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
- Add support for solving inequalities, and support for assumptions like Assume(x>y) (I think these two will require each other).
- 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 I think some of this might already be implemented with the new assumptions. Check the source. -Aaron
- 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 Don't we already have this? -Aaron
- 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)
- ordinary differential equations. Currently, SymPy only supports many basic types of differential equations, but there are plenty of methods that are not implemented. Maybe support for using Lie groups to help solve ODEs. See the ODE docs and the current source (sympy/solvers/ode.py) for information on what methods are currently implemented. Also, there is no support currently for solving systems of ODEs. You also might want to look at Manuel Bronstein's sumit
- partial differential equations. Currencly, SymPy can solve only very simple case of separable PDEs.
- 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 :)
-
Symbolic quantum mechanics in SymPy. The follow would each probably be a solid summer's work (or more).
- Abstract Dirac notation, including Hilbert spaces, Operators, States, Basis sets, density matrices, measurement, etc.
- Spin states and operators for arbitrary spin. This would include things like angular momentum coupling, Clebsch-Gordon coefficient, Wigner 3j and 6j, etc.
- Position and momentum basis functions on arbitrary intervals and sets in 1D, 2D and 3D. Use to implement basis quantum systems like particle in a box, H atom, simple harmonic oscillator, scattering, etc.
- Symbolic quantum computing: qubits, gates, algorithms, measurement, noise, error-correction.
- Second quantization capabilities: Wick's theorem for Bosons, port to new assumption system, port to new general quantum module.
Note: Some of this material was just copied from Last Year's List, but we have started to update it.
Abstract Dirac notation
- Status:
http://github.com/ellisonbg/sympy/tree/quantum
- Idea:
- Rating: 3 (moderate)
- Status:
- Idea:
- Rating: 3-4 (moderate-hard)
- Status:
- Idea:
- Rating: 3-4 (moderate-hard)
- Status:
- Idea:
- Rating: 3-5 (hard)
Status:
SymPy currently has a good bit of second quantization implemented here:
http://github.com/ellisonbg/sympy/blob/master/sympy/physics/secondquant.py
However, there are many things we could do to improve this and add more sophisticated capabilities.
- Idea:
1. Refactor to use the new assumptions system. 2. Refactor to use the new base quantum layer we are developing (see above). 3. Implement Wick's theorem for Bosons, including the macroscopic population of the ground states. 4. Density matrices. 5. Time evolution. 6. Various approximations, such as perturbation theory, Hartree-Fock, time-dependent Hartree-Fock, Hartree-Fock-Bogoliubov, etc. 7. Implement new functions for simplifying products of second quantized operators in different ways (such as moving an annihilation operator R).
- Rating: 5 (hard)
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:
- Aaron Meurer - If I don't decide to apply as a student, I would love to be a mentor.
- Ondrej Certik
- Brian E. Granger: I am willing to mentor any of the physics related projects.
- Andy R. Terrel