<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Zhaose&#39;s Physics Notes</title>
<link>https://blog.zhaose.cyou/</link>
<atom:link href="https://blog.zhaose.cyou/index.xml" rel="self" type="application/rss+xml"/>
<description>Find all sorts of wired inspirations about physics here.</description>
<generator>quarto-1.8.27</generator>
<lastBuildDate>Sat, 31 Jan 2026 00:00:00 GMT</lastBuildDate>
<item>
  <title>Filter Events by BDT for Higgs in LHC</title>
  <dc:creator>Zhaose </dc:creator>
  <link>https://blog.zhaose.cyou/posts/FilterHiggsEventsByBDT/</link>
  <description><![CDATA[ 





<p>This is the final project of the subatomic physics online course hosted by MIT which I’ve attended this term. An easy but somehow interesting project. It’s basically the original version I submitted, with tiny adjustments.</p>
<p>With out further data selection Figure&nbsp;1, the data is not significant comparing to the background. Around 125GeV, the data seems to be random distributed.</p>
<div id="fig-og-plot" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-og-plot-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://blog.zhaose.cyou/posts/FilterHiggsEventsByBDT/images/og-plot.svg" class="img-fluid figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-og-plot-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1: unfiltered data plot
</figcaption>
</figure>
</div>
<section id="basic-object-selection-z-candidates" class="level1">
<h1>Basic Object Selection &amp; Z candidates</h1>
<p>After implying momentum &amp; <img src="https://latex.codecogs.com/png.latex?%5Ceta"> cut, one should also filter out those events with wrong lepton pair, which does not satisfy charge conservation.</p>
<p>Then pick the first one among four leptons, pair it with one of, if not the only, other leptons which is its anti-particle counterpart. After this process, one or two pair(s) of Z boson candidates can be constructed. However, we should choose the one pair which among the pair there is one Z boson as close to on-shell as possible.</p>
<p>After constructing and choosing the best fitting Z boson pairs, one can draw the distribution of constructed Z boson mass, separating by decay flavor or maximum/minimum in the pair. This leads to Figure&nbsp;2 (by flavor) and Figure&nbsp;3 (by energy).</p>
<div id="fig-flavor-Z" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-flavor-Z-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://blog.zhaose.cyou/posts/FilterHiggsEventsByBDT/images/flavor_Z.svg" class="img-fluid figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-flavor-Z-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;2: <img src="https://latex.codecogs.com/png.latex?m_Z"> distribution separated by decay flavor
</figcaption>
</figure>
</div>
<div id="fig-mass-Z" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-mass-Z-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://blog.zhaose.cyou/posts/FilterHiggsEventsByBDT/images/high_low_Z.svg" class="img-fluid figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-mass-Z-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;3: <img src="https://latex.codecogs.com/png.latex?m_Z"> distribution separated by whether they are the larger one or not
</figcaption>
</figure>
</div>
</section>
<section id="find-apply-the-best-simple-cut" class="level1">
<h1>Find &amp; apply the best simple cut</h1>
<p>By selecting the MC events which <img src="https://latex.codecogs.com/png.latex?m_%7B4l%7D"> fits between <img src="https://latex.codecogs.com/png.latex?119GeV"> and 131GeV, one can, for each event, construct a Z boson pair based on the method we have mentioned before. The constructed Z boson pair has two Z boson masses, one is <img src="https://latex.codecogs.com/png.latex?Z_1">, which is closer to <img src="https://latex.codecogs.com/png.latex?m_Z"> (on-shell mass), comparing to the other one <img src="https://latex.codecogs.com/png.latex?Z_2">.</p>
<p>A cut confines <img src="https://latex.codecogs.com/png.latex?m_%7BZ_1%7D"> and <img src="https://latex.codecogs.com/png.latex?m_%7BZ_2%7D"> in a specific region on the <img src="https://latex.codecogs.com/png.latex?(m_%7BZ_1%7D,m_%7BZ_2%7D)"> plane. Four parameters are needed, implies that <img src="https://latex.codecogs.com/png.latex?%0AC_1%20%3C%20m_%7BZ_1%7D%20%3C%20C_2,%5C;%20C_3%20%3C%20m_%7BZ_2%7D%20%3C%20C_4,%0A"> By sweeping through the parameter space, which is chosen to be <img src="https://latex.codecogs.com/png.latex?20-35,%2095-115,%2010-24,%2045-68">, the optimal combination is <img src="https://latex.codecogs.com/png.latex?C%20=%20(26,%2099,%2014,%2064)">.</p>
<p>By using <img src="https://latex.codecogs.com/png.latex?C%20=%20(26,%2099,%2014,%2064)">, among the <strong>71190</strong> MC events which passed the cut, <strong>63157</strong> events are <img src="https://latex.codecogs.com/png.latex?H%20%5Cto%204l"> events, the significance value is <strong>2.341</strong>.</p>
<p>By applying this fine-tuned cut to the MC events and real data, one can improve the diagram of the distribution of <img src="https://latex.codecogs.com/png.latex?m_%7B4l%7D">, to find Higgs signal. The result is shown in Figure&nbsp;4.</p>
<div id="fig-refined" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-refined-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://blog.zhaose.cyou/posts/FilterHiggsEventsByBDT/images/refined.svg" class="img-fluid figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-refined-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;4: <img src="https://latex.codecogs.com/png.latex?m_%7B4l%7D"> distribution after filtering out irrelevant events by simple cut
</figcaption>
</figure>
</div>
</section>
<section id="filtering-events-by-bdt-classifier" class="level1">
<h1>Filtering events by BDT classifier</h1>
<p>The ML library used is <code>EvoTrees.jl</code>. Here we are using a decision tree with depth of 4, trained 200 rounds, the loss algorithm is Logarithmic Loss.</p>
<p>For training, we split the MC events satisfied previous constraints in half. Half of the events are used for training, and the other half are used to find the optimal threshold. With this configuration, 70312 MC events passed, with 62604 Higgs events among them, and the significance is 2.341.</p>
<p>Using BDT with Z boson masses as input features yielded a result similar to the rectangular cut method. This similarity is expected, the kinematics of <img src="https://latex.codecogs.com/png.latex?H%20%5Cto%204l"> and <img src="https://latex.codecogs.com/png.latex?ZZ"> are overlapping, which means BDT, which can be seen as offering a more fine-tuned cutting boundary, still won’t be able to tell them apart. The BDT could potentially offer greater improvements if additional kinematic variables is included.</p>
<p>The result with BDT filtering is shown in Figure&nbsp;5.</p>
<div id="fig-refined-bdt" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-refined-bdt-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://blog.zhaose.cyou/posts/FilterHiggsEventsByBDT/images/refined_bdt.svg" class="img-fluid figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-refined-bdt-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;5: <img src="https://latex.codecogs.com/png.latex?m_%7B4l%7D"> distribution after filtering out irrelevant events by BDT
</figcaption>
</figure>
</div>
<p>Through the whole data set we do see some differences between BDT and rectangular cut. BDT does not filter out much when <img src="https://latex.codecogs.com/png.latex?m_%7B4l%7D"> is too large, but this does not affect our result about Higgs boson.</p>
<p>All Julia and LaTeX source code can be found at <a href="https://github.com/zhaose233/subatomic-final-project">this repo</a>.</p>


</section>

 ]]></description>
  <category>physics</category>
  <category>experiment</category>
  <guid>https://blog.zhaose.cyou/posts/FilterHiggsEventsByBDT/</guid>
  <pubDate>Sat, 31 Jan 2026 00:00:00 GMT</pubDate>
  <media:content url="https://blog.zhaose.cyou/posts/FilterHiggsEventsByBDT/images/refined.svg" medium="image" type="image/svg+xml"/>
</item>
<item>
  <title>Simulating Harmonic Oscillator on a Lattice</title>
  <dc:creator>Zhaose </dc:creator>
  <link>https://blog.zhaose.cyou/posts/LatticeHarmonicOscillator/</link>
  <description><![CDATA[ 





<section id="concepts" class="level1">
<h1>Concepts</h1>
<p>For a harmonic oscillator, the lagrangian can be written as: <img src="https://latex.codecogs.com/png.latex?%0AL%20=%20%5Cfrac%7B1%7D%7B2%7D%20m%20%5Cdot%7Bx%7D%5E2%20-%20%5Cfrac%7B1%7D%7B2%7D%20m%20%5Comega%5E2%20x%5E2%0A"> The two-point correlation function then, is <img src="https://latex.codecogs.com/png.latex?%0AD_q(t_1,%20t_2)%20=%20%5Cbra%7Bq,%20T%7D%20%5Cmathbf%7Bx%7D(t_2)%20%5Cmathbf%7Bx%7D(t_1)%20%5Cket%7Bq,%200%7D%0A"> If we transfer it into Shördinger picture, and insert sets of energy eigenstates, we have <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign*%7D%0A&amp;%20%5Cbra%7Bq,%20T%7D%20%5Cmathbf%7Bx%7D(t_2)%20%5Cmathbf%7Bx%7D(t_1)%20%5Cket%7Bq,%200%7D%20%5C%5C%0A=&amp;%20%5Cbra%7Bq%7D%20e%5E%7B-i%20%5Cmathbf%7BH%7D%20(T%20-%20t_2)%7D%20%5Cmathbf%7Bx%7D%20e%5E%7B-i%20%5Cmathbf%7BH%7D%20(t_2%20-%20t_1)%7D%20%5Cmathbf%7Bx%7D%20e%5E%7B-i%20%5Cmathbf%7BH%7D%20t_1%7D%20%5Cket%7Bq%7D%20%5C%5C%0A=&amp;%20%5Csum_%7Ba,b,c,d%7D%20%5Cbra%7Bq%7D%20e%5E%7B-i%20%5Cmathbf%7BH%7D%20(T%20-%20t_2)%7D%20%5Cket%7Ba%7D%20%5Cbra%7Ba%7D%20%5Cmathbf%7Bx%7D%20%5Cket%7Bb%7D%20%5Cbra%7Bb%7D%20e%5E%7B-i%20%5Cmathbf%7BH%7D(t_2%20-%20t_1)%7D%20%20%5Cket%7Bc%7D%20%5Cbra%7Bc%7D%20%5Cmathbf%7Bx%7D%20%5Cket%7Bd%7D%20%5Cbra%7Bd%7D%20e%5E%7B-i%20%5Cmathbf%7BH%7D%20t_1%7D%20%5Cket%7Bq%7D%20%5C%5C%0A=&amp;%20%5Csum_%7Ba,b,d%7D%20e%5E%7B-i%20H_a%20(T%20-%20t_2)%7D%20e%5E%7B-i%20H_d%20t_1%7D%20e%5E%7B-i%20H_b%20(t_2%20-%20t_1)%7D%20%5Cbraket%7Bd%7Cq%7D%20%5Cbraket%7Bq%7Ca%7D%20%5Cbraket%7Ba%7C%5Cmathbf%7Bx%7D%7Cb%7D%20%5Cbraket%7Bb%7C%5Cmathbf%7Bx%7D%7Cd%7D%0A%5Cend%7Balign*%7D%0A"> It kinda looks like a mess. However, when we do simulation, we always impose the periodic boundary, so we should also do it here, then we have <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign*%7D%0A=&amp;%20%5Cint%20dq%20%5Csum_%7Ba,b,d%7D%20e%5E%7B-i%20H_a%20(T%20-%20t_2)%7D%20e%5E%7B-i%20H_d%20t_1%7D%20e%5E%7B-i%20H_b%20(t_2%20-%20t_1)%7D%20%5Cbraket%7Bd%7Cq%7D%20%5Cbraket%7Bq%7Ca%7D%20%5Cbraket%7Ba%7C%5Cmathbf%7Bx%7D%7Cb%7D%20%5Cbraket%7Bb%7C%5Cmathbf%7Bx%7D%7Cd%7D%20%5C%5C%0A=&amp;%20%5Csum_%7Ba,b%7D%20e%5E%7B-i%20H_a%20(T%20-%20t_2%20+%20t_1)%7D%20e%5E%7B-i%20H_b%20(t_2%20-%20t_1)%7D%20%5Cbraket%7Ba%7C%5Cmathbf%7Bx%7D%7Cb%7D%20%5Cbraket%7Bb%7C%5Cmathbf%7Bx%7D%7Cd%7D%20%5C%5C%0A=&amp;%20%5Csum_%7Ba,b%7D%20e%5E%7B-i%20H_a%20(T%20-%20%5CDelta%20t)%7D%20e%5E%7B-i%20H_b%20%5CDelta%20t%7D%20%5Cleft%7C%5Cbraket%7B0%7C%5Cmathbf%7Bx%7D%7C1%7D%5Cright%7C%5E2%20%5C%5C%0A%5Cend%7Balign*%7D%0A"> Here we just be aware of that different energy eigenstates are orthogonal. To keeps things simple, if we only consider the leading term, which is <img src="https://latex.codecogs.com/png.latex?a,b%20=%200,1">, then we have <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign*%7D%0A=&amp;%20%5Cint%20dq%20%5Cbra%7Bq,%20T%7D%20%5Cmathbf%7Bx%7D(t_2)%20%5Cmathbf%7Bx%7D(t_1)%20%5Cket%7Bq,%200%7D%20%5C%5C%0A=&amp;%20e%5E%7B-i%20H_0%20T%7D%20%5Cleft%7C%5Cbraket%7B0%7C%5Cmathbf%7Bx%7D%7C1%7D%5Cright%7C%5E2%20(e%5E%7B-i%20%5CDelta%20H%20%5CDelta%20t%7D%20+%20e%5E%7B-i%20%5CDelta%20H%20(T%20-%20%5CDelta%20t)%7D)%0A%5Cend%7Balign*%7D%0A"> Since the expectation of <img src="https://latex.codecogs.com/png.latex?%5Cmathbf%7Bx%7D"> is zero, some terms vanish. Note that the only non-constant here is <img src="https://latex.codecogs.com/png.latex?%5CDelta%20t">, which means <img src="https://latex.codecogs.com/png.latex?%0A%5Cint_%7BPB%7D%20Dx(t)%20%5C;%20x(t_1)%20x(t_2)%20exp%5C%7Bi%20%5Cint%20dt%20L%20%5C%7D%20%5C%5C%0A%5Cpropto%20e%5E%7B-i%20%5CDelta%20H%20%5CDelta%20t%7D%20+%20e%5E%7B-i%20%5CDelta%20H%20(T%20-%20%5CDelta%20t)%7D%0A"> Let <img src="https://latex.codecogs.com/png.latex?t%20%5Cto%20-i%20%5Ctau">, then we have <span id="eq-1"><img src="https://latex.codecogs.com/png.latex?%0A%5Cint_%7BPB%7D%20Dx(%5Ctau)%20%5C;%20x(%5Ctau_1)%20x(%5Ctau_2)%20exp%5C%7B-%20%5Cint%20d%5Ctau%20L_E%20%5C%7D%20%5C%5C%0A%5Cpropto%20e%5E%7B-%20%5CDelta%20H%20%5CDelta%20%5Ctau%7D%20+%20e%5E%7B-%20%5CDelta%20H%20(%5CTau%20-%20%5CDelta%20%5Ctau)%7D%0A%5Ctag%7B1%7D"></span> Here <span id="eq-2"><img src="https://latex.codecogs.com/png.latex?%0AL_E%20=%20%5Cfrac%7B1%7D%7B2%7D%20m%20(%5Cfrac%7Bdx%7D%7Bd%5Ctau%7D)%5E2%20+%20%5Cfrac%7B1%7D%7B2%7D%20m%20%5Comega%5E2%20x%5E2%0A%5Ctag%7B2%7D"></span></p>
</section>
<section id="simulation" class="level1">
<h1>Simulation</h1>
<p>If we can write some code to calculate Equation&nbsp;1, then we can extract <img src="https://latex.codecogs.com/png.latex?%5CDelta%20H"> from it, by addressing its relation with <img src="https://latex.codecogs.com/png.latex?%5CDelta%20%5Ctau">. Calculating such a path-integral may seem to be impossible, however, doing MC simulation, we first simply generate a lot of “paths”, make sure their weight is proportional to <img src="https://latex.codecogs.com/png.latex?exp%5C%7B-S_E%5C%7D">, then perform measurements on those paths, get the mean of all measurements, then we will have the approximation of Equation&nbsp;1.</p>
<p>First, make our x dimension-free might be a good idea, although it’s not necessary here. <img src="https://latex.codecogs.com/png.latex?%0Ax%20=%20a%20%5Chat%7Bx%7D%20%5Cto%20%5Chat%7B%5Comega%7D%20=%20%5Comega%20%5Ctimes%20a%0A"> Then define a struct to hold all essential variables, write the function to calculate the change of action after imposing a perturbation at <img src="https://latex.codecogs.com/png.latex?x(%5Ctau)"></p>
<div id="install-pkg" class="cell" data-execution_count="1">
<details class="code-fold">
<summary>Code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb1-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">using</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">Pkg</span></span>
<span id="cb1-2"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">Pkg</span>.<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">add</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Plots"</span>)</span></code></pre></div></div>
</details>
</div>
<div id="prepare" class="cell" data-execution_count="1">
<details class="code-fold">
<summary>Code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb2-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">using</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">Base.Threads</span></span>
<span id="cb2-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">using</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">Random</span></span>
<span id="cb2-3"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">using</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">Plots</span></span>
<span id="cb2-4"></span>
<span id="cb2-5"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">struct</span> World</span>
<span id="cb2-6">  xs<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">Vector{Float64}</span></span>
<span id="cb2-7">  lt<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">Int</span></span>
<span id="cb2-8">  m<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">Float64</span></span>
<span id="cb2-9">  ω<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">Float64</span></span>
<span id="cb2-10">  pt<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">Float64</span></span>
<span id="cb2-11">  rb<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">Vector{Any}</span></span>
<span id="cb2-12"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb2-13"></span>
<span id="cb2-14"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">gen_world</span>(lt, m, ω, pt)</span>
<span id="cb2-15">  red_t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">filter</span>(isodd, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>lt)</span>
<span id="cb2-16">  black_t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">filter</span>(iseven, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>lt)</span>
<span id="cb2-17">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">World</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">zeros</span>(lt), lt, m, ω, pt, [red_t, black_t])</span>
<span id="cb2-18"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb2-19"></span>
<span id="cb2-20"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">get_action_diff</span>(w, t, new_x)</span>
<span id="cb2-21">  lt <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> w.lt</span>
<span id="cb2-22">  old_x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> w.xs[t]</span>
<span id="cb2-23"></span>
<span id="cb2-24">  act_diff <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> w.m <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> w.ω<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">^</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (new_x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">^</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> old_x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">^</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb2-25">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> t_nb <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mod1</span>.((t<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, t<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>), lt)</span>
<span id="cb2-26">    act_diff <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> w.m <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (new_x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> old_x) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (new_x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> old_x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> w.xs[t_nb])</span>
<span id="cb2-27">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb2-28"></span>
<span id="cb2-29">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> act_diff</span>
<span id="cb2-30"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span></code></pre></div></div>
</details>
</div>
<p>Here we separate points in to groups so we can update each group in parallel. Then is how to update the path.</p>
<div id="updates" class="cell" data-execution_count="1">
<details class="code-fold">
<summary>Code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb3-1"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">update_xs!</span>(w, t)</span>
<span id="cb3-2">  new_x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> w.xs[t] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> (<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rand</span>() <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> w.pt</span>
<span id="cb3-3">  </span>
<span id="cb3-4">  act_diff <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">get_action_diff</span>(w, t, new_x)</span>
<span id="cb3-5">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> act_diff <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span></span>
<span id="cb3-6">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">exp</span>(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> act_diff) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&lt;</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rand</span>()</span>
<span id="cb3-7">      <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">false</span></span>
<span id="cb3-8">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb3-9">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb3-10"></span>
<span id="cb3-11">  w.xs[t] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> new_x</span>
<span id="cb3-12">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">true</span></span>
<span id="cb3-13"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb3-14"></span>
<span id="cb3-15"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sweep_w!</span>(w; save_accept<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">false</span>)</span>
<span id="cb3-16">  accepts <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">Atomic</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">{Int}</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)</span>
<span id="cb3-17">  <span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">@threads</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> t <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> w.rb[<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>]</span>
<span id="cb3-18">    acc <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">update_xs!</span>(w, t)</span>
<span id="cb3-19">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> save_accept</span>
<span id="cb3-20">      <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">atomic_add!</span>(accepts, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">Int</span>(acc))</span>
<span id="cb3-21">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb3-22">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb3-23">  <span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">@threads</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> t <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> w.rb[<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>]</span>
<span id="cb3-24">    acc <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">update_xs!</span>(w, t)</span>
<span id="cb3-25">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> save_accept</span>
<span id="cb3-26">      <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">atomic_add!</span>(accepts, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">Int</span>(acc))</span>
<span id="cb3-27">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb3-28">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb3-29">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> accepts[] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> w.lt</span>
<span id="cb3-30"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span></code></pre></div></div>
</details>
</div>
<p>Here <code>exp(- act_diff) &lt; rand()</code> make sure that the weight is properly generated. However, when running the simulation, we need to tune how much perturbtion is made each time, to keep the accept rate to about 1/2.</p>
<p>And to measure, we iterate all path points and take the mean, for each <img src="https://latex.codecogs.com/png.latex?%5CDelta%20t"></p>
<div id="measure" class="cell" data-execution_count="1">
<details class="code-fold">
<summary>Code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb4-1"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">measure_x2</span>(w)</span>
<span id="cb4-2">  x2_t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">zeros</span>(w.lt)</span>
<span id="cb4-3">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> t_0 <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>w.lt</span>
<span id="cb4-4">    <span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">@threads</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> Δt <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>(w.lt <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)</span>
<span id="cb4-5">      x2_t[Δt <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+=</span> w.xs[t_0] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> w.xs[<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mod1</span>(t_0 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> Δt, w.lt)]</span>
<span id="cb4-6">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb4-7">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb4-8">  x2_t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> x2_t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">./</span> w.lt</span>
<span id="cb4-9">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> x2_t</span>
<span id="cb4-10"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span></code></pre></div></div>
</details>
</div>
<p>Now the only thing left is to run the simulation and compare the result with our theoretical result, Equation&nbsp;1.</p>
<div id="runsim" class="cell" data-execution_count="1">
<details class="code-fold">
<summary>Code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb5-1">w <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">gen_world</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">100</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.1</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.0</span>)</span>
<span id="cb5-2"></span>
<span id="cb5-3">n_heat <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1000</span></span>
<span id="cb5-4"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">println</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"HEATING..."</span>)</span>
<span id="cb5-5">acc <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span></span>
<span id="cb5-6"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>n_heat</span>
<span id="cb5-7">  acc <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sweep_w!</span>(w; save_accept<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">true</span>)</span>
<span id="cb5-8"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb5-9"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">println</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ACCEPTED RATE: </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>(acc <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> n_heat)<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span>)</span>
<span id="cb5-10"></span>
<span id="cb5-11">n_measure <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1000</span></span>
<span id="cb5-12"></span>
<span id="cb5-13">x2_t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">zeros</span>(w.lt)</span>
<span id="cb5-14"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">println</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"MEASURING..."</span>)</span>
<span id="cb5-15"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>n_measure</span>
<span id="cb5-16">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> j <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1000</span></span>
<span id="cb5-17">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sweep_w!</span>(w)</span>
<span id="cb5-18">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb5-19">  x2_t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.+=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">measure_x2</span>(w)</span>
<span id="cb5-20"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb5-21">x2_t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">./=</span> n_measure</span>
<span id="cb5-22"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">push!</span>(x2_t, x2_t[<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>])</span></code></pre></div></div>
</details>
</div>
<p>Analyze the result, we have</p>
<div id="cell-plots" class="cell" data-execution_count="1">
<details class="code-fold">
<summary>Code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb6-1">x2_normed <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> x2_t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">./</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sum</span>(x2_t) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.*</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">10.0</span></span>
<span id="cb6-2"></span>
<span id="cb6-3">ts <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>(w.lt)) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">./</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">10.0</span></span>
<span id="cb6-4"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">theo_fun</span>(t)</span>
<span id="cb6-5">  norm <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.0</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">exp</span>(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">10.0</span>)</span>
<span id="cb6-6">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> (<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">exp</span>(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> t) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">exp</span>(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">10.0</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> t))) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> norm</span>
<span id="cb6-7"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb6-8"></span>
<span id="cb6-9">p1 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">plot</span>(ts , x2_normed, label <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"sim"</span>, color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>black, xlabel <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Time"</span>, ylabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Correlation"</span>, framestyle <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>box)</span>
<span id="cb6-10"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">plot!</span>(p1, ts, theo_fun, color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>red, label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"theo"</span>, ls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=:</span>dash)</span>
<span id="cb6-11"></span>
<span id="cb6-12">x2_samp <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> x2_normed[<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">15</span>]</span>
<span id="cb6-13">t_samp  <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> ts[<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">15</span>]</span>
<span id="cb6-14">p2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">plot</span>(t_samp , <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">log</span>.(x2_samp), label <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"sim"</span>, color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>black, xlabel <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Time"</span>, ylabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ln(Correlation)"</span>, framestyle <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>box)</span>
<span id="cb6-15"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">plot!</span>(p2, t_samp, (t) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-&gt;</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">log</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">theo_fun</span>(t)), color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>red, label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"theo"</span>, ls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=:</span>dash)</span>
<span id="cb6-16"></span>
<span id="cb6-17"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">plot</span>(p1, p2, size<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">800</span>,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">400</span>))</span></code></pre></div></div>
</details>
<div id="plots" class="cell-output cell-output-display" data-execution_count="1">
<img src="https://blog.zhaose.cyou/posts/LatticeHarmonicOscillator/data:image/png;base64,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">
</div>
</div>
<p>Note that only the slope in the second picture matters, which means it fits really well. So through this MC simulation, we can extract the difference between the first excited state and the groud state, which is <img src="https://latex.codecogs.com/png.latex?%5Chbar%20%5Comega"> in this case. More uses can be seen in Lattice-QCD, etc.</p>


</section>

 ]]></description>
  <category>physics</category>
  <category>computational</category>
  <category>path-integral</category>
  <category>QM</category>
  <guid>https://blog.zhaose.cyou/posts/LatticeHarmonicOscillator/</guid>
  <pubDate>Sun, 18 Jan 2026 00:00:00 GMT</pubDate>
  <media:content url="https://blog.zhaose.cyou/posts/LatticeHarmonicOscillator/images/fig.svg" medium="image" type="image/svg+xml"/>
</item>
<item>
  <title>Gravity With Portal</title>
  <dc:creator>Zhaose </dc:creator>
  <link>https://blog.zhaose.cyou/posts/PortalGravity/</link>
  <description><![CDATA[ 





<p>Recently, I saw <a href="https://www.youtube.com/watch?v=DydIhwLrbMk">this interesting youtube video</a>, at the first glance, I realized it is just solving the classical gravitational equation maybe under a specific boundary condition? It’s too fun to not try to do it by myself first, then watch the full video. So I tried to qucikly simulate it using Julia, and analyze the result.</p>
<p>To simplify the problem, let there be no mass in the space, gravitational field satisfies Laplace equation: <img src="https://latex.codecogs.com/png.latex?%0A%5Cnabla%5E2%20%5Cvarphi%20=%200%0A"> Consider a box, we set gravitational potential of the top to 0, the bottom to 100, and apply periodic boundary on left and right. This setting itself is just like what we do when we calculate the electrical field between two charged infinitely large metal plates, they satisfy the same equation so for classical gravity they do no different.</p>
<p>One can use finite elements method or finite difference method to calculate this simple question, to keep it simple I decided to just write a simple finite difference equation constructor in Julia. Then, the portal is actually just remapping the neighbors. Laplace equation is local, for those grid which is next to the portal, we trace their neighbor though the portal, very naive &amp; simple.</p>
<div id="portal" class="cell" data-execution_count="0">
<details class="code-fold">
<summary>Code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb1-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">using</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">LinearAlgebra</span></span>
<span id="cb1-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">using</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">SparseArrays</span></span>
<span id="cb1-3"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">using</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">Plots</span></span>
<span id="cb1-4"></span>
<span id="cb1-5"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">const</span> X_GRIDS     <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1000</span></span>
<span id="cb1-6"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">const</span> Y_GRIDS     <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1000</span></span>
<span id="cb1-7"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">const</span> GRID_WIDTH  <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span></span>
<span id="cb1-8"></span>
<span id="cb1-9"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">const</span> PORTAL_1    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">CartesianIndices</span>((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">350</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">650</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">150</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">150</span>))</span>
<span id="cb1-10"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">const</span> PORTAL_2    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">CartesianIndices</span>((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">350</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">650</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">151</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">151</span>))</span>
<span id="cb1-11"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">const</span> PORTAL_3    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">CartesianIndices</span>((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">350</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">650</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">850</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">850</span>))</span>
<span id="cb1-12"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">const</span> PORTAL_4    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">CartesianIndices</span>((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">350</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">650</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">851</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">851</span>))</span>
<span id="cb1-13"></span>
<span id="cb1-14"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">const</span> PAIR_11      <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (PORTAL_1, PORTAL_4)</span>
<span id="cb1-15"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">const</span> PAIR_12      <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (PORTAL_4, PORTAL_1)</span>
<span id="cb1-16"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">const</span> PAIR_21      <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (PORTAL_2, PORTAL_3)</span>
<span id="cb1-17"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">const</span> PAIR_22      <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (PORTAL_3, PORTAL_2)</span>
<span id="cb1-18"></span>
<span id="cb1-19"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">const</span> PORTAL_PAIRS <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [PAIR_11, PAIR_12, PAIR_21, PAIR_22]</span>
<span id="cb1-20"></span>
<span id="cb1-21"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">build_portal_map</span>()</span>
<span id="cb1-22">    mapping <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">Dict</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">{CartesianIndex{2}, CartesianIndex{2}}</span>()</span>
<span id="cb1-23"></span>
<span id="cb1-24">    pairs <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [</span>
<span id="cb1-25">        (PORTAL_1, PORTAL_4),</span>
<span id="cb1-26">        (PORTAL_4, PORTAL_1),</span>
<span id="cb1-27">        (PORTAL_2, PORTAL_3),</span>
<span id="cb1-28">        (PORTAL_3, PORTAL_2)</span>
<span id="cb1-29">    ]</span>
<span id="cb1-30">    </span>
<span id="cb1-31">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> (src_range, dst_range) <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> pairs</span>
<span id="cb1-32">        <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> (src, dst) <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">zip</span>(src_range, dst_range)</span>
<span id="cb1-33">            mapping[src] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> dst</span>
<span id="cb1-34">        <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb1-35">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb1-36">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> mapping</span>
<span id="cb1-37"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb1-38"></span>
<span id="cb1-39"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">const</span> PORTAL_MAP <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">build_portal_map</span>()</span>
<span id="cb1-40"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">boundary1</span>((i, j))</span>
<span id="cb1-41">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> j <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&lt;</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> </span>
<span id="cb1-42">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span></span>
<span id="cb1-43">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">elseif</span> j <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> Y_GRIDS</span>
<span id="cb1-44">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">100</span></span>
<span id="cb1-45">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span></span>
<span id="cb1-46">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">nothing</span></span>
<span id="cb1-47">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb1-48"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb1-49"></span>
<span id="cb1-50"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">periodic_x</span>(x)</span>
<span id="cb1-51">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&lt;</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span></span>
<span id="cb1-52">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> X_GRIDS</span>
<span id="cb1-53">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">elseif</span> x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> X_GRIDS</span>
<span id="cb1-54">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span></span>
<span id="cb1-55">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span></span>
<span id="cb1-56">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> x</span>
<span id="cb1-57">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb1-58"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb1-59"></span>
<span id="cb1-60">cis <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">CartesianIndices</span>((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>X_GRIDS, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>Y_GRIDS))</span>
<span id="cb1-61">ids <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">LinearIndices</span>(cis)</span>
<span id="cb1-62">n_grids <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">length</span>(ids)</span>
<span id="cb1-63"></span>
<span id="cb1-64"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">fill_eq</span>()</span>
<span id="cb1-65">  I <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">Int</span>[]</span>
<span id="cb1-66">  J <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">Int</span>[]</span>
<span id="cb1-67">  V <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">Float64</span>[]</span>
<span id="cb1-68">  ρs <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">fill</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.0</span>, n_grids)</span>
<span id="cb1-69">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> ci <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> cis</span>
<span id="cb1-70">    x, y <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">Tuple</span>(ci)</span>
<span id="cb1-71">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">push!</span>(I, ids[x, y])</span>
<span id="cb1-72">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">push!</span>(J, ids[x, y])</span>
<span id="cb1-73">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">push!</span>(V, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.0</span>)</span>
<span id="cb1-74"></span>
<span id="cb1-75">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> (i, j) <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> ((x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, y), (x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, y), (x, y<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>), (x, y<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>))</span>
<span id="cb1-76">      </span>
<span id="cb1-77">      b1 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">boundary1</span>((i, j))</span>
<span id="cb1-78">      <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> !<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">isnothing</span>(b1)</span>
<span id="cb1-79">        ρs[ids[x, y]] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+=</span> b1</span>
<span id="cb1-80">        <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">continue</span></span>
<span id="cb1-81">      <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb1-82"></span>
<span id="cb1-83">      i <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">periodic_x</span>(i)</span>
<span id="cb1-84"></span>
<span id="cb1-85">      cid <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">CartesianIndex</span>(i, j)</span>
<span id="cb1-86">      <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">haskey</span>(PORTAL_MAP, cid)</span>
<span id="cb1-87">        i, j <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">Tuple</span>(PORTAL_MAP[cid])</span>
<span id="cb1-88">      <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb1-89">      <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">push!</span>(I, ids[x,y])</span>
<span id="cb1-90">      <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">push!</span>(J, ids[i, j])</span>
<span id="cb1-91">      <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">push!</span>(V, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>)</span>
<span id="cb1-92">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb1-93">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb1-94">  m <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sparse</span>(I, J, V, n_grids, n_grids)</span>
<span id="cb1-95">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> m, ρs</span>
<span id="cb1-96"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb1-97"></span>
<span id="cb1-98"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">get_result</span>()</span>
<span id="cb1-99">  A, b <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">fill_eq</span>()</span>
<span id="cb1-100">  u <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> A <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\</span> b</span>
<span id="cb1-101">  u_grid <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">reshape</span>(u, X_GRIDS, Y_GRIDS)</span>
<span id="cb1-102">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> u_grid</span>
<span id="cb1-103"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span></code></pre></div></div>
</details>
</div>
<p>For this portal configuration, we will get the following result: <img src="https://blog.zhaose.cyou/posts/PortalGravity/images/fig1.svg" class="img-fluid" alt="G Field"> The gravitational field between the portals is quite weak, the field is identical to what one would see if one places 2 connected metal plates between two large charged metal plates! Two metal plates will share the same potential, and for a symmetrical system like this, they will share the potential of zero, and will shield out the field.</p>
<p>But portal can face different directions, if we flip one portal’s orientation, will the field stay the same? Actually it will. If one go though it carefully, it is not hard to imagine the portal just curves our experimental plane, it pulls up to segments on the plane and stick them together, make it a ring growing out of the flat paper. No matter how you twist the way you stick them together, the sticky boundary will topologically be at the center between the upper and lower boundary, which make the field identical.</p>



 ]]></description>
  <category>physics</category>
  <category>computational</category>
  <category>classical</category>
  <category>fun</category>
  <guid>https://blog.zhaose.cyou/posts/PortalGravity/</guid>
  <pubDate>Tue, 16 Dec 2025 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Axion-photon Compton Scattering</title>
  <dc:creator>Zhaose </dc:creator>
  <link>https://blog.zhaose.cyou/posts/AxionPhotonComptonScattering/</link>
  <description><![CDATA[ 





<section id="the-theory" class="level1">
<h1>The theory</h1>
<section id="basic-components-of-axion-photon-interaction" class="level2">
<h2 class="anchored" data-anchor-id="basic-components-of-axion-photon-interaction">Basic components of axion-photon interaction</h2>
<p>The effective axion-photon lagrangian can be written as: <img src="https://latex.codecogs.com/png.latex?%0A%5Cmathcal%7BL%7D_%7B%5Calpha%5Cgamma%7D%20=%20(%5Cfrac%7B1%7D%7B2%7D%20%5Cpartial_%5Cmu%20a%20%5C,%20%5Cpartial%5E%5Cmu%20a%20-%20%5Cfrac%7B1%7D%7B2%7Dm%5E2%20a%5E2)%0A+%20(-%5Cfrac%7B1%7D%7B4%7D%20F_%7B%5Cmu%5Cnu%7D%20F%5E%7B%5Cmu%5Cnu%7D)%20-%20%5Cfrac%7B1%7D%7B4%7D%20g%20%5C,%20a%20%5C,%20F_%7B%5Cmu%5Cnu%7D%20%5Ctilde%7BF%7D%5E%7B%5Cmu%5Cnu%7D%0A"> Here <img src="https://latex.codecogs.com/png.latex?%5Ctilde%7BF%7D%5E%7B%5Cmu%5Cnu%7D%20=%20%5Cfrac%7B1%7D%7B2%7D%5Cepsilon%5E%7B%5Cmu%5Cnu%5Crho%5Csigma%7DF_%7B%5Crho%5Csigma%7D"> is the dual of <img src="https://latex.codecogs.com/png.latex?F%5E%7B%5Cmu%5Cnu%7D">. Focus on the interaction term, break <img src="https://latex.codecogs.com/png.latex?F%5E%7B%5Cmu%5Cnu%7D"> out, we have: <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign*%7D%0A-%5Cfrac%7B1%7D%7B4%7D%20g%20%5C,%20a%20%5C,%20F_%7B%5Cmu%5Cnu%7D%20%5Ctilde%7BF%7D%5E%7B%5Cmu%5Cnu%7D%20&amp;=%0A-%5Cfrac%7B1%7D%7B8%7D%20g%20%5C,%20a%20(%5Cpartial_%5Cmu%20A_%5Cnu%20-%20%5Cpartial_%5Cnu%20A_%5Cmu)%0A%5Cepsilon%5E%7B%5Cmu%5Cnu%5Crho%5Csigma%7D%20(%5Cpartial_%5Crho%20A_%5Csigma%20-%20%5Cpartial_%5Csigma%20A_%5Crho)%20%5C%5C%0A&amp;=%20-%20%5Cfrac%7B1%7D%7B2%7D%20g%20%5C,%20a%20%5Cepsilon%5E%7B%5Cmu%5Cnu%5Crho%5Csigma%7D%20%5Cpartial_%5Cmu%20A%5E%5Cnu%20%5Cpartial_%5Crho%20A%5E%5Csigma%0A%5Cend%7Balign*%7D%0A"> Then we get the interaction vertex in the form of (in momentum space): <img src="https://latex.codecogs.com/png.latex?%0Ai%20g%20%5Cepsilon%5E%7B%5Cmu%5Cnu%5Crho%5Csigma%7D%20k%5E%7B(1)%7D_%5Cmu%20k%5E%7B(2)%7D_%5Crho%0A"> Here <img src="https://latex.codecogs.com/png.latex?k%5E%7B(1,2)%7D"> are the momentum of incoming and outcoming photons, amoung <img src="https://latex.codecogs.com/png.latex?k%5E%7B(1)%7D"> and <img src="https://latex.codecogs.com/png.latex?k%5E%7B(2)%7D">, one flows into the vertex and and the other one flows out. Now recall the propagator of scalar particles and photons, we have:</p>
<ul>
<li>Axion propagator: <img src="https://latex.codecogs.com/png.latex?%5Cfrac%7Bi%7D%7Bk%5E2%20-%20m%5E2%20+%20i%20%5Cepsilon%7D"></li>
<li>Photon propagator: <img src="https://latex.codecogs.com/png.latex?%5Cfrac%7Bi%20%5Ceta_%7B%5Cmu%5Cnu%7D%7D%7Bk%5E2%20+%20i%20%5Cepsilon%7D"></li>
</ul>
</section>
<section id="tree-level-scattering-amplitude" class="level2">
<h2 class="anchored" data-anchor-id="tree-level-scattering-amplitude">Tree-level scattering amplitude</h2>
<p>For the lowest order of photon-axion Compton-like scattering, only two Feynman diagrams contribute, one s-channel and one u-channel:</p>
<p><img src="https://blog.zhaose.cyou/posts/AxionPhotonComptonScattering/images/dia1.svg" class="img-fluid" alt="s-channel"> <img src="https://blog.zhaose.cyou/posts/AxionPhotonComptonScattering/images/dia2.svg" class="img-fluid" alt="u-channel"></p>
<p>and we can write: <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign*%7D%0A%20%20i%5Cmathcal%7BM%7D_s%20&amp;=%20%5Cepsilon%5E%7B%5Cgamma%7D_%7B%5Cnu%7D(k)%20%5Cleft(%20i%20g%20%5Cepsilon%5E%7B%5Cmu%5Cnu%5Calpha%5Cbeta%7D%20k_%5Cmu%20(k+p)_%5Calpha%0A%20%20%5Cright)%20%5Cfrac%7Bi%20%5Ceta_%7B%5Cbeta%5Clambda%7D%7D%7B(k+p)%5E2%7D%20%5Cleft(%20i%20g%20%5Cepsilon%5E%7B%5Cdelta%5Clambda%5Crho%5Csigma%7D%0A%20%20(k'+p')_%5Cdelta%20k'_%5Crho%20%5Cright)%20%5Cepsilon%5E%7B%5Cgamma'%7D_%7B%5Csigma%7D(k')%20%5C%5C%0A%20%20%5Cmathcal%7BM%7D_s%20&amp;=%20-%20%5Cfrac%7Bg%5E2%7D%7B(k+p)%5E2%7D%20%5Cepsilon%5E%7B%5Cgamma%7D_%7B%5Cnu%7D(k)%20%5Cepsilon%5E%7B%5Cmu%5Cnu%5Calpha%5Cbeta%7D%20k_%5Cmu%20p_%5Calpha%0A%20%20%20%5Ceta_%7B%5Cbeta%5Clambda%7D%20%5Cepsilon%5E%7B%5Cdelta%5Clambda%5Crho%5Csigma%7D%0A%20%20p'_%5Cdelta%20k'_%5Crho%20%5Cepsilon%5E%7B%5Cgamma'%7D_%7B%5Csigma%7D(k')%0A%5Cend%7Balign*%7D%0A"> along with: <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign*%7D%0A%20%20i%5Cmathcal%7BM%7D_u%20&amp;=%20%5Cepsilon%5E%7B%5Cgamma%7D_%7B%5Cnu%7D(k)%20%5Cleft(%20i%20g%20%5Cepsilon%5E%7B%5Cmu%5Cnu%5Calpha%5Cbeta%7D%20k_%5Cmu%20(k-p')_%5Calpha%0A%20%20%5Cright)%20%5Cfrac%7Bi%20%5Ceta_%7B%5Cbeta%5Clambda%7D%7D%7B(k-p')%5E2%7D%20%5Cleft(%20i%20g%20%5Cepsilon%5E%7B%5Cdelta%5Clambda%5Crho%5Csigma%7D%0A%20%20(k'-p)_%5Cdelta%20k'_%5Crho%20%5Cright)%20%5Cepsilon%5E%7B%5Cgamma'%7D_%7B%5Csigma%7D(k')%20%5C%5C%0A%20%20%5Cmathcal%7BM%7D_u%20&amp;=%20-%20%5Cfrac%7Bg%5E2%7D%7B(k-p')%5E2%7D%20%5Cepsilon%5E%7B%5Cgamma%7D_%7B%5Cnu%7D(k)%20%5Cepsilon%5E%7B%5Cmu%5Cnu%5Calpha%5Cbeta%7D%20k_%5Cmu%20p'_%5Calpha%0A%20%20%20%5Ceta_%7B%5Cbeta%5Clambda%7D%20%5Cepsilon%5E%7B%5Cdelta%5Clambda%5Crho%5Csigma%7D%0A%20%20p_%5Cdelta%20k'_%5Crho%20%5Cepsilon%5E%7B%5Cgamma'%7D_%7B%5Csigma%7D(k')%0A%5Cend%7Balign*%7D%0A"> Then the total scattering amplitude is: <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign*%7D%0A%5Cmathcal%7BM%7D%20&amp;=%20%5Cmathcal%7BM%7D_s%20+%20%5Cmathcal%7BM%7D_u%20%5C%5C%0A&amp;=%0A-%20g%5E2%20%5Cepsilon%5E%7B%5Cgamma%7D_%7B%5Cnu%7D(k)%20k_%7B%5Cmu%7D%20%5Cleft(%20%5Cfrac%7Bp_%5Calpha%20p'_%5Cdelta%7D%7B(k+p)%5E2%7D%20+%20%5Cfrac%7Bp'_%5Calpha%20p_%5Cdelta%7D%7B(k-p')%5E2%7D%0A%5Cright)%20k'_%7B%5Crho%7D%20%5Cepsilon%5E%7B%5Cgamma'%7D_%7B%5Csigma%7D%0A(%5Cepsilon%5E%7B%5Cbeta%5Cmu%5Cnu%5Calpha%7D%20%5Ceta_%7B%5Cbeta%5Clambda%7D%20%5Cepsilon%5E%7B%5Clambda%5Cdelta%5Crho%5Csigma%7D)%0A%5Cend%7Balign*%7D%0A"> Contract and simplify this impossible expression by FORM script and complete spin sum, we can finally get: <img src="https://latex.codecogs.com/png.latex?%0A%5Cleft%7C%20%5Cmathcal%7BM%7D%20%5Cright%7C%5E2_%7Ball%7D%20=%20g%5E4%20%5Cleft%5C%7B%20%5Cfrac%7Bm%5E8%7D%7B16%7D(%5Cfrac%7B1%7D%7Bs%7D%20+%20%5Cfrac%7B1%7D%7Bu%7D)%5E2%0A-%20%5Cfrac%7Bm%5E4%7D%7B8%7D(%5Cfrac%7Bu%7D%7Bs%7D%20+%20%5Cfrac%7Bs%7D%7Bu%7D%20-%206)%20-%20m%5E2%20(s%20+%20u)%20+%20%5Cfrac%7B5%7D%7B16%7D(s%20+%20u)%5E2%20%5Cright%5C%7D%0A"> This result is completely symmetric between <img src="https://latex.codecogs.com/png.latex?s"> and <img src="https://latex.codecogs.com/png.latex?u">. And, at the limit of <img src="https://latex.codecogs.com/png.latex?k%20%5Cto%200">, <img src="https://latex.codecogs.com/png.latex?%5Cleft%7C%20%5Cmathcal%7BM%7D%20%5Cright%7C%5E2_%7Ball%7D%20=%200">, which is correct since the interaction vertex is proportional to photon momentum.</p>
</section>
</section>
<section id="numerical-results" class="level1">
<h1>Numerical results</h1>
<p>To understand this result more intuitively, we can draw some diagrams using julia:</p>
<div id="install-pkg" class="cell" data-execution_count="1">
<details class="code-fold">
<summary>Code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb1-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">using</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">Pkg</span></span>
<span id="cb1-2"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">Pkg</span>.<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">add</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Plots"</span>)</span></code></pre></div></div>
</details>
</div>
<details class="code-fold">
<summary>Code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb2-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">using</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">Plots</span></span>
<span id="cb2-2"></span>
<span id="cb2-3"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">const</span> m <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1e-4</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">Float64</span></span>
<span id="cb2-4"></span>
<span id="cb2-5"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">dot_p</span>(x, y)</span>
<span id="cb2-6">  prod <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> x[<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> y[<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sum</span>([x[n] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> y[n] for n <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>])</span>
<span id="cb2-7">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> prod</span>
<span id="cb2-8"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb2-9"></span>
<span id="cb2-10"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">get_M2</span>(s, u)</span>
<span id="cb2-11">  m2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> m<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">^</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">16</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span>s <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span>u)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">^</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span></span>
<span id="cb2-12">         m<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">^</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>  <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (u<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span>s <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> s<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span>u <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span></span>
<span id="cb2-13">         m<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">^</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>   <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>    (s <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> u) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb2-14">         <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">16</span>  <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>  (s <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> u)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">^</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span></span>
<span id="cb2-15">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> m2 </span>
<span id="cb2-16"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb2-17"></span>
<span id="cb2-18"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">get_εp</span>(ε, θ)</span>
<span id="cb2-19">  εp <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> ε <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> m <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> (m <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> ε <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cos</span>(θ)))</span>
<span id="cb2-20">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> εp</span>
<span id="cb2-21"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb2-22"></span>
<span id="cb2-23"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">get_M2s</span>(ε, θs)</span>
<span id="cb2-24">  M2s <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">Vector</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">{Float64}</span>(<span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">undef</span>, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">length</span>(θs))</span>
<span id="cb2-25">  <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">Threads</span>.<span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">@threads</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">length</span>(θs)</span>
<span id="cb2-26">    θ <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> θs[i]</span>
<span id="cb2-27">    εp <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">get_εp</span>(ε, θ)</span>
<span id="cb2-28">    s <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> ε <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> m <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> m<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">^</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span></span>
<span id="cb2-29">    u <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> εp <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> m <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> m<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">^</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span></span>
<span id="cb2-30"></span>
<span id="cb2-31">    M2s[i] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">get_M2</span>(s, u)</span>
<span id="cb2-32">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb2-33">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> M2s</span>
<span id="cb2-34"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">end</span></span>
<span id="cb2-35"></span>
<span id="cb2-36">θs <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1e-4</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">π</span></span>
<span id="cb2-37">ε<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1e-5</span></span>
<span id="cb2-38">M2s1 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">get_M2s</span>(ε<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, θs)</span>
<span id="cb2-39">ε<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1e-4</span></span>
<span id="cb2-40">M2s2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">get_M2s</span>(ε<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, θs)</span>
<span id="cb2-41"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">#ε3 = 1e-1</span></span>
<span id="cb2-42"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">#M2s3 = get_M2s(ε3, θs)</span></span>
<span id="cb2-43"></span>
<span id="cb2-44"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">display</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">plot</span>(θs, M2s1, legend<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">false</span>))</span>
<span id="cb2-45"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">display</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">plot</span>(θs, M2s2, legend<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">false</span>))</span>
<span id="cb2-46"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">#display(plot(θs, M2s3, lengend=false))</span></span></code></pre></div></div>
</details>
<div id="fig-plots" class="quarto-layout-panel">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-plots-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<div class="quarto-layout-row">
<div class="quarto-layout-cell-subref quarto-layout-cell" data-ref-parent="fig-plots" style="flex-basis: 50.0%;justify-content: flex-start;">
<div id="fig-plots-1" class="cell-output cell-output-display quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-subfloat-fig figure">
<div aria-describedby="fig-plots-1-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://blog.zhaose.cyou/posts/AxionPhotonComptonScattering/data:image/png;base64,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" class="figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-subfloat-caption quarto-subfloat-fig" id="fig-plots-1-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
(a) <img src="https://latex.codecogs.com/png.latex?%5Cvarepsilon%20=%2010%5E%7B-5%7D">
</figcaption>
</figure>
</div>
</div>
<div class="quarto-layout-cell-subref quarto-layout-cell" data-ref-parent="fig-plots" style="flex-basis: 50.0%;justify-content: flex-start;">
<div id="fig-plots-2" class="cell-output cell-output-display quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-subfloat-fig figure">
<div aria-describedby="fig-plots-2-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://blog.zhaose.cyou/posts/AxionPhotonComptonScattering/data:image/png;base64,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4cODAQYMGNV8+f/78gQMHjho16ktf+tJbb7113HHHnfpR2dnZw4cPr6ur27JlS11d3ZtvvjlkyJDW/F4A0Ba0Ksbf/va3n3jiiZqamsbGxk/e+u677958881LlixZs2bNkCFDbr/99iRJGhsbL7300nvuuWflypU33XTTlVdemVm5oaHhz3/+c/Mff+ONNzIXsrOzzzvvvF/96le7du1qurW+vv6SSy65/77V65ced11111zzTX7nDA7O/u+++67+OKLx48ff/XVVx999NGt+b0AoC3Iav2ncjt37lxRUVFeXv6x5XfdddeiRYueeOKJJEn+9Kc/TZgw4b333vvjH/84ceLEDRs2ZGVl7d27t7CwcNmyZWVlZWvXrh0zZszMmTNPP/30JEn+7u/+rrKy8g9/+ENWVlZmaxUVFSeddFJTj1988cWLLroo84q8pqamsLBw9erVX+QQ9Pnnnz9nzpwePXpkrhYVFc2fP7+F9aurq7t27fq5747Djkf801z2as64vg0T++/jGfnhq66uLpVK5eTkRA/CIRKyg6dSqS5durS8zgF4z/idd94pKyvLXC4rK9u8eXNtbe26detKS0szie3YsWPfvn0zqw0aNGj27Nnjxo37t3/7t0WLFr3++uvPPvtsU4k/ad26dU0b79KlS58+fd55550vEuMhQ4aUlJRcddVVmau5ubl5eXkt/8hnrkA74xHfp+zshs6dc/Ly2slHMDJycnLE+EjTNnfwAxDj2tragoKCzOWOHTum0+nMyVzN/u1KnTBx98kLk8fPjwZ5555utf/qXv/zlhQsXtvx8oYXtfD7Z2dmFhYVNgQeAcAfgSW5RUdG2bdsyl7du3Zqbm5ufn998YWZ5cXFx09UHH3xwxIgRmzdvfuWVV1q/8XQ6/bHtAEA78PljvGvXrtra2iRJRo8evWDBgoaGhiRJnnvuudGjRydJMmLEiLVr127YsCFJkuXLl9fX1w8bNizzgzfddNPy5cvnzp07Z86cyy677JlnnmnhXr72ta9VVlZu2bIlSZLXX3+9S5cuTs4CoJ1p1WHqO+64Y926dfX19T/+8Y979ux5zz33JElyxhlnTJ069fLLLz/11FNLSkomTZo0YsSIGTNmPPbYY0mSFBQUXHPNNWeeeeY555zz4IMP3njjjZ06dUqSZPXq1StWrHjqqadyc3OPOeaY2bN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" class="figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-subfloat-caption quarto-subfloat-fig" id="fig-plots-2-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
(b) <img src="https://latex.codecogs.com/png.latex?%5Cvarepsilon%20=%2010%5E%7B-4%7D">
</figcaption>
</figure>
</div>
</div>
</div>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-plots-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1: Plots of <img src="https://latex.codecogs.com/png.latex?%7CM%7C%5E2"> - <img src="https://latex.codecogs.com/png.latex?%5Ctheta"> under different <img src="https://latex.codecogs.com/png.latex?%CE%B5">
</figcaption>
</figure>
</div>
<p>Something interesting is happening. When <img src="https://latex.codecogs.com/png.latex?%5Cvarepsilon%20%3E=%20m_a/2">, there will always be a “peak” (infinite pole) in our scattering amplitude. This is actually because the axion can decay into 2 photons, and for an on-shell photon, it can travel for infinitely long time before interaction with another photon, which makes our scattering amplitude infinite. If we want to integral over <img src="https://latex.codecogs.com/png.latex?%5Ctheta"> to get total cross-section, we need to omit a small region around where the singularity appears.</p>


</section>

 ]]></description>
  <category>physics</category>
  <category>QFT</category>
  <guid>https://blog.zhaose.cyou/posts/AxionPhotonComptonScattering/</guid>
  <pubDate>Sat, 29 Nov 2025 00:00:00 GMT</pubDate>
  <media:content url="https://blog.zhaose.cyou/posts/AxionPhotonComptonScattering/images/dia2.svg" medium="image" type="image/svg+xml"/>
</item>
<item>
  <title>Renormalization of scalar propagator in a toy model</title>
  <dc:creator>Zhaose </dc:creator>
  <link>https://blog.zhaose.cyou/posts/RenormalizationOfScalarPropagatorInAToyModel/</link>
  <description><![CDATA[ 





<section id="background" class="level1">
<h1>Background</h1>
<p>Consider a mass-full scalar field <img src="https://latex.codecogs.com/png.latex?%5Cphi"> coupling with a mass-less scalar field <img src="https://latex.codecogs.com/png.latex?%5Cchi">, the toy model’s total Lagrangian can be written as: <img src="https://latex.codecogs.com/png.latex?%0A%5Cmathcal%7BL%7D_B%20=%20%5Cpartial_%5Cmu%20%5Cphi%5E*%20%5C,%20%5Cpartial%5E%5Cmu%20%5Cphi%20-%20m%5E2%5Cphi%5E*%20%5Cphi%20+%20%7B1%20%5Cover%202%7D%20%5Cpartial_%5Cmu%20%5Cchi%20%5C,%20%5Cpartial%5E%5Cmu%20%5Cchi%20-%20%5Clambda%20%5Cphi%5E*%20%5Cphi%20%5Cchi%0A"> So we have Feynmann rules for those particles (in momentum space):</p>
<ul>
<li>Vertex: <img src="https://latex.codecogs.com/png.latex?-%20i%20%5Clambda"></li>
<li><img src="https://latex.codecogs.com/png.latex?%5Cphi"> propagator: <img src="https://latex.codecogs.com/png.latex?i%5Cover%7Bp%5E2%20-%20m%5E2%20+%20i%20%5Cepsilon%20%7D"></li>
<li><img src="https://latex.codecogs.com/png.latex?%5Cchi"> propagator: <img src="https://latex.codecogs.com/png.latex?i%5Cover%7Bp%5E2%20+%20i%20%5Cepsilon%20%7D"></li>
</ul>
<p>Now we can consider a simple <img src="https://latex.codecogs.com/png.latex?%5Cphi%20-%20%5Cphi"> scattering process:</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://blog.zhaose.cyou/posts/RenormalizationOfScalarPropagatorInAToyModel/images/pic1.svg" class="img-fluid figure-img"></p>
<figcaption>Tree Level Feynmann Diagram</figcaption>
</figure>
</div>
<p>The scattering amplitude of this diagram is simple: <img src="https://latex.codecogs.com/png.latex?%0A%5Cmathcal%7BM%7D%5E%7B(0)%7D%20=%20-%20i%20%7B%5Clambda%5E2%20%5Cover%20q%5E2%7D%0A"> This is an u-channel diagram, for this process, there is also a s-channel diagram, these two together make up the first order of this scattering process, however, for our topic today, it’s unrelated.</p>
<p>Then consider the following high-order diagram, in which the <img src="https://latex.codecogs.com/png.latex?%5Cchi"> particle breaks in to a pair of virtual <img src="https://latex.codecogs.com/png.latex?%5Cphi"> and anti-<img src="https://latex.codecogs.com/png.latex?%5Cphi"> particle.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://blog.zhaose.cyou/posts/RenormalizationOfScalarPropagatorInAToyModel/images/pic2.svg" class="img-fluid figure-img"></p>
<figcaption><img src="https://latex.codecogs.com/png.latex?%5Cchi"> Loop Diagram</figcaption>
</figure>
</div>
<p>The amplitude of this new diagram is: <img src="https://latex.codecogs.com/png.latex?%0A%5Cmathcal%7BM%7D%5E%7B(1)%7D%20=%20%7B%5Clambda%5E4%20%5Cover%20q%5E4%7D%20%5Cint%20%7Bd%5E4%20k%20%5Cover%20(2%5Cpi)%5E4%7D%20%7B1%20%5Cover%20%7Bk%5E2%20-%20m%5E2%20+%20i%20%5Cepsilon%7D%7D%20%7B1%20%5Cover%20%7B(k-q)%5E2%20-%20m%5E2%20+%20i%20%5Cepsilon%7D%7D%0A"> One immediately sees this integral is divergent. The integral measure contains <img src="https://latex.codecogs.com/png.latex?%7Ck%7C%5E3">, causes the result to diverge in the form of <img src="https://latex.codecogs.com/png.latex?%5Cln%7B%7Ck%7C%7D">, and this does not make any sense, since this diagram is meant to be a small correction of the first diagram we’ve already covered. Something needs to be done to get a reasonable answer.</p>
<p>Further investigation of there two amplitudes, one will notice the effect of the second diagram is just multiplying some factor on to the propagator of <img src="https://latex.codecogs.com/png.latex?%5Cchi">, which is: <img src="https://latex.codecogs.com/png.latex?%0AG_%5Cchi%5E%7B(1)%7D=G_%5Cchi%5E%7B(0)%7D%20%5C,%20%5Clambda%5E2%20%7Bi%20%5Cover%20q%5E2%7D%20%5C,%20I(q)%0A"> where <img src="https://latex.codecogs.com/png.latex?%0AI(q)%20=%20%5Cint%20%7Bd%5E4%20k%20%5Cover%20(2%5Cpi)%5E4%7D%20%7B1%20%5Cover%20%7Bk%5E2%20-%20m%5E2%20+i%20%5Cepsilon%7D%7D%20%7B1%20%5Cover%20%7B(k-q)%5E2%20-%20m%5E2%20+i%20%5Cepsilon%7D%7D%0A"></p>
</section>
<section id="calculating-the-integral" class="level1">
<h1>Calculating the integral</h1>
<section id="feynmann-factorize" class="level2">
<h2 class="anchored" data-anchor-id="feynmann-factorize">Feynmann factorize</h2>
<p>Start with rewriting the integral in a more manageable form, using the fact that: <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign*%7D%0A%7B1%20%5Cover%20%7BA%20B%7D%7D%20&amp;=%20%5Cint_0%5E1%20dx%20%7B1%20%5Cover%20%7B%5Bx%20A%20+%20(1-x)%20B%5D%5E2%7D%7D%20%5C%5C%0A&amp;=%20%5Cint_0%5E1%20dx%20%5Cint_0%5E1%20dy%20%5C:%20%5Cdelta(x+y-1)%20%5C,%20%7B1%20%5Cover%20%7B%5Bx%20A%20+%20y%20B%5D%5E2%7D%7D%0A%5Cend%7Balign*%7D%0A"> The factorized denominator is: <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign*%7D%0AD%20&amp;=%20x(k%5E2%20-%20m%5E2%20+i%20%5Cepsilon)%20+%20y%5B(k-q)%5E2%20-%20m%5E2%20+i%20%5Cepsilon%5D%20%5C%5C%0A%20%20&amp;=%20k%5E2%20-%202%20y%20q%20k%20+%20y%20q%5E2%20-%20m%5E2%20+%20i%20%5Cepsilon%20%5C%5C%0A%20%20&amp;=%20(k%20-%20yq)%5E2%20+%20xyq%5E2%20-%20m%5E2%20+%20i%20%5Cepsilon%20%5C%5C%0A%20%20&amp;=%20l%5E2%20-%20%5CDelta%20+%20i%20%5Cepsilon%0A%5Cend%7Balign*%7D%0A"> In the third equal we’ve used <img src="https://latex.codecogs.com/png.latex?x%20+%20y%20=%201">. Finally by shifting <img src="https://latex.codecogs.com/png.latex?k">, which is just applying <img src="https://latex.codecogs.com/png.latex?l%20=%20k%20-%20yq"> and <img src="https://latex.codecogs.com/png.latex?%5CDelta%20=%20-%20xyq%5E2%20+%20m%5E2">, the integral becomes: <img src="https://latex.codecogs.com/png.latex?%0A%5Cint%20%7Bd%5E4%20k%20%5Cover%20(2%5Cpi)%5E4%7D%20%7B1%20%5Cover%20%7Bk%5E2%20-%20m%5E2%20+i%20%5Cepsilon%7D%7D%20%7B1%20%5Cover%20%7B(k-q)%5E2%20-%20m%5E2%20+i%20%5Cepsilon%7D%7D%20%5C%5C%0A=%20%5Cint_0%5E1%20dx%20%5Cint_0%5E1%20dy%20%5C:%20%5Cdelta(x+y-1)%20%5C,%20%7B1%20%5Cover%20(2%5Cpi)%5E4%7D%20%5Cint%20%7Bd%5E4%20l%7D%20%7B1%20%5Cover%20%7B(l%5E2%20-%20%5CDelta%20+%20i%5Cepsilon)%5E2%7D%7D%0A"></p>
</section>
<section id="wick-rotation" class="level2">
<h2 class="anchored" data-anchor-id="wick-rotation">Wick rotation</h2>
<p>The integral is integrated over the 4-dimensional Minkowski space, which is tedious. However, one can apply Wick rotation to turn it in to a 4-dimensional Euclid space integral.</p>
<p>Focus on the integral over <img src="https://latex.codecogs.com/png.latex?l%5E0">: <img src="https://latex.codecogs.com/png.latex?%0A%5Cint_%7B-%5Cinfty%7D%5E%7B+%5Cinfty%7Ddl%5E0%20%7B1%20%5Cover%20%7B%5B(l%5E0)%5E2-%7C%5Cvec%7Bl%7D%7C%5E2%20-%20%5CDelta%20+%20i%20%5Cepsilon%5D%5E2%7D%7D%0A"> The integral is real. However, this integral can be considered as a integral in the complex plane, the contour is around the upper-half of the complex plane, since obviously at <img src="https://latex.codecogs.com/png.latex?%5Cinfty"> things in the integral turn into zero. So the value of this integral only depends on the residue of singularities involved, which in the upper-half only have <img src="https://latex.codecogs.com/png.latex?l%5E0%20=%20-%5Csqrt%7B%7C%5Cvec%7Bl%7D%7C%5E2+%5CDelta%7D%20+%20i%20%5Cepsilon">, so the contour can be rotated to the left-half of the plane, resulting in: <img src="https://latex.codecogs.com/png.latex?%0A%5Cint_%7B-i%5Cinfty%7D%5E%7B+i%5Cinfty%7Ddl%5E0%20%7B1%20%5Cover%20%7B%5B(l%5E0)%5E2-%7C%5Cvec%7Bl%7D%7C%5E2%20-%20%5CDelta%20+%20i%20%5Cepsilon%5D%5E2%7D%7D%0A"> Then apply <img src="https://latex.codecogs.com/png.latex?l%5E0%20=%20i%20l%5E4">: <img src="https://latex.codecogs.com/png.latex?%0A%5Cint_%7B-%5Cinfty%7D%5E%7B+%5Cinfty%7Ddl%5E0%20%7B1%20%5Cover%20%7B%5B(l%5E0)%5E2-%7C%5Cvec%7Bl%7D%7C%5E2%20-%20%5CDelta%20+%20i%20%5Cepsilon%5D%5E2%7D%7D%20=%20i%20%5Cint_%7B-%5Cinfty%7D%5E%7B+%5Cinfty%7Ddl%5E4%20%7B1%20%5Cover%20%7B%5B-%20(l%5E4)%5E2%20-%20%7C%5Cvec%7Bl%7D%7C%5E2%20-%20%5CDelta%20+%20i%20%5Cepsilon%5D%5E2%7D%7D%0A"> Integral over the 4-Minkowski now transforms into a 4-dimensional Euclid integral. The <img src="https://latex.codecogs.com/png.latex?i%5Cepsilon"> is no longer necessary, since there are no singularities on the complex-axis: <img src="https://latex.codecogs.com/png.latex?%0A%5Cint%20%7Bd%5E4%20l%7D%20%7B1%20%5Cover%20%7B(l%5E2%20-%20%5CDelta%20+%20i%5Cepsilon)%5E2%7D%7D%20=%20i%20%5Cint%20%7Bd%5E4%20%5Cbm%7Bl_E%7D%7D%20%7B1%20%5Cover%20%7B(%5Cbm%7Bl_E%7D%5E2%20+%20%5CDelta%20)%5E2%7D%7D%0A"></p>
</section>
<section id="hard-cut-off" class="level2">
<h2 class="anchored" data-anchor-id="hard-cut-off">Hard cut-off</h2>
<p>One can calculate the integral by simply using the 4-dimensional spherical coordinate system, then apply a hard cut-off <img src="https://latex.codecogs.com/png.latex?%5CLambda"> to <img src="https://latex.codecogs.com/png.latex?l_E">:： <img src="https://latex.codecogs.com/png.latex?%0A%5Cint%20%7Bd%5E4%20%5Cbm%7Bl_E%7D%7D%20%7B1%20%5Cover%20%7B(%5Cbm%7Bl_E%7D%5E2%20+%20%5CDelta)%5E2%7D%7D%20=%5Clim_%7B%5CLambda%20%5Cto%20+%20%5Cinfty%7D%20%5Cint%20d%5COmega_4%20%5Cint_%7B0%7D%5E%7B%5CLambda%7Ddl_E%20%7B%7Bl_E%7D%5E3%20%5Cover%20%7B(%7Bl_E%7D%5E2%20+%20%5CDelta)%5E2%7D%7D%0A"> By the way, this cut-off is Lorenz invariant, sinces it’s identical to a cut-off applied under Minkowski space. However, if one do the <img src="https://latex.codecogs.com/png.latex?l%5E0"> integral first then apply the cut-off, it’s not Lorenz invariant. Then this integral is trivial: <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Baligned%7D%0A%5Cint_%7B0%7D%5E%7B%5CLambda%7Ddl_E%20%7B%7Bl_E%7D%5E3%20%5Cover%20%7B(%7Bl_E%7D%5E2%20+%20%5CDelta)%5E2%7D%7D%20&amp;=%20%7B1%20%5Cover%202%7D%20%5Cint_%7B0%7D%5E%7B%5CLambda%7Dd%7Bl_E%7D%5E2%20%7B%7Bl_E%7D%5E2%20%5Cover%20%7B(%7Bl_E%7D%5E2%20+%20%5CDelta)%5E2%7D%7D%20%5C%5C%0A&amp;=%20%7B1%20%5Cover%202%7D%20%5Cint_%7B0%7D%5E%7B%5CLambda%7Dd%7Bl_E%7D%5E2%20%5Cleft%5B%7B1%20%5Cover%20%7B%7Bl_E%7D%5E2%20+%20%5CDelta%7D%7D%20-%20%7B%5CDelta%20%5Cover%20%7B(%7Bl_E%7D%5E2%20+%20%5CDelta)%5E2%7D%7D%5Cright%5D%20%5C%5C%0A&amp;=%20%7B1%20%5Cover%202%7D%20%5Cleft(%20%5Cln%7B%7B%5CLambda%5E2%20+%20%5CDelta%7D%20%5Cover%20%5CDelta%7D%20-%20%7B%5CLambda%5E2%20%5Cover%20%5CLambda%5E2%20%20+%20%5CDelta%7D%20%5Cright)%20%5C%5C%0A&amp;=%20%7B1%20%5Cover%202%7D%20%5Cleft(%20%5Cln%7B%7B%5CLambda%5E2%7D%20%5Cover%20%5CDelta(x,y,q%5E2)%7D%20-%201%20%5Cright)%0A%5Cend%7Baligned%7D%0A"> Substitute all these result to the original inegral <img src="https://latex.codecogs.com/png.latex?I(q)"> (Integral over <img src="https://latex.codecogs.com/png.latex?d%5COmega_4"> is <img src="https://latex.codecogs.com/png.latex?2%20%5Cpi%5E2">): <img src="https://latex.codecogs.com/png.latex?%0AI(q)%20=%20%7Bi%20%5Cover%2016%20%5Cpi%5E2%20%7D%20(%5Cln%7B%5CLambda%5E2%20%5Cover%20%5Cmu%5E2%7D%20-%201%20-%20%5Cint_0%5E1dx%20%5Cln%7B%5CDelta%20%5Cover%20%5Cmu%5E2%7D)%0A"> <img src="https://latex.codecogs.com/png.latex?%5Cmu"> is an arbitrary number has unit of mass, which keeps the inside of <img src="https://latex.codecogs.com/png.latex?%5Cln"> pure number, but actually it’s not necessary and won’t effect our final answer.</p>
</section>
<section id="renormalized-chi-propagator" class="level2">
<h2 class="anchored" data-anchor-id="renormalized-chi-propagator">Renormalized <img src="https://latex.codecogs.com/png.latex?%5Cchi"> propagator</h2>
<p>Take account of other loop diagrams (loops are aligned along the <img src="https://latex.codecogs.com/png.latex?%5Cchi"> propagator and do not have loops inside them), the total propagator of <img src="https://latex.codecogs.com/png.latex?%5Cchi"> is: <img src="https://latex.codecogs.com/png.latex?%0AG_%5Cchi(q)%20=%20%5Csum_%7Bn=0%7D%5E%7B%5Cinfty%7DG_%5Cchi%5E%7B(n)%7D%20=%7Bi%20%5Cover%20q%5E2%20-%20i%20%5Clambda%5E2%20I(q)%7D%0A"> One will notice the divergent part of <img src="https://latex.codecogs.com/png.latex?I(q)">, which is <img src="https://latex.codecogs.com/png.latex?%5Cln%5CLambda%5E2">, does not depend on <img src="https://latex.codecogs.com/png.latex?q">. That means if we introduce the exact mass term into <img src="https://latex.codecogs.com/png.latex?%5Cchi">’s Lagrangian, the divergents cancels out: <img src="https://latex.codecogs.com/png.latex?%0A%5Cmathcal%7BL%7D%20=%20%5Cmathcal%7BL%7D_B%20-%20%7B1%20%5Cover%202%7DM%5E2%5Cchi%5E2%0A"> Where <img src="https://latex.codecogs.com/png.latex?M%20=%20%7B%5Clambda%5E2%20%5Cover%2016%20%5Cpi%5E2%7D%20%5Cln%7B%5CLambda%5E2%20%5Cover%20%5Cmu%5E2%7D%20+%20M_0%5E2">. The introduce of <img src="https://latex.codecogs.com/png.latex?M_0"> is for keeping the original propagator under <img src="https://latex.codecogs.com/png.latex?q%20=%200"> limit.</p>
<p>So the corrected propagator is: <img src="https://latex.codecogs.com/png.latex?%0AG_%5Cchi(q)%20=%20%7Bi%20%5Cover%20q%5E2%20-%20%7B%5Clambda%5E2%20%5Cover%2016%20%5Cpi%5E2%7D(%5Cint_0%5E1dx%5Cln%7B%5CDelta%20%5Cover%20%5Cmu%5E2%7D+1)+M_0%5E2%7D%0A"> Apply constrain at <img src="https://latex.codecogs.com/png.latex?G_%5Cchi(0)"> will allow us to get <img src="https://latex.codecogs.com/png.latex?M_0%5E2%20=%20%7B%5Clambda%5E2%20%5Cover%2016%20%5Cpi%5E2%7D(%5Cln%7Bm%5E2%20%5Cover%20%5Cmu%5E2%7D%20+%201)">, then add back <img src="https://latex.codecogs.com/png.latex?i%5Cepsilon">: <img src="https://latex.codecogs.com/png.latex?%0AG_%5Cchi(q)%20=%20%7Bi%20%5Cover%20q%5E2%20-%20%7B%5Clambda%5E2%20%5Cover%2016%20%5Cpi%5E2%7D%5Cint_0%5E1dx%5Cln(1-%7Bx(1-x)q%5E2%20%5Cover%20m%5E2%7D)%20+%20i%5Cepsilon%7D%0A"> This is <img src="https://latex.codecogs.com/png.latex?%5Cchi">’s “absolute” propagator. There is a mass-like term depending on <img src="https://latex.codecogs.com/png.latex?q%5E2">, which indicates different behaviour under different energy.</p>
<p>Now we’ve successfully solved the divergent introduced by the loop diagram, though <img src="https://latex.codecogs.com/png.latex?-%5Clambda%5Cphi%5Cphi%5E*%5Cchi"> vertex and <img src="https://latex.codecogs.com/png.latex?%5Cphi"> propagator can also generate divergent, however they can be treated using the same manner. If we try to do this under QED, gamma matrixes and tensor algebra will be invoded, making it more tedious.</p>


</section>
</section>

 ]]></description>
  <category>physics</category>
  <category>QFT</category>
  <guid>https://blog.zhaose.cyou/posts/RenormalizationOfScalarPropagatorInAToyModel/</guid>
  <pubDate>Tue, 21 Oct 2025 00:00:00 GMT</pubDate>
  <media:content url="https://blog.zhaose.cyou/posts/RenormalizationOfScalarPropagatorInAToyModel/images/pic2.svg" medium="image" type="image/svg+xml"/>
</item>
<item>
  <title>Born approximation from path integral</title>
  <dc:creator>Zhaose </dc:creator>
  <link>https://blog.zhaose.cyou/posts/BornApproximationFromPathIntegral/</link>
  <description><![CDATA[ 





<p>Born approximation is one of the most well-known perturbation method for calculating quantum scattering processes in quantum mechanics. The transition matrix can be written as: <img src="https://latex.codecogs.com/png.latex?%0A%5Cbra%7Bp'%7D%20i%20%5Chat%7BT%7D%20%5Cket%7Bp%7D%20=%20-i%20%5Ctilde%7BV%7D(%5Cbm%7Bq%7D)%20(2%20%5Cpi)%20%5C,%20%5Cdelta(%20E_%7Bp'%7D%20-%20E_p%20)%0A"> where <img src="https://latex.codecogs.com/png.latex?%5Cbm%7Bq%7D%20=%20%5Cbm%7Bp'%7D%20-%20%5Cbm%7Bp%7D">.</p>
<p>Surely this result can be acquired though “canonical” quantum mechanics manner, but using path integral can be super easy to get this result in a very intuitive way.</p>
<p>Say, the Hamitonian of incident particle is: <img src="https://latex.codecogs.com/png.latex?H%20=%20%7Bp%5E2%20%5Cover%202m%7D%20+%20V(x)">. Then immediately we can write down the Lagrangian: <img src="https://latex.codecogs.com/png.latex?%0AL%20=%20%7B1%20%5Cover%202%7D%20m%20%5Cdot%7Bx%7D%5E2%20-%20V(x)%0A"> Just a simple transform.</p>
<p>Recall the definition of propagator: <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign*%7D%0AK%20&amp;=%20%5Cint_%7Bx(-T/2)=%7Bx_i%7D%7D%5E%7Bx(T/2)=%7Bx_f%7D%7Ddx%20%5C,%20%5Cexp%5C%7BiS%5C%7D%20%5C%5C%0A%20%20&amp;=%20%5Cint_%7Bx(-T/2)=%7Bx_i%7D%7D%5E%7Bx(T/2)=%7Bx_f%7D%7Ddx%20%5C,%20%5Cexp%5C%7BiS_0%5C%7D%20%5Cexp%5C%7BiS_I%5C%7D%0A%5Cend%7Balign*%7D%0A"> Where <img src="https://latex.codecogs.com/png.latex?S_0"> is the free action, and <img src="https://latex.codecogs.com/png.latex?S_I%20=%20-%20%5Cint%20dt'%20V(x(t'))">.</p>
<p>Assuming <img src="https://latex.codecogs.com/png.latex?V"> is small, we use perturbation theory by expanding <img src="https://latex.codecogs.com/png.latex?%5Cexp"> to the first order: <img src="https://latex.codecogs.com/png.latex?%0AK=%5Cint_%7Bx(-T/2)=%7Bx_i%7D%7D%5E%7Bx(T/2)=%7Bx_f%7D%7Ddx%20%5C,%20%5Cexp%5C%7BiS_0%5C%7D%5Cleft%5B1%20-%20i%5Cint%20dt'%20V(x(t'))%5Cright%5D%20=%20K_0%20+%20K_1%0A"></p>
<p><img src="https://latex.codecogs.com/png.latex?K_0"> is just the free propagator, <img src="https://latex.codecogs.com/png.latex?K_1"> is: <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign*%7D%0AK_1%20&amp;=%20-i%5Cint%20dt'%5Cint%20dx%20%5C,%20%5Cexp%5C%7BiS_0%5C%7D%20V(x(t'))%20%5C%5C%0A%20%20%20%20&amp;=%20-i%5Cint%20dt'%20%5Cint%20dx'%20%5C,%20V(x')%20%5Cint_%7Bx(-T/2)=%7Bx_i%7D%7D%5E%7Bx(t')=%7Bx'%7D%7D%20dx%20%5C,%20%5Cexp%5C%7BiS_0%5C%7D%20%5Cint_%7Bx(t')=%7Bx'%7D%7D%5E%7Bx(T/2)=%7Bx_f%7D%7D%20dx%20%5C,%20%5Cexp%5C%7BiS_0%5C%7D%20%5C%5C%0A%20%20%20%20&amp;=%20-i%5Cint%20dt'%20%5Cint%20dx'%20%5C,%20V(x')%20%5C,%20K_0(x_f,T/2;x',t')%20%5C,%20K_0(x',t';x_i,-T/2)%0A%5Cend%7Balign*%7D%0A"> Here we’ve used a trick to break the propagator into two parts, which can be interpreted as the particle traveling to point <img src="https://latex.codecogs.com/png.latex?x'"> at time <img src="https://latex.codecogs.com/png.latex?t'">, interacting with <img src="https://latex.codecogs.com/png.latex?V">, then continues its propagation, just like a vertex in QFT Feynmann diagrams.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://blog.zhaose.cyou/posts/BornApproximationFromPathIntegral/cover.svg" class="img-fluid figure-img"></p>
<figcaption>Vertex</figcaption>
</figure>
</div>
<p>Recall the definition of transition matrix, we have: <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign*%7D%0A&amp;%5Cbra%7Bp'%7D%20i%20%5Chat%7BT%7D%20%5Cket%7Bp%7D%20%5C%5C%0A=&amp;%20-i%5Cint%20dx_a%20%5C,%20dx_b%20%5Cbraket%7Bp',%20T/2%7Cx_a%7DK_1(x_a,T/2;x_b,-T/2)%20%5Cbraket%7Bx_b%7Cp,-T/2%7D%20%5C%5C%0A=&amp;%20-i%5Cint%20dx_a%20%5C,%20dx_b%20%5C,%20dt'%20%5C,%20dx'%20%5C,%20%20V(x')%20%5Ctimes%20%5C%5C%0A&amp;%5C,%20%5Cpsi_%7Bp'%7D%5E*(x_a,T/2)%20K_0(x_a,T/2;x',t')K_0(x',t';x_b,-T/2)%20%5Cpsi_p(x_b,-T/2)%0A%5Cend%7Balign*%7D%0A"> Note here in the definition of transition matrix, <img src="https://latex.codecogs.com/png.latex?%5Cket%7Bp'%7D"> and <img src="https://latex.codecogs.com/png.latex?%5Cket%7Bp%7D"> are defined under <strong>Interaction Picture</strong>, but normally propagator works under Schrödinger picture, so we have to take account of that. And here we’ve inserted two sets of position eigen states which is the canonical way of using propagators, and we get wave functions. By integrating over <img src="https://latex.codecogs.com/png.latex?x_a"> and <img src="https://latex.codecogs.com/png.latex?x_b">, we get wave function at <img src="https://latex.codecogs.com/png.latex?(x',t')">.</p>
<p>Then the last thing is substituting wavefunction of momentum eigen states in to our expression: <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Balign*%7D%0A&amp;%5Cbra%7Bp'%7D%20i%20%5Chat%7BT%7D%20%5Cket%7Bp%7D%20%5C%5C%0A=&amp;%20-i%5Cint%20dt'%20%5C,%20dx'%20%5C,%20%20V(x')%20%5Cpsi_%7Bp'%7D%5E*(x',t')%20%5Cpsi_p(x',t')%20%5C%5C%0A=&amp;%20-i%5Cint%20dt'%20%5C,%20dx'%20%5C,%20%20V(x')%20%5C,%20%5Cmathrm%7Be%7D%5E%7Bi(%5Cbm%7Bp%7D-%5Cbm%7Bp'%7D)x'-(E_p-E_%7Bp'%7D)t'%7D%20%5C%5C%0A=&amp;%20-i(2%5Cpi)%5C,%5Cdelta(E_p-E_%7Bp'%7D)%20%5Cint%20dx'%20V(x')%20%5C,%20%5Cmathrm%7Be%7D%5E%7B-i%5Cbm%7Bq%7Dx'%7D%20%5C%5C%0A=&amp;%20-i(2%5Cpi)%5C,%5Cdelta(E_p-E_%7Bp'%7D)%20%5Ctilde%7BV%7D(%5Cbm%7Bq%7D)%0A%5Cend%7Balign*%7D%0A"> Which is exactly the answer.</p>



 ]]></description>
  <category>physics</category>
  <category>QM</category>
  <guid>https://blog.zhaose.cyou/posts/BornApproximationFromPathIntegral/</guid>
  <pubDate>Thu, 31 Jul 2025 00:00:00 GMT</pubDate>
  <media:content url="https://blog.zhaose.cyou/posts/BornApproximationFromPathIntegral/cover.svg" medium="image" type="image/svg+xml"/>
</item>
</channel>
</rss>
