Release Notes for 1.7 - sympy/sympy GitHub Wiki
These are the release notes for SymPy 1.7. You can also find release notes for previous versions.
SymPy 1.7 was released on 29th November 2020.
This version of SymPy has been tested on Python 3.6, 3.7, 3.8, 3.9 and PyPy. See our Python version support policy for more information on when we plan to drop support for older Python versions.
Note in particular that SymPy 1.5.1 was the last release to support Python 2.7. SymPy 1.7 will not work on Python 2.7. Python 2.7 users should install SymPy 1.5.1 and will not be able to install any further SymPy updates without updating to Python 3.
Install SymPy with
pip install -U sympy
or if you use Anaconda
conda install sympy
Highlights
There are many changes in 1.7 (see below).
Backwards compatibility breaks and deprecations
-
core
-
Modules and names that were accidentally importable from sympy are no longer importable. In sympy 1.6 importing and using these names would give a deprecation warning. In sympy 1.7 these names are removed. As an example
from sympy import add
would need to befrom sympy.core import add
orimport sympy.core.add
asadd
. (#19554 by @oscarbenjamin) -
DEPRECATION: Using non-Expr args in Add, Mul or Pow is now deprecated (#19445 by @oscarbenjamin)
-
-
diffgeom
-
Manifold.patches
attribute is deprecated. (#19368 by @JSS95 and @mcpl-sympy) -
Patch.coord_systems
attribute is deprecated. (#19368 by @JSS95 and @mcpl-sympy) -
Class signature names of
CoordSystem
is deprecated.CoordinateSymbol
class andCoordSystem.symbols
attribute are introduced instead. (#19368 by @JSS95 and @mcpl-sympy) -
CoordSystem.transforms
,CoordSystem.connect_to
, andCoordSystem.coord_tuple_transform_to
are deprecated. Class signature relations,CoordSystem.transformation
andCoordSystem.transform
are introduced instead. (#19368 by @JSS95 and @mcpl-sympy)
-
-
printing
-
sympy.printing.pretty.pretty_symbology.xstr
has been deprecated (#20081 by @eric-wieser) -
The
unicode
argument tosympy.printing.stringpict.prettyForm
has been deprecated (#20081 by @eric-wieser) -
The deprecation of calling
preview
withviewer="StringIO"
is now expired instead of forgotten (a regression in 1.6.0) (#19905 by @eric-wieser) -
The modules
sympy.printing.ccode
,sympy.printing.fcode
, andsympy.printing.cxxcode
have been renamed tosympy.printing.c
,sympy.printing.fortran
, andsympy.printing.cxx
, respectively. This was done to avoid conflicts that occur when a module name is the same as a function name. The modules are still importable under their old names but doing so is deprecated and a warning will be given (#19908 by @asmeurer) -
from sympy.printing.codeprinter import Assignment
no longer works. You should usefrom sympy.codegen import Assignment
, which is whereAssignment
has lived since SymPy 1.1. (#19908 by @asmeurer) -
Calling
preview
withviewer="file"
no longer looks for afile
executable (a regression in 1.6.0) (#19905 by @eric-wieser)
-
-
solvers
- solve_linear_system is now a thin wrapper for linsolve. It is recommended to use linsolve in new code. solve_linear_system maybe deprecated or removed in future. (#18814 by @oscarbenjamin)
-
utilities
find_executable
is deprecated in favor of the builtinshutil.which
. (#19634 by @eric-wieser)
Changes
-
algebras
- Added DocString for integrate function of quaternion class. (#19410 by @mohitshah3111999)
-
codegen
sympy.codegen
andsympy.combinatorics
are no longer imported as part offrom sympy import *
. The codegen and combinatorics modules do not have any names that are included in the top-level namespace, so their being imported with the top-level SymPy was a mistake. This improves the import time offrom sympy import *
. (#19908 by @asmeurer)
-
combinatorics
- Fixed a bug in PermutationGroup.minimal_blocks caused by modifying a list while iterating over its indices. (#19954 by @ilya-pchelintsev)
-
concrete
- Implemented Raabe's Test (#18656 by @sachin-4099)
-
core
-
Fixed a few broken cases of expr.is_integer (#20450 by @coproc and @tbennun)
-
Modules and names that were accidentally importable from sympy are no longer importable. In sympy 1.6 importing and using these names would give a deprecation warning. In sympy 1.7 these names are removed. As an example
from sympy import add
would need to befrom sympy.core import add
orimport sympy.core.add
asadd
. (#19554 by @oscarbenjamin)
-
Zero raised to power Negative Infinity gives ComplexInfinity(zoo) instead of zero (#20212 by @sidhu1012)
-
Extensible
add
,mul
andpower
functions are introduced to allow sympy objects to define what classes should be used for them in place ofAdd
,Mul
andPow
(e.g. matrices useMatAdd
). This is an experimental approach aimed at enabling the behaviour of core routines (expand, collect, etc) to be customised by user-defined types (e.g.MatAdd
rather thanAdd
). This mechanism is still experimental, is not fully implemented across the core and might be changed or removed in a future release of sympy. (#19463 by @JSS95 and @mcpl-sympy)
-
Dict
operations no longer automatically converts strings into SymPy types. (#19911 by @asmeurer) -
Dict
operations no longer raise SympifyError. (#19911 by @asmeurer)
-
Fixes
_eval_nseries()
function ofpower.py
(#19508 by @sachin-4099) -
DEPRECATION: Using non-Expr args in Add, Mul or Pow is now deprecated (#19445 by @oscarbenjamin)
-
When creating an Add or Mul with evaluate=False identities (0 or 1) are no longer removed. (#19450 by @oscarbenjamin)
-
Fixes
_eval_nseries()
function ofmul.py
(#19369 by @sachin-4099) -
Sum
is now included incount_ops
results (#19261 by @smichr) -
match
has been optimized to improve term-matching in Add (#19261 by @smichr) -
match
will automatically ignore bound symbols when matching (#19261 by @smichr) -
match
results will no longer contain extraneous symbols (only those requested) (#19261 by @smichr) -
as_dummy
should give a canonical result for expressions having bound symbols (#19261 by @smichr) -
Lambdas written in terms of different symbols will no longer compare equal; this was an abuse of the Python
==
operator (#19261 by @smichr) -
expr: A new method
is_meromorphic
is added. (#19306 by @jksuom)
-
-
diffgeom
-
Manifold.patches
attribute is deprecated. (#19368 by @JSS95 and @mcpl-sympy) -
Patch.coord_systems
attribute is deprecated. (#19368 by @JSS95 and @mcpl-sympy) -
Class signature names of
CoordSystem
is deprecated.CoordinateSymbol
class andCoordSystem.symbols
attribute are introduced instead. (#19368 by @JSS95 and @mcpl-sympy) -
CoordSystem.transforms
,CoordSystem.connect_to
, andCoordSystem.coord_tuple_transform_to
are deprecated. Class signature relations,CoordSystem.transformation
andCoordSystem.transform
are introduced instead. (#19368 by @JSS95 and @mcpl-sympy) -
CoordSystem.jacobian_determinant
method is introduced. (#19368 by @JSS95 and @mcpl-sympy)
-
-
functions
-
lambdify
added a warning when args is aset
. (#19792 by @foice, @RobertoFranceschini, and @sylee957) -
Fixes
_eval_nseries
method oflog
(#20002 by @sachin-4099) -
Adds
_eval_is_meromorphic
method and_eval_aseries
toclass lowergamma
(#19990 by @sachin-4099) -
Adds
_eval_is_meromorphic
method and_eval_rewrite_as_tractable
method toclass uppergamma
(#19990 by @sachin-4099) -
Rectifies
eval
method ofclass besselk
(#19990 by @sachin-4099) -
Adds
_eval_is_meromorphic
tobessel
function. (#19963 by @sachin-4099) -
Adds
_eval_nseries
function tosin
andcos
. (#19916 by @sachin-4099) -
reduced symbolic multiples of pi in trigonometric functions (#19741 by @sachin-4099)
-
fixed errors in assumptions when rewriting
RisingFactorial
/FallingFactorial
asgamma
orfactorial
(#18696 by @sachin-4099) -
Adds
_singularities
toLambertW
function (#19716 by @sachin-4099) -
Rectifies
_eval_rewrite_as_tractable
method ofclass erf
(#19697 by @sachin-4099) -
Improved condition checking in
piecewise_simplify()
(#19596 by @dhruvmendiratta6 and @smichr) -
Implemented _eval_rewrite_as_Abs() for sign (#19487 by @dhruvmendiratta6)
-
Adds
cdir
parameter to handleseries expansions
onbranch cuts
(#19555 by @sachin-4099) -
Adds
_eval_rewrite_as_factorial()
and_eval_rewrite_as_gamma()
functionalities forsubfactorial
(#19515 by @sachin-4099) -
Fixed
cot.as_real_imag
(sign error in imaginary part) (#19468 by @DaveWitteMorris and @gschintgen) -
Corrects the
_eval_as_leading_term()
method oftan
andsec
functions (#19461 by @sachin-4099) -
bsplines are more robust in terms of handling symbolic knots (#19272 by @smichr)
-
-
geometry
- Ellipses with
eccentricity >=1
and foreccentricity < 0
will be handled as trivial cases (#20045 by @agrawalshubham01)
- Ellipses with
-
integrals
- upgrades to manualintegrate to support inverse trig functions! (#19993 by @iammosespaulr)
-
interactive
- The
_repr_latex_
,_repr_svg_
, and_repr_png_
methods of subclasses of sympy objects are no longer discarded wheninit_printing()
is called. (#19944 by @eric-wieser)
- The
-
logic
- Binary boolean operators on
Boolean
objects no longer coerce strings (#20093 by @eric-wieser)
- Binary boolean operators on
-
matrices
-
Adding an array and a matrix now consistently gives TypeError. (#20159 by @sidhu1012)
-
changed subs function to check if input is zip (#19159 by @czgdp1807 and @gfolbe318)
-
added tests in test_commonmatrix.py (#19159 by @czgdp1807 and @gfolbe318)
-
The ordering of parameters in a parametrised solution from
gauss_jordan_solve
was fixed. Previously incorrect results were returned for some underdetermined systems. (#19885 by @1124816) -
Added class
MatrixSet
to represent the set of matrices (#19826 by @Smit-create) -
Disabled default matrix intermediate product simplification and changed it to enable via context manager. (#19588 by @oscarbenjamin and @Pristine-Cat)
-
Use more efficient Cholesky factorization method to check if matrices are positive semidefinite. (#19573 by @galbwe)
row_del
andcol_del
will raiseIndexError
rather thanValueError
when the index is out of bounds. (#19571 by @sylee957)
-
Fixed a bug in the implementation of Sylvester's criterion for determining if a matrix is positive semidefinite. (#19556 by @galbwe)
-
Explicit non-matrix are treated as scalar (#19533 by @mloubout)
-
QRdecomposition
will return matrices with zero rows and columns for zero rank matrices. e.g.Matrix([0, 0, 0], [0, 0, 0], [0, 0, 0](/sympy/sympy/wiki/0,-0,-0],-[0,-0,-0],-[0,-0,-0))
will be decomposed withMatrix(3, 0, [])
andMatrix(0, 3, [])
(#19319 by @sylee957) -
Added
Matrix.companion
for creating dense companion matrix. (#19339 by @sylee957) -
Added
CompanionMatrix
for creating a symbolic companion matrix. (#19339 by @sylee957) -
Matrix([]).eigenvals(multiple=True)
will give an empty list instead of an empty dict. (#19355 by @sylee957)
Determinant
is now considered commutative. (#19354 by @eric-wieser)
-
-
ntheory
-
parsing
- Added support for while loop in C Parser (#20188 by @smitgajjar)
-
Upgraded Relational Operator support (#19982 by @iammosespaulr)
-
Bra-Ket Notation support (#19982 by @iammosespaulr)
-
Improved Grammar (#19982 by @iammosespaulr)
-
added Latex support for "not equal" and expanded support for less than, greater than symbols (#19970 by @bhpayne)
-
parse_latex
supports\left
and\right
parenthesis notation. (#19466 by @sylee957) -
parse_latex
can parse expressions with amsmath spacing (#19475 by @sylee957) -
Add more parsing rules and test examples. (#19177 by @wuyudi)
-
Added support for more data types in C parser:
signed char
,unsigned char
,short
,short int
,signed short
,signed short int
,unsigned short
,unsigned short int
,unsigned int
,long
,long int
,signed long
,signed long int
,unsigned long
,unsigned long int
,double
,long double
. Also, modified the data type forint
andfloat
tointc
andfloat32
respectively, replacinginteger
andreal
(#19230 by @smitgajjar) -
Added support for shorthand operators in C parser:
+=
,-=
,*=
,/=
and%=
(#19230 by @smitgajjar) -
Removed the assumption of value of a variable, if it is not initialized while variable declaration(e.g.; in case of
int a;
, the value ofa
was assumed to beInteger(0)
, in case offloat b;
, the value ofb
was assumed to beFloat(0.0)
and in case ofbool c;
, the value ofc
was assumed to beS.false
). Also, removed the assumption of default value of formal parameters while parameter declaration in function definition or function prototype (e.g.; in case of function definitionvoid func(int a, float b) { //some code }
, default value of formal parametersa
andb
were assumed to beInteger(0)
andFloat(0.0)
respectively) (#19230 by @smitgajjar)
-
physics.control
-
Added
dc_gain
,poles
,zeros
, andis_stable
inTransferFunction
class. (#19896 by @namannimmo10) -
Adding a new control systems toolbox as
physics.control
. (#18436 by @benepla and @namannimmo10) -
Add
TransferFunction
,Series
,Parallel
, andFeedback
class for physics.control submodule (#19390 by @benepla and @namannimmo10)
-
-
physics.quantum
-
Simplification of Dagger() * IdentityOperator() (#19783 by @dhruvmendiratta6)
-
When printing,
Commutator
,Anticommutator
,InnerProduct
,TensorProduct
, andOuterProduct
now respect keyword-arguments tosstr
. (#19424 by @eric-wieser)
-
-
physics.units
- Fixed some dimensional analysis bugs with the addition and multiplication operators. (#19705 by @mgreminger)
-
physics.vector
-
Added user warnings for all possible paths are found in particle.py. (#20131 by @sidhu1012)
-
Added user warning for cyclic paths in particle.py. (#20131 by @sidhu1012)
-
Point.vel() now attempts to calculate the velocity using the relative position from other points if it has not been already set by the user. This behavior mimics the existing behavior in ReferenceFrame.ang_vel_in(). (#20049 by @moorepants and @sidhu1012)
-
VectorLatexPrinter
now respects thesymbol_names
setting when printingdynamicsymbols
(#19684 by @eric-wieser) -
VectorLatexPrinter
now know about the same trig functions as the regular printer (#19684 by @eric-wieser) -
When printing,
Vector
andDyadic
now respect keyword-arguments tosstr
andlatex
. As a result, these no longer use vector printing customizations unlessinit_vprinting
has been called. (#19640 by @eric-wieser)
-
-
plotting
- capability to subclass Basebackend and specify it to the plotting functions, thus creating plots with other plotting libraries (#20463 by @oscarbenjamin)
-
polys
-
Polys with complex floating point coefficients will now use the CC domain rather than EX. (#20194 by @oscarbenjamin)
-
Fixed a bug in minimal_polynomial when using Groebner bases (compose=False) (#19799 by @coproc)
-
Fixed
GeneratorsError
for creating some elements ofFractionField
when its ground domain isFractionField
orPolynomialRing
. (#19713 by @sylee957) -
Fixed
Poly
initialized withPolyElement
mutating the generator of the coefficient in the form of polynomial. (e.g.Poly(ZZ[x](x+1), y, domain=ZZ[x])
becomesPoly(y+1, y, domain=ZZ[x])
) (#19659 by @sylee957) -
Fixed
Poly
initialized withFracElement
raisingSympifyError
. (e.g.dom = ZZ.frac_field(x); Poly(dom(x+2), y, domain=dom)
) (#19659 by @sylee957)
-
Add division to finite extensions. (#19593 by @gschintgen and @jksuom)
-
Fixed GCD to always return a non-negative constant. (#19569 by @KaustubhDamania)
-
added new domains for Gaussian integers and rationals (#15396 by @jksuom and @smichr)
-
Add the Gaussian domains
ZZ_I
andQQ_I
toPoly
. MakePoly
use the Gaussian domains automatically whenI
is present in the input. Add factorisation over the Gaussian integers (ZZ_I
). Thepolys
keyword argumentgaussian=True
now results in the domainQQ_I
rather than the extension fieldQQ<I>
. (#15396 by @oscarbenjamin) -
improvement of
dup_zz_mignotte_bound(f, K)
by Knuth-Cohen bound (#19254 by @lagamura)
-
-
printing
-
Support
frac
with pycode printers (for lambdify) (#20115 by @ehren) -
Round-trip printing of
floats
(double-precision) to content MathML. (#19958 by @lcontento) -
latex
now once again requires settings to be passed as keyword and not positional arguments, and respects printer settings changed withset_global_settings
; restoring the behavior from sympy 1.2 and earlier. (#20067 by @eric-wieser) -
sympy.printing.pretty.pretty_symbology.xstr
has been deprecated (#20081 by @eric-wieser) -
The
unicode
argument tosympy.printing.stringpict.prettyForm
has been deprecated (#20081 by @eric-wieser) -
The
unicode
attribute ofsympy.printing.stringpict.prettyForm
has been deprecated (#20081 by @eric-wieser) -
The mpmath code printer now correctly prints the
loggamma
function. (#19913 by @abhaydhiman) -
Use literal suffix for 1.0 in C89CodePrinter's printing of pow when the exponent is -1 (#19956 by @bjodah and @mmohrhard)
-
The modules
sympy.printing.ccode
,sympy.printing.fcode
, andsympy.printing.cxxcode
have been renamed tosympy.printing.c
,sympy.printing.fortran
, andsympy.printing.cxx
, respectively. This was done to avoid conflicts that occur when a module name is the same as a function name. The modules are still importable under their old names but doing so is deprecated and a warning will be given (#19908 by @asmeurer) -
from sympy.printing.codeprinter import Assignment
no longer works. You should usefrom sympy.codegen import Assignment
, which is whereAssignment
has lived since SymPy 1.1. (#19908 by @asmeurer) -
Calling
preview
withviewer="file"
no longer looks for afile
executable (a regression in 1.6.0) (#19905 by @eric-wieser) -
The deprecation of calling
preview
withviewer="StringIO"
is now expired instead of forgotten (a regression in 1.6.0) (#19905 by @eric-wieser)
-
When printing,
NDimArray
now respects keyword-arguments tosstr
(#19903 by @eric-wieser) -
preview
no longer fails withValueError
if the preamble contains a%
character. (#19858 by @eric-wieser) -
Types which are not recognized by the LaTeX printer no longer have their
__str__
interpreted as LaTeX, and have theirstr(...)
printed as pre-formatted text as if they were printed normally. This includes the builtinstr
type:latex("hello")
now results in the latex\mathtt{\text{hello}}
.If a custom type intends to be interpreted as latex, it should define the
_latex
hook as described in the docs:def _latex(self, printer): return str(self) # indicate that the result of __str__ is LaTeX-compatible
To print a string containing LaTeX math using MathJax, use
import IPython IPython.display.Math(string)
(#19611 by @eric-wieser)
-
The latex printer now shows builtin
float
s using...x10^...
notation instead of...e...
notation. (#19611 by @eric-wieser) -
preview
now throwsOSError
instead ofSystemError
if viewers cannot be found. (#19818 by @eric-wieser) -
Fixed the SciPy printer for sparse matrices (#19633 by @benjaminwolba and @sylee957)
-
preview(..., output='pdf')
now usesdvipdfmx
instead ofdvipdf
if available. As a result, it now works with a MiKTeX installation on windows. (#19635 by @eric-wieser) -
LatexPrinter._print
is no longer called on strings which have already been converted to Latex. (#19614 by @eric-wieser) -
A new
sympy.printing.defaults.Printable
base class was added, which is a mixin providing_repr_latex_
in terms ofLatexPrinter().doprint()
. Any user type which subclasses this will opt intoinit_printing
. (#19425 by @eric-wieser) -
Printing unevaluated Muls with multiple Number factors will show all factors strictly in order. Identities will also be shown explicitly. (#19450 by @oscarbenjamin)
-
user types that implement
_latex
are now printed as LaTeX when embedded within builtin collections likelist
ordict
. (#19389 by @eric-wieser) -
fixed a bug where
srepr
function would not print dictionary and set properly (#19346 by @rational-kunal) -
tuples of one element now include the usual trailing comma (#19348 by @eric-wieser)
-
mat_symbol_style='bold'
no longer applies to subscripts of matrix symbols (#19301 by @eric-wieser)
-
-
series
-
Adds
e.is_Pow
heuristic tolimits.py
to improve the limit evaluations ofPow
objects (#19680 by @sachin-4099) -
Changes in
mrv()
function ofgruntz.py
andcancel()
function ofpolytools.py
resolvesRecursionError
andTimeout
in limit evaluations (#19646 by @sachin-4099)
- modified order.py to better work with Add objects. (#19546 by @maurogaravello)
- Adds a functionality to the
doit()
method oflimits.py
which usesis_meromorphic()
for limit evaluations (#19432 by @sachin-4099)
- Fixed wrong computations of
fourier_series
for even or odd functions withlimits
that are specified non-central. (#19382 by @sylee957)
-
Replaces
xreplace()
withsubs()
inrewrite() function of gruntz.py
resolving incorrect limit evaluations (#19297 by @sachin-4099) -
Adds a condition to
limitinf() function of gruntz.py
resolving incorrect limit evaluations (#19292 by @sachin-4099)
-
-
sets
- Earlier expr and sets were treated equal which gave incorrect output for some set functions(mainly : - in, is_subset), made sets and expr not to be equal (#20208 by @sidhu1012)
-
nested multi-symbol first arg for ConditionSet now handled with subs/as_dummy (#19512 by @smichr)
-
the bound symbols cannot be replaced with
subs
(#19512 by @smichr) -
the error checking for mismatched signatures for sym and the base set has been improved (#19512 by @smichr)
-
ConditionSet still tries to unify symbols and denest a base set that is given as a ConditionSet but will no longer introduce new symbols (and will leave the base set a a ConditionSet) when this cannot be done (#19512 by @smichr)
-
Fixed
ConditionSet.dummy_eq()
andConditionSet.as_dummy()
. (#19502 by @gschintgen) -
Fixed
ConditionSet.subs()
in the case where the substitution targets a free symbol. (#19495 by @gschintgen) -
Fixed
_infimum_key
sorting key. (#19437 by @gschintgen) -
ImageSets with Lambdas having different symbols will no longer compare equal and should be compared like
a.dummy_eq(b)
(#19261 by @smichr)
-
simplify
-
Fixes a bug in collect when collection keys are not independent. (#19720 by @mloubout)
-
Improved simplification for sign() (#19596 by @dhruvmendiratta6 and @smichr)
-
Improved
trigsimp
for hyperbolic functions nested in non-trig functions. (#19548 by @gschintgen) -
Fixes a bug in collect when collected symbols appear in the facorized expression. (#19431 by @mloubout)
-
-
solvers
-
Added simplification strategies for simplifying the solutions of systems of ODEs (#19998 by @mijo2 and @oscarbenjamin)
-
Fix bug in nonlinsolve leading to key-error (#19189 by @nsfinkelstein and @oscarbenjamin)
-
improved functionality for solveset in case of inequalities (#19978 by @maurogaravello)
-
Handling of inequalities involving Piecewise is improved in solveset. (#19986 by @maurogaravello)
-
Solving higher-order system of ODEs by reducing/transforming it into the first-order system of ODEs by numerous methods. (#19838 by @mijo2)
-
Added component division technique to divide the system of ODEs into logical sub-systems and solving each of these separately. (#19762 by @mijo2)
-
Extending
checkodesol
andconstants_renumber
to handle system of ODEs (#19733 by @mijo2) -
Added
dsolve_system
that can solve a system of ODEs (#19695 by @mijo2) -
API for the _linear_neq_order1_type1-4 was changed to make it easier for anyone to access the solver (#19653 by @mijo2)
-
Solving linear systems particularly involving polynomial coefficients is much faster (#18844 by @oscarbenjamin)
-
Added the new n equations linear first-order non-constant coefficient non-homogeneous solver where the coefficient matrix of the system of ODEs is commutative with its antiderivative. (#19594 by @mijo2)
-
solveset will always use a symbol that has only either the real or complex attribute and no other attribute; when a ConditionSet is returned, the original symbol for which the solution is being sought will be used if it does not cause evaluation of the result. (#19512 by @smichr)
-
In
dsolve
there is no a general solver that can solve systems of constant coefficient non-homogeneous first order ODEs of any size in terms of integrals. (#19341 by @mijo2) -
Fixed exception handling in
solveset
's secondary trigonometric solver. (#19566 by @gschintgen) -
equations with an additive generator are now solved more quickly (#19524 by @smichr)
-
Improved
solveset
capabilities for solving trigonometric equations, notably rational and symbolic coefficients are now supported. (#19507 by @gschintgen) -
solve_linear_system is now a thin wrapper for linsolve. It is recommended to use linsolve in new code. solve_linear_system maybe deprecated or removed in future. (#18814 by @oscarbenjamin)
-
Addition of a solver that handles a subclass of linear first order non-constant coefficient homogeneous systems of ODEs with any number of equations. (#19185 by @mijo2)
-
-
stats
-
The state space of
ContinuousMarkovChain
is now by default aRange
object instead ofS.Reals
. (#20150 by @czgdp1807 and @naveensaigit) -
The generator matrix of
ContinuousMarkovChain
is now by default aMatrixSymbol
object instead ofNone
. (#20150 by @czgdp1807 and @naveensaigit)
-
The state space of
DiscreteMarkovChain
is now by default aRange
object instead ofS.Reals
. (#20042 by @Maelstrom6) -
The transition probability matrix of
DiscreteMarkovChain
is now by default aMatrixSymbol
object instead ofNone
. (#20042 by @Maelstrom6)
-
Fixed
xreplace
infinitely expanding random matrix ensemble classes. (#20018 by @sylee957) -
All the ensemble classes (
RandomMatrixEnsemble
,GaussianEnsemble
,GaussianOrthogonalEnsemble
, ...) now becomes stub function constructors. If you want to use them as classes, you should import them asRandomMatrixEnsembleModel
,GaussianEnsembleModel
, ... (#20018 by @sylee957)
-
Added sampling of Joint RVs from external libraries (#19848 by @Smit-create)
-
Added sampling for Matrix Distributions (#19857 by @Smit-create)
-
Allowing
CompoundDistribution
to handle more than one random variables (#19808 by @Smit-create) -
Added
Wishart
andMatrixNormal
Distributions (#19795 by @Smit-create) -
Change in return type of
P
andE
withevaluate=False
. Withevaluate=False
,P
andE
are made to returnProbability
andExpectation
object respectively. (#19819 by @Smit-create) -
Added
MatrixGamma
Distribution (#19734 by @Smit-create) -
Added symbolic classes of
Moment
andCentralMoment
(#19724 by @Smit-create) -
Added support for Compound Distributions (#19648 by @Smit-create)
-
Added
doit
in classProbability
(#19696 by @Smit-create) -
Added
MutlivariateNormal
andMutlivariateLaplace
function (#19631 by @Smit-create) -
Added Poisson, Wiener and Gamma Processes (#19387 by @Smit-create)
-
Added Expectation Matrix, Variance Matrix and CrossCovariance Matrix (#19529 by @Smit-create)
-
Added
sample_stochastic
for sampling from stochastic processes. (#19500 by @Smit-create) -
FIxes free_symbols method of RandomIndexedSymbol (#19459 by @Smit-create)
-
Added Sampling from external libraries for all the random variables of sympy (#19342 by @Smit-create)
-
Added
doit
method inExpectation
and madeE
to callExpectation
(#19290 by @Smit-create) -
Added
is_random
insympy.stats.rv
to check if expression contains random variables (#19304 by @Smit-create) -
expand
added insympy.stats.symbolic_rv
API. (#19295 by @Smit-create) -
Added Lomax and Bounded pareto distribution (#19273 by @Smit-create)
-
Added sampling methods for continuous variables (#18754 by @Smit-create)
-
Added
library
option insample
(#18754 by @Smit-create) -
sample
returns an iterator object since version 1.7 (#18754 by @Smit-create)
-
-
tensor
-
utilities
- sympy.utilities.iterables.partitions() no longer reuses the same dictionary for each yielded output. (#20154 by @asmeurer)
-
Add support for Integral with lambdify (using scipy or mpmath) (#20134 by @ehren)
-
Lambdifying an expression with
loggamma
using mpmath no longer raisesImportError
. (#19913 by @abhaydhiman) -
find_executable
is deprecated in favor of the builtinshutil.which
. (#19634 by @eric-wieser)
-
vector
-
integral of parametric region depends on the order of limits at the time of initialization. (#20044 by @friyaz)
-
vector_integrate
can integrate overImplicitRegion
objects. (#19883 by @friyaz) -
Added a function to find a rational point on conic (#19807 by @friyaz and @Upabjojr)
-
Added support to create implictly defined regions. (#19681 by @friyaz)
-
Added support to integrate scalar/vector fields over objects of geometry module. (#19650 by @friyaz)
-
added class to represent integral of scalar/vector field over a parametric surface. (#19539 by @friyaz)
-
Modified API of ParametricIntegral class (#19580 by @friyaz)
-
Added class to represent a parametric region in space. (#19472 by @friyaz)
-
-
other
- The LaTeX docs now need to built with xelatex rather than pdflatex. (#20309 by @oscarbenjamin)
-
Support for Python 3.5 has been dropped. SymPy now requires Python 3.6 or newer. (#20145 by @oscarbenjamin)
-
more function raise
TypeError
when passed invalid keyword-arguments, rather than ignoring them silently (#20086 by @eric-wieser)
assert sympy.testing.pytest.raises(Exception, func)
no longer always asserts when pytest is not present (#20012 by @eric-wieser)
-
Improve code quality by cleaning the doctests up (#19406 by @InCogNiTo124 and @oscarbenjamin)
-
intersphinx links to
:mod:`sympy`
no longer point to the documentation for Immutable Matrices (#19430 by @eric-wieser)
Authors
The following people contributed at least one patch to this release (names are given in alphabetical order by last name). A total of 94 people contributed to this release. People with a * by their names contributed a patch for the first time for this release; 56 people contributed for the first time for this release.
Thanks to everyone who contributed to this release!
- 彭于斌*
- Abhay_Dhiman*
- Sachin Agarwal
- Shubham Agrawal*
- Sakirul Alam*
- Abhinav Anand
- Mohit Balwani
- Elias Basler*
- Nijso Beishuizen*
- Oscar Benjamin
- Mohammed Bilal*
- Francesco Bonazzi
- Peter Brady
- Ondřej Čertík
- Peter Cock*
- Coder-RG*
- Lorenzo Contento*
- Björn Dahlgren
- Vaishnav Damani*
- Brandon David*
- Aaryan Dewan*
- Amanda Dsouza*
- Shivang Dubey*
- noam simcha finkelstein*
- foice*
- Garrett Folbe*
- Smit Gajjar
- Wes Galbraith*
- Mauro Garavello
- Naman Gera
- Sneha Goddu*
- goddus*
- Michael Greminger*
- Oscar Gustafsson
- Sayandip Halder*
- Jerry James
- Milan Jolly
- Yathartha Joshi
- KaustubhDamania*
- Tasha Kim*
- Jan Kruse*
- Muskan Kumar*
- S.Y. Lee
- Mathias Louboutin*
- Smit Lunagariya
- Nikhil Maan
- Ayush Malik*
- Alex Malins*
- Islam Mansour*
- mcpl-sympy*
- Willem Melching*
- Dhruv Mendiratta
- Ehren Metcalfe
- Aaron Meurer
- Ansh Mishra*
- mohit
- Markus Mohrhard*
- Jason Moore
- Dave Witte Morris*
- Shital Mule*
- numbermaniac*
- Ben Payne*
- Ilya Pchelintsev
- Benedikt Placke*
- Chris du Plessis*
- Tomasz Pytel
- Moses Paul R
- Akhil Rajput*
- rationa-kunal
- Faisal Riyaz
- Naveen Sai*
- Devesh Sawant*
- Gilles Schintgen
- seadavis*
- Mohit Shah*
- Sudeep Sidhu*
- Gagandeep Singh
- Marijan Smetko*
- Chris Smith
- Jisoo Song
- soumi7*
- Lagaras Stelios*
- Wolfgang Stöcher*
- Kalevi Suominen
- Nathan Taylor*
- Martin Thoma
- Rudr Tiwari*
- Seth Troisi
- w495*
- Erik Welch
- Eric Wieser
- Benjamin Wolba*
- wuyudi
- Zhongshi*
SHA256
The SHA256 hashes for the release files are:
f66c72f835823740140f6c2f229ae669385b7768cacb7197fbc8a81fe1ad3c31 sympy-docs-pdf-1.7.pdf 9104004669cda847f38cfd8cd16dd174952c537349dbae740fea5331d2b3a51b sympy-1.7.tar.gz 09aa4b3075e505108cb84785ba358e58a53d9596c8c71f07b613958b9150c481 sympy-1.7-py3-none-any.whl 6f77c64ca90d26ff70e513e60e42eac3a79dafff8e649edc0bab6340720ba694 sympy-docs-html-1.7.zip