diff options
author | Prefetch | 2023-01-01 16:40:56 +0100 |
---|---|---|
committer | Prefetch | 2023-01-01 17:02:29 +0100 |
commit | b1a9b1b9b2f04efd6dc39bd2a02c544d34d1259c (patch) | |
tree | 1fd87919deee17e58f8ad19c09abd54bd4a70886 | |
parent | 1d700ab734aa9b6711eb31796beb25cb7659d8e0 (diff) |
Change license, add Makefile, add image caching control
26 files changed, 136 insertions, 56 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..05af8fe --- /dev/null +++ b/Makefile @@ -0,0 +1,28 @@ +.PHONY: serve build compress deploy clean + + +serve: + EXECJS_RUNTIME=MiniRacer bundle exec jekyll serve --livereload --incremental + + +build: + EXECJS_RUNTIME=MiniRacer JEKYLL_ENV=production bundle exec jekyll build + + +FINDARGS1 = -name "*.html" -o -name "*.xml" -o -name "*.css" -o -name "*.js" +FINDARGS2 = -name "*.svg" -o -name "*.webmanifest" -o -name "*.ico" -o -name "*.txt" +compress: + for f in `find public/ -type f $(FINDARGS1) -o $(FINDARGS2)`; do \ + echo "Compressing $$f..." ; \ + gzip --keep --force -9 $$f ; \ + brotli --keep --force -Z $$f ; \ + done + + +deploy: + rsync --rsh="ssh -p $(PORT)" --stats --checksum --recursive public/ $(HOST):/srv/prefetch.eu/public/ + + +clean: + rm -rf public/* + rm -rf source/.jekyll-cache/* diff --git a/source/_includes/footer.html b/source/_includes/footer.html index d91d3d5..b3679e8 100644 --- a/source/_includes/footer.html +++ b/source/_includes/footer.html @@ -1,7 +1,7 @@ <hr> <div class="footl noha"> -© Marcus R.A. Newman, -<a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>. +© 2023 Marcus R.A. Newman, +<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">CC BY-NC-SA 4.0</a>. </div> <div class="footr noha"> <a href="https://prefetch.goatcounter.com/">Visitor statistics</a> diff --git a/source/_includes/image.html b/source/_includes/image.html index 5b4f35f..df13976 100644 --- a/source/_includes/image.html +++ b/source/_includes/image.html @@ -2,6 +2,8 @@ {% assign name = name_dot_format | first %} {% assign format = name_dot_format | last %} +{% assign version = include.version | default: "1" %} + {% comment %} Let 'suffix' = last 4 chars of 'name', 'prefix' = the rest {% endcomment %} {% assign suffix = name | slice: -4, 4 %} {% assign rname = name | split: "" | reverse | join: "" %} @@ -27,14 +29,16 @@ {% assign add_style = 'style="' | append: set_style | append: '"' %} {% endif %} <p> -<a href="{{ name_full }}.{{ format }}"> +<a href="{{ name_full }}.{{ format }}?v={{ version }}"> <picture> - <source srcset="{{ name_half }}.avif" type="image/avif"> + <source srcset="{{ name_half }}.avif?v={{ version }}" type="image/avif"> {% if name_full == name_half %} - <img src="{{ name_half }}.{{ format }}" {{ add_class }} {{ add_style }} alt="{{ include.alt }}" title="{{ include.alt }}"> + <img src="{{ name_half }}.{{ format }}?v={{ version }}" {{ add_class }} {{ add_style }} + alt="{{ include.alt }}" title="{{ include.alt }}"> {% else %} - <source srcset="{{ name_half }}.webp" type="image/webp"> - <img src="{{ name_half }}.jpg" {{ add_class }} {{ add_style }} alt="{{ include.alt }}" title="{{ include.alt }}"> + <source srcset="{{ name_half }}.webp?v={{ version }}" type="image/webp"> + <img src="{{ name_half }}.jpg?v={{ version }}" {{ add_class }} {{ add_style }} + alt="{{ include.alt }}" title="{{ include.alt }}"> {% endif %} </picture> </a> diff --git a/source/_includes/preamble.html b/source/_includes/preamble.html index 7b57115..4d3c92f 100644 --- a/source/_includes/preamble.html +++ b/source/_includes/preamble.html @@ -19,6 +19,6 @@ {% endif %} <link rel="stylesheet" href="/infra/css/main.css?v=20221119"> -{% if jekyll.environment != "development" %} +{% if jekyll.environment == "production" %} <script data-goatcounter="https://prefetch.goatcounter.com/count" async src="/infra/js/count.js?v=20221103"></script> {% endif %} diff --git a/source/blog/2022/email-server-revisited/index.md b/source/blog/2022/email-server-revisited/index.md index eb3fc18..20eff24 100644 --- a/source/blog/2022/email-server-revisited/index.md +++ b/source/blog/2022/email-server-revisited/index.md @@ -181,7 +181,8 @@ One day, I tried to send an email to an Outlook-based account, and OpenSMTPD reported it had been unable to make the delivery, because Microsoft had thrown an error: -{% include image.html file="microsoft-bounce.png" width="100%" class="darkinv" alt="Bounce message due to error from Microsoft" %} +{% include image.html file="microsoft-bounce.png" width="100%" class="darkinv" + alt="Bounce message due to error from Microsoft" %} To their credit, they seem to be offering a way out. This approach is reasonable: preventively ban high-risk IP ranges, diff --git a/source/know/concept/bernstein-vazirani-algorithm/index.md b/source/know/concept/bernstein-vazirani-algorithm/index.md index 85017dc..5f224dc 100644 --- a/source/know/concept/bernstein-vazirani-algorithm/index.md +++ b/source/know/concept/bernstein-vazirani-algorithm/index.md @@ -36,7 +36,8 @@ However, the Bernstein-Vazirani algorithm allows a quantum computer to do it with only a single query. It uses the following circuit: -{% include image.html file="bernstein-vazirani-circuit.png" width="52%" alt="Bernstein-Vazirani circuit" %} +{% include image.html file="bernstein-vazirani-circuit.png" width="52%" + alt="Bernstein-Vazirani circuit" %} Where $$U_f$$ is a phase oracle, whose action is defined as follows, diff --git a/source/know/concept/bloch-sphere/index.md b/source/know/concept/bloch-sphere/index.md index 0ca6f1b..99ac45d 100644 --- a/source/know/concept/bloch-sphere/index.md +++ b/source/know/concept/bloch-sphere/index.md @@ -13,7 +13,8 @@ In quantum mechanics, particularly quantum information, the **Bloch sphere** is an invaluable tool to visualize qubits. All pure qubit states are represented by a point on the sphere's surface: -{% include image.html file="sketch-full.png" width="67%" alt="Bloch sphere" %} +{% include image.html file="sketch-full.png" width="67%" + alt="Bloch sphere" %} The $$x$$, $$y$$ and $$z$$-axes represent the components of a spin-1/2-alike system, and their extremes are the eigenstates of the Pauli matrices: diff --git a/source/know/concept/deutsch-jozsa-algorithm/index.md b/source/know/concept/deutsch-jozsa-algorithm/index.md index 5f2f268..44b06ad 100644 --- a/source/know/concept/deutsch-jozsa-algorithm/index.md +++ b/source/know/concept/deutsch-jozsa-algorithm/index.md @@ -41,7 +41,8 @@ In other words, we only need to determine if $$f(0) = f(1)$$ or $$f(0) \neq f(1) To do this, we use the following quantum circuit, where $$U_f$$ is the oracle we query: -{% include image.html file="deutsch-circuit.png" width="48%" alt="Deutsch circuit" %} +{% include image.html file="deutsch-circuit.png" width="48%" + alt="Deutsch circuit" %} Due to unitarity constraints, the action of $$U_f$$ is defined to be as follows, @@ -141,7 +142,8 @@ We are promised that $$f(x)$$ is either constant or balanced; other possibilities are assumed to be impossible. This algorithm is then implemented by the following quantum circuit: -{% include image.html file="deutsch-jozsa-circuit.png" width="52%" alt="Deutsch-Jozsa circuit" %} +{% include image.html file="deutsch-jozsa-circuit.png" width="52%" + alt="Deutsch-Jozsa circuit" %} There are $$N$$ qubits in initial state $$\Ket{0}$$, and one in $$\Ket{1}$$. For clarity, the oracle $$U_f$$ works like so: diff --git a/source/know/concept/dispersive-broadening/index.md b/source/know/concept/dispersive-broadening/index.md index 9642737..55a31e6 100644 --- a/source/know/concept/dispersive-broadening/index.md +++ b/source/know/concept/dispersive-broadening/index.md @@ -62,7 +62,8 @@ This phenomenon is illustrated below for our example of a Gaussian pulse with parameter values $$T_0 = 1\:\mathrm{ps}$$, $$P_0 = 1\:\mathrm{kW}$$, $$\beta_2 = -10 \:\mathrm{ps}^2/\mathrm{m}$$ and $$\gamma = 0$$: -{% include image.html file="simulation-full.png" width="100%" alt="Dispersive broadening simulation results" %} +{% include image.html file="simulation-full.png" width="100%" + alt="Dispersive broadening simulation results" %} The **instantaneous frequency** $$\omega_\mathrm{GVD}(z, t)$$, which describes the dominant angular frequency at a given point in the time domain, diff --git a/source/know/concept/fabry-perot-cavity/index.md b/source/know/concept/fabry-perot-cavity/index.md index c013f1d..c88e62d 100644 --- a/source/know/concept/fabry-perot-cavity/index.md +++ b/source/know/concept/fabry-perot-cavity/index.md @@ -19,7 +19,8 @@ We divide the $$x$$-axis into three domains: left $$L$$, center $$C$$, and right The cavity $$C$$ has length $$\ell$$ and is centered on $$x = 0$$. Let $$n_L$$, $$n_C$$ and $$n_R$$ be the respective domains' refractive indices: -{% include image.html file="sketch-full.png" width="70%" alt="Cavity structure" %} +{% include image.html file="sketch-full.png" width="70%" + alt="Cavity structure" %} diff --git a/source/know/concept/feynman-diagram/index.md b/source/know/concept/feynman-diagram/index.md index ace8dbc..1f1c957 100644 --- a/source/know/concept/feynman-diagram/index.md +++ b/source/know/concept/feynman-diagram/index.md @@ -38,7 +38,8 @@ Let the subscript $$I$$ refer to the and $$\mathcal{T}\{\}$$ denote the [time-ordered product](/know/concept/time-ordered-product/): -{% include image.html file="fermion-light.png" width="60%" alt="Fermion line diagram" %} +{% include image.html file="fermion-light.png" width="60%" + alt="Fermion line diagram" %} $$\begin{aligned} = i \hbar G_{s_2 s_1}^0(\vb{r}_2, t_2; \vb{r}_1, t_1) @@ -58,7 +59,8 @@ Less common is a **heavy fermion line**, representing a causal Green's function $$G$$ for the entire Hamiltonian $$\hat{H}$$, where the subscript $$H$$ refers to the [Heisenberg picture](/know/concept/heisenberg-picture/): -{% include image.html file="fermion-heavy.png" width="60%" alt="Heavy fermion line diagram" %} +{% include image.html file="fermion-heavy.png" width="60%" + alt="Heavy fermion line diagram" %} $$\begin{aligned} = i \hbar G_{s_2 s_1}(\vb{r}_2, t_2; \vb{r}_1, t_1) @@ -72,7 +74,8 @@ which we assume to be instantaneous, i.e. time-independent hence it starts and ends at the same time, and no arrow is drawn: -{% include image.html file="boson.png" width="60%" alt="Boson/interaction line diagram" %} +{% include image.html file="boson.png" width="60%" + alt="Boson/interaction line diagram" %} $$\begin{aligned} = \frac{1}{i \hbar} W_{s_2 s_1}(\vb{r}_2, t_2; \vb{r}_1, t_1) @@ -94,7 +97,8 @@ $$\begin{aligned} One-body (time-dependent) operators $$\hat{V}$$ in $$\hat{H}_1$$ are instead represented by a special vertex: -{% include image.html file="impurity.png" width="35%" alt="One-body perturbation (e.g. impurity) diagram" %} +{% include image.html file="impurity.png" width="35%" + alt="One-body perturbation (e.g. impurity) diagram" %} $$\begin{aligned} = \frac{1}{i \hbar} V_s(\vb{r}, t) @@ -171,7 +175,8 @@ Working in Fourier space allows us to simplify calculations. Consider the following diagram and the resulting expression, where $$\tilde{\vb{r}} = (\vb{r}, t)$$, and $$\tilde{\vb{k}} = (\vb{k}, \omega)$$: -{% include image.html file="example.png" width="40%" alt="Example: fermion-fermion interaction" %} +{% include image.html file="example.png" width="40%" + alt="Example: fermion-fermion interaction" %} $$\begin{aligned} &= (i \hbar)^3 \sum_{s s'} \!\!\iint \dd{\tilde{\vb{r}}} \dd{\tilde{\vb{r}}'} diff --git a/source/know/concept/metacentric-height/index.md b/source/know/concept/metacentric-height/index.md index 3d81d44..97afff6 100644 --- a/source/know/concept/metacentric-height/index.md +++ b/source/know/concept/metacentric-height/index.md @@ -26,7 +26,8 @@ does not coincide with the origin in general, as is illustrated in the following sketch of our choice of coordinate system: -{% include image.html file="sketch-full.png" width="75%" alt="Boat's coordinate system" %} +{% include image.html file="sketch-full.png" width="75%" + alt="Boat's coordinate system" %} Here, $$B$$ is the **center of buoyancy**, equal to the center of mass of the volume of water displaced by the boat diff --git a/source/know/concept/modulational-instability/index.md b/source/know/concept/modulational-instability/index.md index f1c246c..d646503 100644 --- a/source/know/concept/modulational-instability/index.md +++ b/source/know/concept/modulational-instability/index.md @@ -185,7 +185,8 @@ $$\begin{aligned} = \sqrt{P_0} \sech\!\Big(\frac{t}{T_0}\Big) \end{aligned}$$ -{% include image.html file="simulation-full.png" width="100%" alt="Modulational instability simulation results" %} +{% include image.html file="simulation-full.png" width="100%" + alt="Modulational instability simulation results" %} Where $$L_\mathrm{NL} = 1/(\gamma P_0)$$ is the characteristic length of nonlinear effects. Note that no noise was added to the simulation; diff --git a/source/know/concept/optical-wave-breaking/index.md b/source/know/concept/optical-wave-breaking/index.md index 3509bc2..1b6b558 100644 --- a/source/know/concept/optical-wave-breaking/index.md +++ b/source/know/concept/optical-wave-breaking/index.md @@ -34,7 +34,8 @@ Shortly before the slope would become infinite, small waves start "falling off" the edge of the pulse, hence the name *wave breaking*: -{% include image.html file="frequency-full.png" width="100%" alt="Instantaneous frequency profile evolution" %} +{% include image.html file="frequency-full.png" width="100%" + alt="Instantaneous frequency profile evolution" %} Several interesting things happen around this moment. To demonstrate this, spectrograms of the same simulation @@ -51,7 +52,8 @@ After OWB, a train of small waves falls off the edges, which eventually melt together, leading to a trapezoid shape in the $$t$$-domain. Dispersive broadening then continues normally: -{% include image.html file="spectrograms-full.png" width="100%" alt="Spectrograms of pulse shape evolution" %} +{% include image.html file="spectrograms-full.png" width="100%" + alt="Spectrograms of pulse shape evolution" %} We call the distance at which the wave breaks $$L_\mathrm{WB}$$, and want to predict it analytically. @@ -189,7 +191,8 @@ $$\begin{aligned} This prediction for $$L_\mathrm{WB}$$ appears to agree well with the OWB observed in the simulation: -{% include image.html file="simulation-full.png" width="100%" alt="Optical wave breaking simulation results" %} +{% include image.html file="simulation-full.png" width="100%" + alt="Optical wave breaking simulation results" %} Because all spectral broadening up to $$L_\mathrm{WB}$$ is caused by SPM, whose $$\omega$$-domain behaviour is known, diff --git a/source/know/concept/quantum-fourier-transform/index.md b/source/know/concept/quantum-fourier-transform/index.md index 1c68ad0..217596b 100644 --- a/source/know/concept/quantum-fourier-transform/index.md +++ b/source/know/concept/quantum-fourier-transform/index.md @@ -172,13 +172,15 @@ The quantum circuit to execute the mentioned steps is illustrated below, excluding the swapping part to get the right order. Here, $$R_m$$ means $$R_\phi$$ with $$\phi = 2 \pi / 2^m$$: -{% include image.html file="qft-circuit-noswap.png" width="100%" alt="QFT circuit, without final swap" %} +{% include image.html file="qft-circuit-noswap.png" width="100%" + alt="QFT circuit, without final swap" %} Again, note how the inputs $$\Ket{x_j}$$ and outputs $$\Ket{k_j}$$ are in the opposite order. The complete circuit, including the swapping at the end, therefore looks like this: -{% include image.html file="qft-circuit-swap.png" width="85%" alt="QFT circuit, including final swap" %} +{% include image.html file="qft-circuit-swap.png" width="85%" + alt="QFT circuit, including final swap" %} For each of the $$n$$ qubits, $$\mathcal{O}(n)$$ gates are applied, so overall the QFT algorithm is $$\mathcal{O}(n^2)$$. diff --git a/source/know/concept/quantum-gate/index.md b/source/know/concept/quantum-gate/index.md index e8ff579..9704e53 100644 --- a/source/know/concept/quantum-gate/index.md +++ b/source/know/concept/quantum-gate/index.md @@ -204,7 +204,8 @@ but not always in the basis of $$\Ket{0}_1$$, $$\Ket{1}_1$$, $$\Ket{0}_2$$ and $ With that said, the first two-qubit gate is $$\mathrm{SWAP}$$, which simply swaps $$\Ket{\psi_1}$$ and $$\Ket{\psi_2}$$: -{% include image.html file="swap.png" width="22%" alt="SWAP gate diagram" %} +{% include image.html file="swap.png" width="22%" + alt="SWAP gate diagram" %} $$\begin{aligned} \boxed{ @@ -231,7 +232,8 @@ $$\begin{aligned} Next, there is the **controlled NOT gate** $$\mathrm{CNOT}$$, which "flips" (applies $$X$$ to) $$\Ket{\psi_2}$$ if $$\Ket{\psi_1}$$ is true: -{% include image.html file="cnot.png" width="22%" alt="CNOT gate diagram" %} +{% include image.html file="cnot.png" width="22%" + alt="CNOT gate diagram" %} $$\begin{aligned} \boxed{ @@ -256,7 +258,8 @@ More generally, from every one-qubit gate $$U$$, we can define a two-qubit **controlled U gate** $$\mathrm{CU}$$, which applies $$U$$ to $$\Ket{\psi_2}$$ if $$\Ket{\psi_1}$$ is true: -{% include image.html file="cu.png" width="22%" alt="CU gate diagram" %} +{% include image.html file="cu.png" width="22%" + alt="CU gate diagram" %} $$\begin{aligned} \boxed{ diff --git a/source/know/concept/random-phase-approximation/index.md b/source/know/concept/random-phase-approximation/index.md index 0d0b428..03fd302 100644 --- a/source/know/concept/random-phase-approximation/index.md +++ b/source/know/concept/random-phase-approximation/index.md @@ -71,17 +71,20 @@ leaving only the single most divergent one at each order $$n$$, i.e. the ones where all $$n$$ interaction lines carry the same momentum and energy: -{% include image.html file="self-energy.png" width="92%" alt="RPA self-energy definition" %} +{% include image.html file="self-energy.png" width="92%" + alt="RPA self-energy definition" %} Where we have defined the **screened interaction** $$W^\mathrm{RPA}$$, denoted by a double wavy line: -{% include image.html file="interaction.png" width="95%" alt="RPA screened interaction definition" %} +{% include image.html file="interaction.png" width="95%" + alt="RPA screened interaction definition" %} Rearranging the above sequence of diagrams quickly leads to the following [Dyson equation](/know/concept/dyson-equation/): -{% include image.html file="dyson.png" width="55%" alt="Dyson equation for screened interaction" %} +{% include image.html file="dyson.png" width="55%" + alt="Dyson equation for screened interaction" %} In Fourier space, this equation's linear shape means it is algebraic, so we can write it out: @@ -98,7 +101,8 @@ with an internal wavevector $$\vb{q}$$, fermionic frequency $$i \omega_m^F$$, an Abbreviating $$\tilde{\vb{k}} \equiv (\vb{k}, i \omega_n^B)$$ and $$\tilde{\vb{q}} \equiv (\vb{q}, i \omega_n^F)$$: -{% include image.html file="pairbubble.png" width="45%" alt="Internal variables of pair-bubble diagram" %} +{% include image.html file="pairbubble.png" width="45%" + alt="Internal variables of pair-bubble diagram" %} We isolate the Dyson equation for $$W^\mathrm{RPA}$$, which reveals its physical interpretation as a *screened* interaction: diff --git a/source/know/concept/repetition-code/index.md b/source/know/concept/repetition-code/index.md index 89e6f4d..fa039a3 100644 --- a/source/know/concept/repetition-code/index.md +++ b/source/know/concept/repetition-code/index.md @@ -77,7 +77,8 @@ $$\begin{aligned} Such a transformation is easy to achieve with the following sequence of [quantum gates](/know/concept/quantum-gate/): -{% include image.html file="bit-flip-encode.png" width="32%" alt="Bit flip code encoder" %} +{% include image.html file="bit-flip-encode.png" width="32%" + alt="Bit flip code encoder" %} So, a little while after encoding the state $$\Ket{\psi}$$ like that, a bit flip occurs on the 2nd qubit: @@ -180,7 +181,8 @@ without affecting $$\ket{\overline{\psi}}$$ itself, by applying $$\mathrm{CNOT}$$s to some ancillary qubits and then measuring those: -{% include image.html file="bit-flip-detect.png" width="62%" alt="Bit flip code decoder" %} +{% include image.html file="bit-flip-detect.png" width="62%" + alt="Bit flip code decoder" %} The two measurements, respectively representing $$ZZI$$ and $$IZZ$$, yield $$\Ket{1}$$ if a bit flip definitely occurred, @@ -231,14 +233,16 @@ $$\begin{aligned} = \alpha \Ket{+\!+\!+} + \beta \Ket{-\!-\!-} \end{aligned}$$ -{% include image.html file="phase-flip-encode.png" width="40%" alt="Phase flip code encoder" %} +{% include image.html file="phase-flip-encode.png" width="40%" + alt="Phase flip code encoder" %} A phase flip along the $$Z$$-axis corresponds to a bit flip along the $$X$$-axis $$\Ket{+} \to \Ket{-}$$. In this case, the stabilizers are $$XXI$$ and $$IXX$$, and the error detection circuit is as follows: -{% include image.html file="phase-flip-detect.png" width="70%" alt="Phase flip code decoder" %} +{% include image.html file="phase-flip-detect.png" width="70%" + alt="Phase flip code decoder" %} This system protects us against all single-qubit phase flips, but not against bit flips. @@ -281,7 +285,8 @@ This encoding is achieved by the following quantum circuit, which simply consists of the phase flip encoder, followed by 3 copies of the bit flip encoder: -{% include image.html file="shor-code-encode.png" width="55%" alt="Shor code encoder" %} +{% include image.html file="shor-code-encode.png" width="55%" + alt="Shor code encoder" %} We thus use 9 physical qubits to store 1 logical qubit. Fortunately, more efficient schemes exist. diff --git a/source/know/concept/rutherford-scattering/index.md b/source/know/concept/rutherford-scattering/index.md index 6f5a21f..edf391c 100644 --- a/source/know/concept/rutherford-scattering/index.md +++ b/source/know/concept/rutherford-scattering/index.md @@ -19,7 +19,8 @@ Let 2 be initially at rest, and 1 approach it with velocity $$\vb{v}_1$$. Coulomb repulsion causes 1 to deflect by an angle $$\theta$$, and pushes 2 away in the process: -{% include image.html file="two-body-full.png" width="50%" alt="Two-body repulsive 'collision'" %} +{% include image.html file="two-body-full.png" width="50%" + alt="Two-body repulsive 'collision'" %} Here, $$b$$ is called the **impact parameter**. Intuitively, we expect $$\theta$$ to be larger for smaller $$b$$. @@ -67,7 +68,8 @@ then by comparing $$t > 0$$ and $$t < 0$$ we can see that $$v_x$$ is unchanged for any given $$\pm t$$, while $$v_y$$ simply changes sign: -{% include image.html file="one-body-full.png" width="60%" alt="Equivalent one-body deflection" %} +{% include image.html file="one-body-full.png" width="60%" + alt="Equivalent one-body deflection" %} From our expression for $$\vb{r}$$, we can find $$\vb{v}$$ by differentiating with respect to time: diff --git a/source/know/concept/self-energy/index.md b/source/know/concept/self-energy/index.md index f233466..4120011 100644 --- a/source/know/concept/self-energy/index.md +++ b/source/know/concept/self-energy/index.md @@ -204,7 +204,8 @@ that exactly $$2^m m!$$ diagrams at each order are topologically equivalent, so we are left with non-equivalent diagrams only. Let $$G(b,a) = G_{ba}$$: -{% include image.html file="expansion.png" width="90%" alt="Full expansion of G in Feynman diagrams" %} +{% include image.html file="expansion.png" width="90%" + alt="Full expansion of G in Feynman diagrams" %} A **reducible diagram** is a Feynman diagram that can be cut in two valid diagrams @@ -215,7 +216,8 @@ At last, we define the **self-energy** $$\Sigma(y,x)$$ as the sum of all irreducible terms in $$G(b,a)$$, after removing the two external lines from/to $$a$$ and $$b$$: -{% include image.html file="definition.png" width="90%" alt="Definition of self-energy" %} +{% include image.html file="definition.png" width="90%" + alt="Definition of the self-energy" %} Despite its appearance, the self-energy has the semantics of a line, so it has two endpoints over which to integrate if necessary. @@ -234,7 +236,8 @@ Thanks to this recursive structure, you can convince youself that $$G(b,a)$$ obeys a [Dyson equation](/know/concept/dyson-equation/) involving $$\Sigma(y, x)$$: -{% include image.html file="dyson.png" width="95%" alt="Dyson equation in Feynman diagrams" %} +{% include image.html file="dyson.png" width="95%" + alt="Dyson equation in Feynman diagrams" %} This makes sense: in the "normal" Dyson equation we have a one-body perturbation instead of $$\Sigma$$, diff --git a/source/know/concept/self-phase-modulation/index.md b/source/know/concept/self-phase-modulation/index.md index 931e10b..bc5a103 100644 --- a/source/know/concept/self-phase-modulation/index.md +++ b/source/know/concept/self-phase-modulation/index.md @@ -69,7 +69,8 @@ $$\begin{aligned} A(z, t) = \sqrt{P_0} \exp\!\Big(\!-\!\frac{t^2}{2 T_0^2}\Big) \exp\!\bigg( i \gamma z P_0 \exp\!\Big(\!-\!\frac{t^2}{T_0^2}\Big) \bigg) \end{aligned}$$ -{% include image.html file="simulation-full.png" width="100%" alt="Self-phase modulation simulation results" %} +{% include image.html file="simulation-full.png" width="100%" + alt="Self-phase modulation simulation results" %} The **instantaneous frequency** $$\omega_\mathrm{SPM}(z, t)$$, which describes the dominant angular frequency at a given point in the time domain, diff --git a/source/know/concept/self-steepening/index.md b/source/know/concept/self-steepening/index.md index fd48e0f..f96c020 100644 --- a/source/know/concept/self-steepening/index.md +++ b/source/know/concept/self-steepening/index.md @@ -126,7 +126,8 @@ $$L_\mathrm{shock} = 0.847\,\mathrm{m}$$, which turns out to be accurate, although the simulation breaks down due to insufficient resolution: -{% include image.html file="simulation-full.png" width="100%" alt="Self-steepening simulation results" %} +{% include image.html file="simulation-full.png" width="100%" + alt="Self-steepening simulation results" %} Unfortunately, self-steepening cannot be simulated perfectly: as the pulse approaches $$L_\mathrm{shock}$$, its spectrum broadens to infinite diff --git a/source/know/concept/shors-algorithm/index.md b/source/know/concept/shors-algorithm/index.md index 5ae5077..678d5d2 100644 --- a/source/know/concept/shors-algorithm/index.md +++ b/source/know/concept/shors-algorithm/index.md @@ -48,7 +48,8 @@ The period $$s$$ is the smallest integer satisfying $$f(x) = f(x+s)$$. To do this, the following $$2q$$-qubit quantum circuit is used, with $$q$$ chosen so that $$N^2 \le 2^q < 2 N^2$$: -{% include image.html file="shors-circuit.png" width="70%" alt="Shor's circuit" %} +{% include image.html file="shors-circuit.png" width="70%" + alt="Shor's circuit" %} Here, $$\mathrm{QFT}_q$$ refers to the $$q$$-qubit [quantum Fourier transform](/know/concept/quantum-fourier-transform/), diff --git a/source/know/concept/simons-algorithm/index.md b/source/know/concept/simons-algorithm/index.md index 294912b..63bb808 100644 --- a/source/know/concept/simons-algorithm/index.md +++ b/source/know/concept/simons-algorithm/index.md @@ -52,7 +52,8 @@ A quantum computer needs to query $$f$$ only $$\mathcal{O}(n)$$ times, although the exact number varies due to the algorithm's probabilistic nature. It uses the following circuit: -{% include image.html file="simons-circuit.png" width="52%" alt="Simon's circuit" %} +{% include image.html file="simons-circuit.png" width="52%" + alt="Simon's circuit" %} The XOR oracle $$U_f$$ implements $$f$$, and has the following action for $$n$$-bit $$a$$ and $$b$$: diff --git a/source/know/concept/step-index-fiber/index.md b/source/know/concept/step-index-fiber/index.md index 210a339..2d049a1 100644 --- a/source/know/concept/step-index-fiber/index.md +++ b/source/know/concept/step-index-fiber/index.md @@ -269,7 +269,8 @@ $$\begin{aligned} \end{cases} \end{aligned}$$ -{% include image.html file="bessel-full.png" width="100%" alt="First few solutions to Bessel's equation" %} +{% include image.html file="bessel-full.png" width="100%" + alt="First few solutions to Bessel's equation" %} Looking at these solutions with our constraints for $$R_o$$ in mind, we see that for $$\mu > 0$$ none of the solutions decay @@ -429,7 +430,8 @@ An example graphical solution of the transcendental equation is illustrated below for a fiber with $$V = 5$$, where red and blue respectively denote the left and right-hand side: -{% include image.html file="transcendental-full.png" width="100%" alt="Graphical solution of transcendental equation" %} +{% include image.html file="transcendental-full.png" version="2" width="100%" + alt="Graphical solution of transcendental equation" %} For the ground state the light is well-confined in the core, but for higher modes it increasingly leaks into the cladding, |