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,kmust not be redefined. They are used by the algorithm. When working with discrete cases, the variablesh,tau,aandnare 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
Derivativeobject, as it is with SymPy functions, differentiation ofDiscreteGridobject 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)
| File | Size | Uploaded | |
|---|---|---|---|
| symdr-1.0.3.tar.gz | 8.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|