Skip to main content

Symmetry Analysis for ODEs/PDEs using SageMath

Project description

delierium

Differential Equations' LIE symmetries Research InstrUMent

Searching for symmetries in ODEs using Python/SageMath/sympy

Status

  • still playing around with Janet bases
  • Lie output form a alpha

Release 0.9.0.dev1

  • Just constructing a Janet basis from a list of homogenuous linear PDEs (for grevlex and degrevlex order, lex is dubious)

Literature (and inspiration):

Goals:

  • Short term:
    • All kinda stuff for symmetry analysis of ODE/PDE , doing is step by step, whatver comes to my mind
  • Mid term:
    • Make it a valuable package
  • Long term:
    • Maybe integration into SciPy|SymPy|SageMath

Release History

Release 0.9.0.dev10

  • 'infinitesimalsODE' has been renamed to 'overdeterminedSystemODE' as described below.
  • 'Janet_Basis' discarded until real working

Release 0.0.1.dev1

  • just alphas for 'infinitesimalsODE' and 'Janet_Basis'

Documentation(work in progress)

How to use

Get the overdetermined equations for the infinitesimals of an third order ODE:

>>> from delierium.Infinitesimals import overdeterminedSystemODE
>>> from sage.calculus.var import var, function
>>> from sage.calculus.functional import diff
>>> x   = var('x')
>>> y   = function('y')
>>> ode = diff(y(x), x, 3) + y(x) * diff(y(x), x, 2)
>>> inf = overdeterminedSystemODE(ode, y, x)
>>> for _ in inf:
>>>     print(_)
-3*D[0](xi)(y(x), x)
-6*D[0, 0](xi)(y(x), x)
y(x)*D[0](xi)(y(x), x) + 3*D[0, 0](phi)(y(x), x) - 9*D[0, 1](xi)(y(x), x)
y(x)*D[1](xi)(y(x), x) + phi(y(x), x) + 3*D[0, 1](phi)(y(x), x) - 3*D[1, 1](xi)(y(x), x)
-D[0, 0, 0](xi)(y(x), x)
-y(x)*D[0, 0](xi)(y(x), x) + D[0, 0, 0](phi)(y(x), x) - 3*D[0, 0, 1](xi)(y(x), x)
y(x)*D[0, 0](phi)(y(x), x) - 2*y(x)*D[0, 1](xi)(y(x), x) + 3*D[0, 0, 1](phi)(y(x), x) - 3*D[0, 1, 1](xi)(y(x), x)
2*y(x)*D[0, 1](phi)(y(x), x) - y(x)*D[1, 1](xi)(y(x), x) + 3*D[0, 1, 1](phi)(y(x), x) - D[1, 1, 1](xi)(y(x), x)
y(x)*D[1, 1](phi)(y(x), x) + D[1, 1, 1](phi)(y(x), x)    

If you are using JupyterLab, you can print the results in a more human readable way(and the easiest way to install) %pip install delierium --upgrade

from IPython.display import Math from delierium.helpers import latexer

display(Math(latexer(ode))) from delierium.Infinitesimals import overdeterminedSystemODE from sage.calculus.var import var, function from sage.calculus.functional import diff x = var('x') y = function('y') ode = diff(y(x), x, 3) + y(x) * diff(y(x), x, 2) inf = overdeterminedSystemODE(ode, y, x)

for _ in inf:

display(Math(latexer(_)))

In this mode a derivative like d^2y/dx^2 is shown as y_x(superscript x)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

delierium-0.9.0.dev10-py3-none-any.whl (15.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page