GSoC/GCI Archive
Google Summer of Code 2014

SymPy

License: New and Simplified BSD licenses

Web Page: https://github.com/sympy/sympy/wiki/gsoc-2014-ideas

Mailing List: https://groups.google.com/forum/#!forum/sympy

If you plan to apply to SymPy, please read our application template, which provides important instructions on our requirements.

About

SymPy is a Python library for symbolic mathematics. It aims to become a full-featured computer algebra system (CAS) while keeping the code as simple as possible in order to be comprehensible and easily extensible. SymPy is written entirely in Python and does not require any external libraries, which makes it available everywhere Python can be used. It also has a liberal BSD license allowing other open source projects and commercial companies to make use of SymPy in their own projects.

SymPy has a vast array of potential applications, from physics (atomic physics, quantum field theory, general relativity, classical mechanics and dynamics, quantum computing and information...), math (solving algebraic and differential equations, automatic code generation for finite element and other solvers, number theory, group theory, ...), teaching (calculus, integrals, derivatives, limits, polynomial algorithms, ...), web (e.g., it runs on the Google App Engine, see SymPy Live and SymPy Gamma), and it can also be included as a library in any scientific code. There are several commercial applications that use SymPy as the symbolic engine, including some in Google Play and the App Store. SymPy also acts as a core component for other open source projects such as the PyDy project.

SymPy has a large, active development team that has increased non-stop since 2007 (ref: http://www.ohloh.net/p/sympy) thanks to an extensible architecture that enables features to be added easily and in a modular way.

It is built and tested regularly on all major platforms and all major architectures to ensure that it can reach the widest possible audience.

Projects

  • Extending Elementary Functions in CSymPy Currently there are very few functions implemented in CSymPy. I aim to extend the module of the elementary functions further, on the similar lines of SymPy . I expect to implement a certain subset of special functions which are already implemented in SymPy. Since CSymPy is particularly new, almost all the special functions have certain dependencies. The project aims in developing a modular architecture to first implement the dependencies and then develop the special functions
  • GSoC 2014 Application Avichal Dayal Series Expansion Implement formal power series and improve asymptotic expansion
  • Implementation of Propositional and First Order Logic in SymPy This proposal deals with extending the existing module for propositional logic and creating a new module for First Order Logic (FoL). The extension to the propositional module is in the form of faster and more memory efficient algorithms and making the module ready for use by the assumption system. Currently, there exists no support for FoL in SymPy. My idea is to lay down a basic architecture for the same and implement all its essential algorithms and move towards an inference system.
  • Implementation of system of ODEs and Improvement of ODEs solving Engine The project proposal would be to expand the solution engine to include two of these important features. 1.Solving system of Ordinary Differential Equations 2.Solving non classifiable second order Ordinary Differential Equation using Maximal Symmetry Groups
  • Improvements to the Geometry Module The goal of this project is to improve the current geometry module such that it can include some important 3-D and 2-D classes and improve its current classes so that the geometry module works better as a whole.
  • Improving equation solvers The project aims at improving the current equation solver in sympy by: 1. Cleaning up the input API for current solvers 2. Providing a consistent output format by returning sets. 3. Refactoring refactoring solvers to be more robust and reliable so that we can answer questions like, "have we found all the solutions?". 4. Implementing radical denesting and singularity finder.
  • Introducing Optics module My proposal intends to extend the work done related to optics in SymPy by introducing some good applications. Till now we have only module which can do computations related to Gaussian optics and a bit of geometrical optics. My project will cover majorly following branches: General Optics Wave Optics Major results used in optics Adding documentations in the form of IPython notebooks of examples/illustrations provided in a fundamental optics book
  • Linear Algebra Module for CSymPy A Linear Algebra Module for CSymPy will be implemented with special emphasize on Symbolic calculations. The module will thoroughly focus on Matrix Decomposition, Matrix inverse and Solving linear systems.
  • Linearization Routines for Equations of Motion The code provided in sympy.physics.mechanics currently makes it very easy to generate the equations of motion (EOM) for the dynamics of rigid, multibody systems. However, these EOM are typically nonlinear in nature. For analysis, linearizing the equations about equilibrium points, or trajectories is desired. The intent of this project is to create a linearization routine capable of handling multiple varieties of systems of equations correctly, in a way transparent to the user.
  • sympy.vector module Currently, the vector calculus package of sympy, sympy.physics.vector lacks one important thing - compatiblity with the SymPy mainframe. Any person not acquainted with the physics module has no vector framework to work with in SymPy. I want take up this project, a logical continuation of Prasoon and my last year's work, to finally help it end up as a 'vector' package in the top-level sympy hierarchy. The project will also involve basing the mechanics code off the new module.