Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

One-dimensional circle of interacting harmonic oscillators #36

Closed
cmp0xff opened this issue Mar 23, 2024 · 1 comment · Fixed by #58
Closed

One-dimensional circle of interacting harmonic oscillators #36

cmp0xff opened this issue Mar 23, 2024 · 1 comment · Fixed by #58
Assignees
Labels
documentation Improvements or additions to documentation enhancement New feature or request model Change of models

Comments

@cmp0xff
Copy link
Collaborator

cmp0xff commented Mar 23, 2024

A one-dimensional circle of $N$ interacting harmonic oscillators can be described by the Lagrangian action
$$S_L[x_i] = \int_{t_0}^{t_1}\mathbb{d} t \left\{ \sum_{i=0}^{N-1} \frac{1}{2}m \dot x_i^2 - \frac{1}{2}m\omega^2\left(x_i - x_{i+1}\right)^2 \right\}\,,$$
where $x_N \coloneqq x_0$.

This system can be solved in terms of travelling waves, obtained by discrete Fourier transform. Initial condition in #35 is desired, see below.

Unfortunately discrete Fourier transform is a transformation in the complex field. We first write the system in matrix form
$$S_L[x_i] = \int_{t_0}^{t_1}\mathbb{d} t \left\{ \frac{1}{2}m \dot x_i \delta_{ij} \dot x_j - \frac{1}{2}m x_i A_{ij} x_j\right\}\,,$$
where $A_{ij} / \omega^2$ is equal to $(-2)$ if $i=j$, $1$ if $|i-j|=1$ or $|i-j|=N$, and $0$ otherwise.

Then we can extend it with non-dynamic phases $\phi_i \in \mathbb{R}$, and introduce $X_i \coloneqq x_i \mathbb{e}^{-\phi_i}$, $X^\ast_i \coloneqq x_i \mathbb{e}^{+\phi_i}$ so that
$$S_L[x_i] = S_L[x_i, \phi_j] \equiv S_L[X^\ast_i, X_j] = \int_{t_0}^{t_1}\mathbb{d} t \left\{ \frac{1}{2}m \dot X^\ast_i \delta_{ij} \dot X_j - \frac{1}{2}m X^\ast_i A_{ij} X_j\right\}\,.$$

$A_{ij}$ can be diagonalised by the inverse discrete Fourier transform (motivation / proof ?)
$$X_i = (F^{-1})_{ik} Y_k = \frac{1}{\sqrt{N}}\sum_k \mathbb{e}^{i \frac{2\mathbb{\pi}}{N} k\mathbb{i}} Y_k\,.$$

Note $F^{-1}$ is unitary, but not special unitary. Can we make it special unitary? Maybe use the fact that $\sqrt{N} F^{-1}$ makes a Vandermonde determinant?

Calculating gives (motivation / proof ?)
$$S_L[X^\ast_i, X_j] = S_L[Y^\ast_i, Y_j] = \sum_{k=0}^{N-1} \int_{t_0}^{t_1}\mathbb{d} t \left\{ \frac{1}{2}m \dot Y^\ast_k \dot Y_k - \frac{1}{2}m \omega^2\cdot4\sin^2\frac{2\mathbb{\pi}k}{N} Y^\ast_k Y_k\right\}\,.$$
Using the same transformation to separate the non-dynamic phases, we can arrive at a real action
$$S_L[y] = \sum_{k=0}^{N-1} \int_{t_0}^{t_1}\mathbb{d} t \left\{ \frac{1}{2}m \dot y_k^2 - \frac{1}{2}m \omega^2\cdot4\sin^2\frac{2\mathbb{\pi}k}{N} y_k^2\right\}\,.$$

We can solve $N$ independent oscillators
$$\dot y_k^2 + 4\omega^2\sin^2\frac{2\mathbb{\pi}k}{N} y_k^2 \equiv 4\omega^2\sin^2\frac{2\mathbb{\pi}k}{N} y_{k0}^2$$
with initial conditions $(y_{k0}, t_{k0})$ as in in #35, find suitable constant phases so that $x_i$'s are real, and generate the data.

@cmp0xff cmp0xff added documentation Improvements or additions to documentation enhancement New feature or request model Change of models labels Mar 23, 2024
cmp0xff added a commit that referenced this issue Jun 17, 2024
@cmp0xff cmp0xff linked a pull request Jun 17, 2024 that will close this issue
1 task
@cmp0xff
Copy link
Collaborator Author

cmp0xff commented Jun 23, 2024

Problem: for the zero-frequency mode, its motion cannot be determined by a phase. One has to use an initial (generalised) position and velocity.

cmp0xff added a commit that referenced this issue Jun 23, 2024
@cmp0xff cmp0xff self-assigned this Jun 23, 2024
cmp0xff added a commit that referenced this issue Jun 24, 2024
cmp0xff added a commit that referenced this issue Jul 21, 2024
cmp0xff added a commit that referenced this issue Jul 21, 2024
cmp0xff added a commit that referenced this issue Jul 24, 2024
cmp0xff added a commit that referenced this issue Jul 24, 2024
cmp0xff added a commit that referenced this issue Jul 27, 2024
cmp0xff added a commit that referenced this issue Jul 27, 2024
cmp0xff added a commit that referenced this issue Jul 27, 2024
cmp0xff added a commit that referenced this issue Jul 28, 2024
cmp0xff added a commit that referenced this issue Jul 28, 2024
cmp0xff added a commit that referenced this issue Jul 28, 2024
cmp0xff added a commit that referenced this issue Jul 29, 2024
cmp0xff added a commit that referenced this issue Jul 30, 2024
cmp0xff added a commit that referenced this issue Jul 30, 2024
cmp0xff added a commit that referenced this issue Aug 4, 2024
cmp0xff added a commit that referenced this issue Aug 4, 2024
cmp0xff added a commit that referenced this issue Aug 4, 2024
* feat: #36 work in progress

* fix: #36 frequency and fourier

* feat: #36 Use axis instead of transpose

* feat: #36 add 0-dimensional complex harmonic oscillator

* fix: #36 1-dimensional harmonic oscillator circle

* feat: #36 docs, example, etc.

* fix: #36 solution to the travelling waves

* feat(model): #59 make a class for linear motion (#60)

* feat: #59 free particle

* chore(poetry): #59 🔒

* feat(comment): #61 reuse the class HarmonicOscillatorSystem to support complex cases (#62)

* feat(comment): #61 #58 (comment)

* feat: #59 improve exception messages

* chore(typo): #61

* feat(comment): #36 #58 (comment)

* chore(typing): #36

* feat: #63 make real oscillators real again

* feat: #63 make complex oscillators finally complex

* chore: #63 typing, import

* feat(refactor): #63 private communication with @emptymalei

* chore: #63 typing, import

* chore(typing): #63

* feat: #36 migrate to the same place (private communication with @emptymalei)

* feat(pytest): #36

* doc(tutorial): #36 work in progress

* fix: #63 edge cases

* chore: #36 propagate 2718ef8

* chore(typing): #69

* fix(typing): #69

* doc(model): #71 tutorial for the complex oscillator

* chore(poetry): #71 docs versions

* doc(comment): #36 #58 (comment)

* fix: #36 even degrees of freedom

* doc(model): #36 tutorial

* chore(cd): #71 fix NameError: name 'system_specs' is not defined

* fix(comment): #71 @emptymalei #72 (review)

* fix(comment): #36 @emptymalei #72 (review)

* doc(comment): #36 @emptymalei #58 (comment)

Co-authored-by: LM <[email protected]>

* doc(comment): #36 @emptymalei #58 (comment)

Co-authored-by: LM <[email protected]>

* doc(comment): #36 @emptymalei #58 (comment)

* chore(typing): #36 simplify

---------

Co-authored-by: LM <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request model Change of models
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant