You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/src/background/stability_response.md
+80-5Lines changed: 80 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,9 +2,17 @@
2
2
3
3
The core of the harmonic balance method is expressing the system's behaviour in terms of Fourier components or _harmonics_. For an $N$-coordinate system, we _choose_ a set of $M_i$ harmonics to describe each coordinate $x_i$ :
This means the system is now described using a discrete set of variables $u_{i,j}$ and $v_{i,j}$. Constructing a vector $\mathbf{u}(T) = (u_{1,1}(T), v_{1,1}(T), \ldots u_{N,M_N}(T), v_{N, M_N}(T))$, we may obtain the _harmonic equations_ (see [an example of this procedure](@ref Duffing_harmeq))
9
+
This means the system is now described using a discrete set of variables $u_{i,j}$ and $v_{i,j}$. Constructing the vector
The dynamical behaviour near the steady states is thus governed by $e^{ \lambda_r T}$: if $\mathrm{Re}(\lambda_r)<0$ for all $\lambda_r$, the state $\mathbf{u}_0$ is stable. Conversely, if $\mathrm{Re}(\lambda_r)>0$ for at least one $\lambda_r$, the state is unstable - perturbations such as noise or a small applied drive will force the system away from $\mathbf{u}_0$.
34
42
35
43
36
-
### Linear response (WIP)
44
+
### Linear response
45
+
46
+
The response of a stable steady state to an additional oscillatory force, caused by weak probes or noise, is often of interest. It can be calculated by solving for the perturbation $\delta \mathbf{u}(T)$ in the presence of an additional drive term.
Suppose we have found an eigenvector of $J(\mathbf{u}_0)$ such that $J(\mathbf{u}) \mathbf{v} = \lambda \mathbf{v}$. To solve Eq. \eqref{eq:Jacforced}, we insert $\delta \mathbf{u}(T) = A(\Omega)\, \mathbf{v} e^{i \Omega T}$. Projecting each side of Eq. \eqref{eq:Jacforced} onto $\mathbf{v}$ gives
We see that each eigenvalue $\lambda$ results in a linear response that is a Lorentzian centered at $\Omega = \text{Im}[\lambda]$. Effectively, the linear response matches that of a harmonic oscillator with resonance frequency $\text{Im}[\lambda]$ and damping $\text{Re}[\lambda]$.
61
+
62
+
Knowing the response of the harmonic variables $\mathbf{u}(T)$, what is the corresponding behaviour of the "natural" variables $x_i(t)$ ? To find this out, we insert the perturbation back into the harmonic ansatz \eqref{eq:ansatz}. Since we require real variables, let us use $\delta \mathbf{u}(T) = A(\Omega) \left( \mathbf{v} \, e^{i \Omega T} + \mathbf{v}^*\, e^{-i \Omega T} \right)$. Plugging this into
where $\delta u_{i,j}$ and $\delta v_{i,j}$ are the components of $\delta \mathbf{u}$ corresponding to the respective harmonics $\omega_{i,j}$.
78
+
79
+
We see that a motion of the harmonic variables at frequency $\Omega$ appears as motion of $\delta x_i(t)$ at frequencies $\omega_{i,j}\pm \Omega$.
80
+
81
+
To make sense of this, we normalize the vector $\delta \mathbf{u}$ and use normalised components $\delta \hat{u}_{i,j}$ and $\delta \hat{v}_{i,j}$. We also define the Lorentzian distribution
We see that all components of $\delta x_i(t)$ [Eq. \eqref{eq:deltax}] are proportional to $L(\Omega)_{\text{Im}[\lambda], \text{Re}[\lambda]}$. The first and last two summands are Lorentzians centered at $\pm \Omega$ which oscillate at $\omega_{i,j} \pm \Omega$, respectively. From this, we can extract the linear response function in Fourier space, $\chi (\tilde{\omega})$
Keeping in mind that $L(x)_{x_0, \gamma} = L(x + \Delta)_{x_0 + \Delta, \gamma}$ and the normalization $\delta \hat{u}_{i,j}^2 + \delta \hat{v}_{i,j}^2 = 1$, we can rewrite this as
The above solution applies to every eigenvalue $\lambda$ of the Jacobian. It is now clear that the linear response function $\chi [\delta x _i](\tilde{\omega})$ contains for each eigenvalue $\lambda_r$ and harmonic $\omega_{i,j}$ :
108
+
109
+
* A Lorentzian centered at $\omega_{i,j}-\text{Im}[\lambda_r]$ with amplitude $1 + \alpha_{i,j}^{(r)}$
110
+
* A Lorentzian centered at $\omega_{i,j}+\text{Im}[\lambda_r]$ with amplitude $1 - \alpha_{i,j}^{(r)}$
111
+
112
+
_Sidenote:_ As $J$ a real matrix, there is an eigenvalue $\lambda_r^*$ for each $\lambda_r$. The maximum number of peaks in the linear response is thus equal to the dimensionality of $\mathbf{u}(T)$.
37
113
38
-
The response of a stable steady state to an additional oscillatory force, caused by weak probes or noise, is often of interest. It can be calculated by solving for the perturbation $\delta \mathbf{u}$ in the presence of an additional drive term.
114
+
The linear response of the system in the state $\mathbf{u}_0$ is thus fully specified by the complex eigenvalues and eigenvectors of $J(\mathbf{u}_0)$. In HarmonicBalance.jl, the module [LinearResponse](@ref linresp_man) creates a set of plottable [`Lorentzian`](@ref HarmonicBalance.LinearResponse.Lorentzian) objects to represent this.
39
115
40
-
The linear response of the system in the state $\mathbf{u}_0$ is thus encoded in the complex eigenvalues and eigenvectors of $J(\mathbf{u}_0)$.
41
116
42
117
[Check out this example](@ref linresp_ex) of the linear response module of HarmonicBalance.jl
Expand each variable of `diff_eom` using the harmonics assigned to it with `time` as the time variable.
14
-
For each harmonic of each variable, an instance of `HarmonicVariable` (describing a pair of variables (u,v)) is automatically created and named.
14
+
For each harmonic of each variable, instance(s) of `HarmonicVariable` are automatically created and named.
15
15
16
-
`coordinates` allows for using different coordinate systems (e.g. 'polars') - CURRENTLY INACTIVE
17
16
"""
18
-
harmonic_ansatz(eom::DifferentialEquation, time::Num; coordinates="Cartesian") =harmonic_ansatz(eom, time, Dict([[var, coordinates] for var inget_variables(eom)]))
0 commit comments