Skip to main content

SymDR

SymDR is a library made to automate the process of finding dispersion relations.

It was created in The Great Mathematical Workshop 2024 by the command of young ambitious scientists.

Features

Finding dispersion relation in:

  • Equations
  • System of equations
  • Discrete equations
  • Systems of discrete equations

Quickstart

For the best experience, we highly recommend using Jupyter Notebook or Google Collab.

SymDR supports Python >=3.7 and only depends on Sympy. Install the Python package using pip.

pip install symdr

Example

  • If you are new to symbolic mathematics in Python, read SymPy introduction first.
  • For the end-to-end example of equation analysis, see notebook.

!!!!!!! IMPORTANT !!!!!!!! Variables x, t, w, k must not be redefined. They are used by the algorithm. When working with discrete cases, the variables h, tau, a and n are also added to this list.

SymDR has own objects for grid functions. To turn on pretty-printing for these functions, you need to add:

init_printing(latex_printer=discrete_latex_printer)

Creation of a grid function is the same as standart function:

u = DiscreteGrid('u')

Consider a discrete analog of Korteweg–De Vries equation:

$$u_{t}=6uu_{x}-u_{xxx}$$

For the third order derivative, we are going to use next scheme: $$ f^{(3)}(x)=\frac{f(x+2h)-2f(x+h)+2f(x-h)-f(x-2h)}{2h^3}$$

And we can write our equation

equation = u.diff(t) + (u.at_x(a+2) - 2 * u.at_x(a+1) + 2 * u.at_x(a-1) - u.at_x(a-2)) / (2 * h ** 3)

The class allows us to denote a derivative at (a, n) with "diff" method exactly the same way as SymPy functions do. Shift at a point is done by any of three methods:

  • at_x - shift in space (i.e. u.at_x(a+2) means $u_{a+2}^n$)
  • at_t - shift in time (i.e. u.at_t(n-2) means $u_a^{n-2}$)
  • at - shift in both axes at once (i.e. u.at(a+2, n-1) means $u_{a+2}^{n-1}$)

Technical note: instead of moving the function into a subtree of Derivative object, as it is with SymPy functions, differentiation of DiscreteGrid object simply returns an object of the same class, but with different arguments.

Finally, let's find dispersion relation:

d_equation_dr(equation)

Also you can rewrite it with Euler formula:

d_equation_dr(equation, trig_rewrite=True)

And here's the full code:

from sympy import *
from symdr import *

u = DiscreteGrid('u')
equation = u.diff(t) + (u.at_x(a+2) - 2 * u.at_x(a+1) + 2 * u.at_x(a-1) - u.at_x(a-2)) / (2 * h ** 3)

d_equation_dr(equation)

Release files for symdr 1.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for symdr 1.0.3
File Size Uploaded
symdr-1.0.3.tar.gz 8.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for symdr 1.0.3
File Interpreter ABI Platform
symdr-1.0.3-py3-none-any.whl Python 3 none any Details

Total release size:17.1 kB

Release files / symdr-1.0.3.tar.gz

Download URL symdr-1.0.3.tar.gz
Size 8.4 kB
Tags Source
SHA-256 checksum
How to use checksums
630450637adefc2693ee180508fa4c6124d70cc41e34cd3ed735cc8143a47d4f
BLAKE2b-256 checksum
How to use checksums
c1f12436e1c181f518f50d83d72e957aedff9ef8f64fb463186778e403bacf30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.2

Release files / symdr-1.0.3-py3-none-any.whl

Download URL symdr-1.0.3-py3-none-any.whl
Size 8.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
41fea215bf44ef7055968fa4a59280b4af1f1e4a3b9622ea78f6edf57dd7f294
BLAKE2b-256 checksum
How to use checksums
d72696a86f7a5d76ef93a310b2116e70ba2684cf210212460b03e14025e90505
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.2

Release history Release notifications | RSS feed

This release

1.0.3 This release

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page