Commit graph

9 commits

Author SHA1 Message Date
wiz
32e59c4932 Update to 0.7.4.1:
0.7.4.1

These are the release notes for SymPy 0.7.4.1, which was released
on December 15, 2013.

This version of SymPy has been tested on Python 2.6, 2.7, 3.2, 3.3,
and PyPy.

This was a small bugfix release to fix an import issue on Windows
(https://github.com/sympy/sympy/issues/2681).

0.7.4

These are the release notes for SymPy 0.7.4, which was released on
December 9, 2013.

This version of SymPy has been tested on Python 2.6, 2.7, 3.2, 3.3,
and PyPy.
Major changes
Python 3

SymPy now uses a single code-base for Python 2 and Python 3.
Geometric Algebra

The internal representation of a multivector has been changes to
more fully use the inherent capabilities of SymPy. A multivector
is now represented by a linear combination of real commutative
SymPy expressions and a collection of non-commutative SymPy symbols.
Each non-commutative symbol represents a base in the geometric
algebra of an N-dimensional vector space. The total number of
non-commutative bases is 2**N - 1 (N of which are a basis for the
vector space) which when including scalars give a dimension for
the geometric algebra of 2**N. The different products of geometric
algebra are implemented as functions that take pairs of bases
symbols and return a multivector for each pair of bases.

The LaTeX printing module for multivectors has been rewritten to
simply extend the existing sympy LaTeX printing module and the
sympy LaTeX module is now used to print the bases coefficients in
the multivector representation instead of writing an entire LaTeX
printing module from scratch.

The main change in the geometric algebra module from the viewpoint
of the user is the inteface for the gradient operator and the
implementation of vector manifolds:

The gradient operator is now implemented as a special vector (the
user can name it grad if they wish) so the if F is a multivector
field all the operations of grad on F can be written grad*F, F*grad,
grad^F, F^grad, grad|F, F|grad, grad<F, F<grad, grad>F, and F>grad
where **, ^, |, <, and > are the geometric product, outer product,
inner product, left contraction, and right contraction, respectively.

The vector manifold is defined as a parametric vector field in an
embedding vector space. For example a surface in a 3-dimensional
space would be a vector field as a function of two parameters. Then
multivector fields can be defined on the manifold. The operations
available to be performed on these fields are directional derivative,
gradient, and projection. The weak point of the current manifold
representation is that all fields on the manifold are represented
in terms of the bases of the embedding vector space.
Classical Cryptography

Implements:

    Affine ciphers
    Vigenere ciphers
    Bifid ciphers
    Hill ciphers
    RSA and "kid RSA"
    linear feedback shift registers.

Common Subexpression Elimination (CSE)

Major changes have been done in cse internals resulting in a big
speedup for larger expressions. Some changes reflect on the user
side:

    Adds and Muls are now recursively matched ([w*x, w*x*y, w*x*y*z]
    ǹow turns into [(x0, w*x), (x1, x0*y)], [x0, x1, x1*z])
    CSE is now not performed on the non-commutative parts of
    multiplications (it avoids some bugs).
    Pre and post optimizations are not performed by default anymore.
    The optimizations parameter still exists and optimizations='basic'
    can be used to apply previous default optimizations. These
    optimizations could really slow down cse on larger expressions
    and are no guarantee of better results.
    An order parameter has been introduced to control whether Adds
    and Muls terms are ordered independently of hashing implementation.
    The default order='canonical' will independently order the
    terms. order='none' will not do any ordering (hashes order is
    used) and will represent a major performance improvement for
    really huge expressions.
    In general, the output of cse will be slightly different from
    the previous implementation.

Diophantine Equation Module

This is a new addition to SymPy as a result of a GSoC project. With
the current release, following five types of equations are supported.

    Linear Diophantine equation, a_{1}x_{1} + a_{2}x_{2} + . . .
    + a_{n}x_{n} = b
    General binary quadratic equation, ax^2 + bxy + cy^2 + dx + ey
    + f = 0
    Homogeneous ternary quadratic equation, ax^2 + by^2 + cz^2 +
    dxy + eyz + fzx = 0
    Extended Pythagorean equation, a_{1}x_{1}^2 + a_{2}x_{2}^2 +
    . . . + a_{n}x_{n}^2 = a_{n+1}x_{n+1}^2
    General sum of squares, x_{1}^2 + x_{2}^2 + . . . + x_{n}^2 =
    k

Unification of Sum, Product, and Integral classes

A new superclass has been introduced to unify the treatments of
indexed expressions, such as Sum, Product, and Integral. This
enforced common behavior accross the objects, and provides more
robust support for a number of operations. For example, Sums and
Integrals can now be factored or expanded. S.subs() can be used to
substitute for expressions inside a Sum/Integral/Product that are
independent of the index variables, including unknown functions,
for instance, Integral(f(x), (x, 1, 3)).subs(f(x), x**2), while
Sum.change_index() or Integral.transform are now used for other
changes of summation or integration variables. Support for finite
and infinite sequence products has also been restored.

In addition there were a number of fixes to the evaluation of nested
sums and sums involving Kronecker delta functions, see issue 3924
and issue 3987.
Series

    The Order object used to represent the growth of a function in
    series expansions as a variable tend to zero can now also
    represent growth as a variable tend to infinity. This also
    fixed a number of issues with limits. See issue 234 and issue
    2670.

    Division by Order is disallowed, see issue 1756.

    Addition of Order object is now commutative, see issue 1180.

Physics

    Initial work on gamma matrices, depending on the tensor module.

Logic

    New objects true and false which are Basic versions of the
    Python builtins True and False.

Other

    Arbitrary comparisons between expressions (like x < y) no longer
    have a boolean truth value. This means code like if x < y or
    sorted(exprs) will raise TypeError if x < y is symbolic. A
    typical fix of the former is if (x < y) is True (assuming the
    if block should be skipped if x < y is symbolic), and of the
    latter is sorted(exprs, key=default_sort_key), which will order
    the expressions in an arbitrary, but consistent way, even across
    platforms and Python versions. See issue 2832.

    Arbitrary comparisons between complex numbers (for example, I
    > 1) now raise TypeError as well (see PR #2510).

    minpoly now works with algebraic functions, like minpoly(sqrt(x)
    + sqrt(x + 1), y).

    exp can now act on any matrix, even those which are not
    diagonalizable. It is also more comfortable to call it, exp(m)
    instead of just m.exp(), as was required previously.

    sympify now has an option evaluate=False that will not
    automatically simplify expressions like x+x.

    Deep processing of cancel and simplify functions. simplify is
    now recursive through the expression tree. See e.g. issue 3923.

    Improved the modularity of the codebase for potential subclasses,
    see issue 3652.

    The SymPy cheatsheet was cleaned up.

Backwards compatibility breaks and deprecations

    Removed deprecated Real class and is_Real property of Basic,
    see issue 1721.
    Removed deprecated 'each_char' option for symbols(), see issue
    1919.
    The viewer="StringIO" option to preview() has been deprecated.
    Use viewer="BytesIO" instead. See issue 3984.
    TransformationSet has been renamed to ImageSet. Added public
    facing imageset function.


0.7.3

These are the release notes for SymPy 0.7.3, which was released on
July 13, 2013. It can be downloaded from
https://github.com/sympy/sympy/releases/tag/sympy-0.7.3.

This version of SymPy has been tested on Python 2.5, 2.6, 2.7, 3.2,
3.3, and PyPy.
Major changes
Integration

This release includes Risch integration algorithm from Aaron Meurer's
2010 Google Summer of Code project. This makes integrate much more
powerful and much faster for the supported functions. The algorithm
is called automatically from integrate(). For now, only transcendental
elementary functions containing exp or log are supported. To access
the algorithm directly, use integrate(expr, x, risch=True). The
algorithm has the ability to prove that integrals are nonelementary.
To determine if a function is nonelementary, integrate using
risch=True. If the resulting Integral class is an instance of
NonElementaryIntegral, then it is not elementary (otherwise, that
part of the algorithm has just not been implemented yet).

Here is an example integral that could not be computed before:

>>> f = x*(x + 1)*(2*x*(x - (2*x**3 + 2*x**2 + x + 1)*log(x +
1))*exp(3*x**2) + (x**2*exp(2*x**2) - log(x + 1)**2)**2)/((x +
1)*log(x + 1)**2 - (x**3 + x**2)*exp(2*x**2))**2
>>> integrate(f, x)
x + x*exp(x**2)*log(x + 1)/(x**2*exp(2*x**2) - log(x + 1)**2) -
log(x + 1) - log(exp(x**2) - log(x + 1)/x)/2 + log(exp(x**2) +
log(x + 1)/x)/2

ODE

    Built basic infrastructure of the PDE module (PR #1970)

Theano Interaction

SymPy expressions can now be translated into Theano expressions
for numeric evaluation. This includes most standard scalar operations
(e.g. sin, exp, gamma, but not beta or MeijerG) and matrices. This
system generally outperforms lambdify and autowrap but does require
Theano to be installed.
Matrix Expressions
Assumptions

Matrix expressions now support inference using the new assumptions
system. New predicates include invertible, symmetric, positive_definite,
orthogonal, ....
New Operators

New operators include Adjoint, HadamardProduct, Determinant,
MatrixSlice, DFT. Also, preliminary support exists for factorizations
like SVD and LU.
Context manager for New Assumptions

Added the with assuming(*facts) context manager for new assumptions.
See blogpost
Backwards compatibility breaks and deprecations

    This is the last version of SymPy to support Python 2.5.

    The IPython extension, i.e., %load_ext
    sympy.interactive.ipythonprinting is deprecated. Use from sympy
    import init_printing; init_printing() instead. See issue 3914.

    The viewer='file' option to preview without a file name is
    deprecated. Use filename='name' in addition to viewer='file'.
    See issue 3919.

    The deprecated syntax Symbol('x', dummy=True), which had been
    deprecated since 0.7.0, has been removed. Use Dummy('x') or
    symbols('x', cls=Dummy) instead. See issue 3378.

    The deprecated Expr methods as_coeff_terms and as_coeff_factors,
    which have been deprecated in favor of as_coeff_mul and
    as_coeff_add, respectively (see also as_coeff_Mul and as_coeff_Add),
    were removed. The methods had been deprecated since SymPy 0.7.0.
    See issue 3377.

    The spherical harmonics have been completely rewritten. See PR
    #1510.

Minor changes
Solvers

    Added enhancements and improved the methods of solving exact
    differential equation ((PR #1955)) and ((PR #1823))
    Support for differential equations with linear coefficients
    and those that can be reduced to separable and linear form ((PR
    #1940), (PR #1864), (PR #1883))
    Support for first order linear general PDE's with constant
    coefficients ((PR #2109))
    Return all found independent solutions for underdetermined
    systems.
    Handle recursive problems for which y(0) = 0.
    Handle matrix equations.

Integration

    integrate will split out integrals into Piecewise expressions
    when conditions must hold for the answer to be true. For example,
    integrate(x**n, x) now gives Piecewise((log(x), Eq(n, -1),
    (x**(n + 1)/(n + 1), True)) (previously it just gave x**(n +
    1)/(n + 1))
    Calculate Gauss-Legendre and Gauss-Laguerre points and weights
    (PR #1497)
    Various new error and inverse error functions (PR #1703)
    Use in heurisch for more symmetric and nicer results
    Gruntz for expintegrals and all new erf*
    Li, li logarithmic integrals (PR #1708)
    Integration of li/Li by heurisch (PR #1712)
    elliptic integrals, complete and incomplete
    Integration of complete elliptic integrals by meijerg
    Integration of Piecewise with symbolic conditions.
    Fixed many wrong results of DiracDelta integrals.

Logic

    Addition of SOPform and POSform functions to sympy.logic to
    generate boolean expressions from truth tables.
    Addition of simplify_logic function and enabling simplify() to
    reduce logic expressions to their simplest forms.
    Addition of bool_equals function to check equality of boolean
    expressions and return a mapping of variables from one expr to
    other that leads to the equality.
    Addition of disjunctive normal form methods - to_dnf, is_dnf

Others

    gmpy version 2 is now supported
    Added is_algebraic_expr() method (PR #2176)
    Many improvements to the handling of noncommutative symbols:
	Better support in simplification functions, e.g. factor,
	trigsimp
	Better integration with Order()
	Better pattern matching
    Improved pattern matching including matching the identity.
    normalizes Jacobi polynomials
    Quadrature rules for orthogonal polynomials in arbitrary
    precision (hermite, laguerre, legendre, gen_legendre, jacobi)
    summation of harmonic numbers
    Many improvements of the polygamma functions
    evaluation at special arguments
    Connections to harmonic numbers
    structured full partial fraction decomposition (mainly interesting
    for developers)
    besselsimp improvements
    Karr summation convention
    New spherical harmonics
    improved minimal_polynomial using composition of algebraic
    numbers (PR #2038)
    faster integer polynomial factorization (PR #2148)
    Euler-Descartes method for quartic equations (PR #1947)
    algebraic operations on tensors (PR #1700)
    tensor canonicalization (PR #1644)
    Handle the simplification of summations and products over a
    KroneckerDelta.
    Implemented LaTeX printing of DiracDelta, Heaviside, KroneckerDelta
    and LeviCivita, also many Matrix expressions.
    Improved LaTeX printing of fractions, Mul in general.
    IPython integration and printing issues have been ironed out.
    Stats now supports discrete distributions (e.g. Poisson) by
    relying on Summation objects
    Added DOT printing for visualization of expression trees
    Added information about solvability and nilpotency of named
    groups.
2014-01-21 08:38:04 +00:00
wen
c2b9662792 Update to 0.7.2
Upstream changes:
Release Notes for 0.7.2New Page Edit Page Page History
These are the release notes for SymPy 0.7.2. SymPy 0.7.2 was released on October 16, 2012.

Major Changes
Python 3 support

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

PyPy support

All SymPy tests pass in recent nightlies of PyPy, and so it should have full support as of the next version after 1.9.

Combinatorics

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.

In another GSoC project, facilities from computational group theory were added to the combinatorics module, mainly following the book "Handbook of computational group theory". Currently only permutation groups are supported. The main functionalities are: basic properties (orbits, stabilizers, random elements...), the Schreier-Sims algorithm (three implementations, in increasing speed: with Jerrum's filter, incremental, and randomized (Monte Carlo)), backtrack searching for subgroups with certain properties.

Definite Integration

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.

Random Variables

A new module called stats was added. This introduces a RandomSymbol type which can be used to model uncertainty in expressions.

Matrix Expressions

A new matrix submodule named expressions was added. This introduces a MatrixSymbol type which can be used to describe a matrix without explicitly stating its entries. A new family of expression types were also added: Transpose, Inverse, Trace, and BlockMatrix. ImmutableMatrix was added so that explicitly defined matrices could interact with other SymPy expressions.

Sets

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.

Classical Mechanics

A physics submodule named machanics was added which assists in formation of equations of motion for constrained multi-body systems. It is the result of 3 GSoC projects. Some nontrivial systems can be solved, and examples are provided.

Quantum Mechanics

Density operator module has been added. The operator can be initialized with generic Kets or Qubits. 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 the core library. While the functionality should remain same, this module is likely to be relocated to an alternate 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.

Commutative Algebra

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 (generalized) polynomial ring over a field. Based on this, there are algorithms for various standard problems in commutative algebra, e.g., computing intersections of submodules, equality tests in quotient rings, etc....

Plotting Module

A new plotting module has been added which uses Matplotlib as its back-end. The plotting module has functions to plot the following:

2D line plots
2D parametric plots.
2D implicit and region plots.
3D surface plots.
3D parametric surface plots.
3D parametric line plots.
Differential Geometry

Thanks to a GSoC project the beginning of a new module covering the theory of differential geometry was started. It can be imported with sympy.diffgeom. It is based on "Functional Differential Geometry" by Sussman and Wisdom. Currently implemented are scalar, vector and form fields over manifolds as well as covariant and other derivatives.
2012-12-02 12:33:23 +00:00
drochner
b5f18649ed update to 0.7.1
This is a major update, many additions and improvements.
Dropped Python-2.4 support.
2012-02-24 19:43:03 +00:00
drochner
ecc5605a7a update to 0.6.7, from Kamel Derouiche per PR pkg/43731
changes:
-implement visual factorint()
-implement symarray(): numpy array of sympy symbols
-misc fixes and improvements
2010-08-11 13:36:48 +00:00
drochner
dc60175ec0 update to 0.6.6
many fixes and improvements, too much to list here
2010-01-27 14:21:19 +00:00
drochner
2a25636d4c update to 0.6.5
This is a major update - many extensions and improvements.
2009-09-15 11:30:55 +00:00
joerg
62d1ba2bac Remove @dirrm entries from PLISTs 2009-06-14 18:03:28 +00:00
drochner
5a1bc43f73 update to 0.5.15
changes: feature extensions and fixes
2008-05-29 17:59:25 +00:00
drochner
1db6744951 import py-sympy-0.5.14, a Python library for symbolic calculations 2008-05-05 19:10:02 +00:00