UD Under Development - sympy/sympy GitHub Wiki

UD Under Development

This page written to estimate the current situation and some fundamental problems.

Assumptions

The problems with Assumptions have a few types:

  1. Entangled current assumption system. It is not well described what is_something means exactly. Especially in the case when is_something have not boolean value but a None. Also it turned out that S.One.is_complex means that integer field can be extends to complex plane.

  2. Existence of another variant of assumption system. This "ask" system is not well tested. Additionally the situation is raised: the more we use the old system (for development of new code), the less new system tested. And the less new system tested, the less it is used in coding.

  3. It turned out that that some assumptions are inflexibly and globally stitched into in Sympy, and it is impossible to regulate it.

Links:

  • New assumption system creation issue 1047
  • New assumption system sympy/sympy/assumptions/ask.py, sympy/assumptions/assume.py
  • Stitched global assumption issue 2260

See also: Assumptions

Series

For series this section are dedicated: UD-series

The main problem that they have many entangled problems, and it is became impossible to operate with them as ordinary SymPy expressions. For effective and clear operation with them we must use special types of series and apply appropriated algorithms.

Now the series mostly used for limits calculation, and they slave for this aim (so they are turned out to be transseries)

They might use some missed in SymPy topics too:

  • sequences (to describe internal structure)

Algorithms:

  • (zelous and lazy algorithms, relax algorithm) for multiplication, division, resolution of differential equations, composition and reversion.

limits

...

The operation with intervals

Introduction: http://en.wikipedia.org/wiki/Interval_arithmetic

Only some things are present now in SymPy:

-Interval, Union (set of Intervals), with operation of intersection and union. And only real intervals are supported. (sympy/core/sets.py)

  • Peace-wises
  • Fields (with no operations)

Desired behaviour is to have arithmetic operations upon Intervals:

Real axes:

>>> Interval(-1, 1)
[-1, 1]
>>> Interval(-1, 1)**2
[0, 1]

>>> Interval(RR - S.Zero)
[-oo, 0)U(0, oo]

Complex plane:

>>> Domain(ZZ - S.Zero)
Domain(ZZ - S.Zero)

Required for:

  • singularity description (sin(x)--> oo)
  • to analyse the continuous of functions (recursive method for suspicious points which can be)
  • also with procedure to find singularities

Related with:

Can be use Sequences to describe infinite number of points in (or out of) intervals.

Singularities

>>> singularities(1/x)
[0]  # Infinite singularity

Current Status:

An implementation for rational functions is being discussed at https://github.com/sympy/sympy/pull/2723. An implementation for exp-log functions was also being tried. You fork that code from https://github.com/hargup/sympy/tree/singularities, in that see sympy.calculus.singularites. For a possibly more generalized approach see https://github.com/sympy/sympy/pull/2723#issuecomment-33714986.

Needed for:

  • to analyze the continuous of functions
  • improving plots of functions with infinite discontinuities, (eg., try plotting 1/x for x in -1 to 1).

Might use other topics:

  • Solve (for finding the roots in denominator)
  • Resolve question is_equal_zero (mixing python == and relative operation with expressions, zero-test problem)

Possible roadblocks:

  • Solve is not reliable and it is not guaranteed that it will return all the possible solution.

Related with:

  • sympy/polys/algebratools.py: Field

References:

  • http://www.texmacs.org/joris/unif/unif.html
  • [vdH97] J. van der Hoeven. Automatic asymptotics. PhD thesis, École polytechnique, Palaiseau, France, 1997.
  • [vdH06] J. van der Hoeven. Transseries and real differential algebra, volume 1888 of Lecture Notes in Mathematics. Springer-Verlag, 2006.

Also for curves and surfaces (the separated problematic)

Analytic function

References:

Sequences

UD-series-user-interface

Required for:

  • series constructor
  • may be for interval (domains) description
  • may be for infinite structures.

Related with:

  • sympy/solvers/recurr.py: rsolve() (recurrences solving for sequences)
  • Set class.

Abstract Function

  • Current issue for realization of "Undefined functions" issue 2205
  • representation of Derivative of function at some (no zero) point issue 1620.
  • representation of composition of functions while differentiation issue 1660.