-
Notifications
You must be signed in to change notification settings - Fork 0
Release Notes for 0.7.2
These are the release notes for SymPy 0.7.2. SymPy 0.7.2 was released on December 1, 2011. (TODO)
SymPy now supports Python 3. The officially supported versions are 3.2 and 3.3, but 3.1 should also work in a pinch. The Python 3-compatible tarballs will be provided separately, but it is also possible to download Python 2 code and convert it manually, via the bin/use2to3 utility. See the README for more information.
A new module called Combinatorics was added which is the result of a successful GSoC project. It attempts to replicate the functionality of Combinatorica and currently has full featured support for Permutations, Subsets, Gray codes and Prufer Codes.
A new module called meijerint was added, which is also the result of a successful GSoC project. It implements a heuristic algorithm for (mainly) definite integration, similar to the one used in Mathematica. The code is automatically called by the standard integrate() function. This new algorithm allows computation of important integral transforms in many interesting cases, so helper functions for Laplace, Fourier and Mellin transforms were added as well.
A new module called stats was added. This introduces a RandomSymbol type which can be used to model uncertainty in expressions.
A new matrix expressions module was added. This introduces a MatrixSymbol type which can be used to describe a matrix without explicitly stating its entries. A new family of expressions types Transpose, Inverse, Trace, BlockMatrix were also added. ImmutableMatrix was added so that explicitly defined matrices could interact with other SymPy expressions.
A number of new sets were added including atomic sets like FiniteSet, Reals, Naturals, Integers, UniversalSet as well as compound sets like ProductSet and TransformationSet. Using these building blocks it is possible to build up a great variety of interesting sets.
A physics submodule was added which assists in formation of equations of motion for constrained multibody systems. It is the result of 3 GSoC projects. Some nontrivial systems can be solved, and examples are provided.
Density operator module has been added. The operataor can be initialized with generic Kets or Qubits are arguments. The Density operator can also work with TensorProducts as arguments. Global methods are also added that compute entropy and fidelity of states. Trace and partial trace operations can also be performed on these density operators.
To enable partial trace operations a Tr module has been added to core library. While the functionality should remain same, this module is likely to be relocated to alternative folder in the future. One can currently also use sympy.core.Tr to work on general trace operations, but this module is what is needed to work on trace and partial_trace operations on any sympy.physics.quantum objects.
The Density operators, Tr and Partial trace functionality was implemented as part of student participation in GSoC 2012
Expanded angular momentum to include coupled basis states and product basis states. Operators can also be treated as acting on the coupled basis (default behavior) or on one component of the tensor product states. The methods for coupling and uncoupling these states can work on an arbitrary number of states. Representing, rewriting and applying states and operators between bases has been improved.
A new module agca
was started which seeks to support computations in commutative algebra (and eventually algebraic geometry) in the style of Macaulay2 and Singular. Currently there is support for computing groebner bases of modules over a (generalised) polynomial ring over a field. Basing on this, there are algorithms for various standard problems in commutative algebra, e.g. computing intersections of submodules, equality tests in quotient rings, etc.
-KroneckerDelta class is moved from sympy/physics/quantum/kronecker.py to sympy/functions/special/tensor_functions.py.
-Merged the KroneckerDelta class in sympy/physics/secondquant.py with the class above.
-Dij class in sympy/functions/special/tensor_functions.py is replaced with KroneckerDelta.
-The errors raised for invalid float
calls on SymPy objects were changed in order to emulate more closely the errors raised by the standard library. The __float__
and __complex__
methods of Expr
are concerned with that change.
-The solve()
function returns empty lists instead of None
objects if no solutions were found. Idiomatic code of the form sol = solve(...); if sol:...
will not be affected by this change.
-Piecewise no longer accepts a Set or Interval as a condition. One should explicitly specify a variable using Set().contains(x) to obtain a valid conditional.
-sympy/galgebra/GA.py:
- set_main() is no longer needed
- make_symbols() is deprecated (use sympy.symbols() instead)
- the symbols used in this package are no longer broadcast to the main program
- The classes for Infinity, NegativeInfinity, and NaN no longer subclass from Rational. Creating a Rational with 0 in the denominator will still return one of these classes, though.
A new module gaussopt
was added supporting the most basic constructions from Gaussian optics (ray tracing matrices, geometric rays and Gaussian beams).
New classes were added to represent the following special functions: classical and generalised exponential integrals (Ei, expint), triginometric (Si, Ci) and hyperbolic integrals (Shi, Chi), the polylogarithm (polylog) and the lerch transcendent (lerchphi). In addition to providing all the standard sympy functionality (differentiation, numerical evaluation, rewriting ...), they are supported by both the new meijerint module and the existing hypergeometric function simplification module.
TODO is this too minor?: The algorithm for simplifying gamma functions using combsimp() was vastly improved.
In addition to the more noticeable changes listed above, there have been numerous other smaller additions, improvements and bug fixes in the TODO commits in this release. See the git log for a full list of all changes. The command git log sympy-0.7.1..sympy-0.7.2
will show all commits made between this release and the last. You can also see the issues closed since the last release here. (TODO: update this if release date changes)
The expand API has been updated. expand()
now officially supports arbitrary
_eval_expand_hint()
methods on custom objects. _eval_expand_hint()
methods are now only responsible for expanding the top-level expression. All
deep=True
related logic happens in expand()
itself. See the
docstring of expand()
for more information and an example.
Two options were added to isympy
to aid in interactive usage. isympy -a
automatically creates symbols, so that typing something like a
will give
Symbol('a')
, even if you never typed a = Symbol('a')
or var('a')
.
isympy -i
automatically wraps integer literals with Integer, so that 1/2
will give Rational(1, 2)
instead of 0.5
. isympy -I
is the same as
isympy -a -i
. isympy -I
makes isympy act much more like a traditional
interactive computer algebra system. These both require IPython.
The official documentation at http://docs.sympy.org now includes an extension that automatically hooks the documentation examples in to SymPy Live.
The following people contributed at least one patch to this release (names are given in alphabetical order by last name). A total of 35 people contributed to this release. People with a * by their names contributed a patch for the first time for this release. Six people contributed for the first time for this release. TODO: This was written on Nov 15th, we should check if something changed right before the actual release (i.e., new GCI contributors).
Thanks to everyone who contributed to this release!
- Tom Bachmann
- Raoul Bourquin*
- Ondřej Čertík
- Roberto Colistete-Jr*
- Renato Coutinho
- Luis Garcia*
- Gilbert Gede
- Brian Granger
- Gert-Ludwig Ingold*
- Fredrik Johansson
- Stefan Krastanov
- Priit Laes
- Tim Lahey
- Ronan Lamy
- Tomo Lazovich
- Dale Lukas Peterson
- Sam Magura
- Saptarshi Mandal
- Miha Marolt*
- Aaron Meurer
- Jason Moore
- Mateusz Paprocki
- Vladimir Perić
- Mario Pernici
- Nicolas Pourcelot
- Julien Rioux*
- Matthew Rocklin
- Nikhil Sarda
- Chris Smith
- Prafullkumar P. Tale (Hector)
- Alexey U. Gudchenko
- Srinivas Vasudevan
- Sean Vig
- Luca Weihs
- Jeremias Yehdegho