<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://www.algebra314.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.algebra314.com/" rel="alternate" type="text/html" /><updated>2026-04-17T17:03:52+00:00</updated><id>https://www.algebra314.com/feed.xml</id><title type="html">Algebra314</title><subtitle>A mathematics blog exploring ideas from first principles.</subtitle><author><name>Berkay</name></author><entry><title type="html">Why Does the Double Domino Effect Require Precise Spacing?</title><link href="https://www.algebra314.com/2026/04/16/dominoes.html" rel="alternate" type="text/html" title="Why Does the Double Domino Effect Require Precise Spacing?" /><published>2026-04-16T00:00:00+00:00</published><updated>2026-04-16T00:00:00+00:00</updated><id>https://www.algebra314.com/2026/04/16/dominoes</id><content type="html" xml:base="https://www.algebra314.com/2026/04/16/dominoes.html"><![CDATA[<h2 id="introduction">Introduction</h2>

<p>While watching one of <a href="https://www.youtube.com/watch?v=TXOZWq5hGJg">Zack D. Films’ videos on the double domino effect</a>, I became curious about how far apart dominoes could be placed while still allowing the chain to continue.</p>

<p>After experimenting with this in Algodoo, I noticed something surprising.</p>

<p>A spacing of 14.5 cm was too small for the double domino effect to occur, yet increasing it slightly to 15.0 cm allowed the entire sequence to continue.</p>

<p>At first glance, this seems counterintuitive. Since both values are below the maximum possible spacing, the domino effect occurs in each case. Why, then, does such a small change determine whether the double domino effect takes place?</p>

<p>This led me to investigate the mathematics behind the domino effect.</p>

<h2 id="the-problem">The problem</h2>

<p>Consider a row of identical rectangular bricks, each of height $h$ and width $w$, standing upright and equally spaced.</p>

<p>If one brick is pushed, it falls and hits the next, creating a domino effect.</p>

<p>But this raises the question:</p>

<p><strong>how far apart can the bricks be while still allowing the chain to continue, and under what conditions does the double domino effect occur?</strong></p>

<hr />

<h2 id="the-geometry-of-a-falling-brick">The Geometry of a Falling Brick</h2>

<p>Focus on a single brick rotating about its bottom corner.</p>

<p>As it falls through an angle $\theta$ from the vertical, the top corner moves both downward and horizontally.</p>

<p>The horizontal position of the top corner relative to the pivot is</p>

<p>$x = h \sin\theta + w \cos\theta$</p>

<p>The next brick begins at a horizontal distance of $w + d$, where $d$ is the gap between bricks.</p>

<p>For the falling brick to just touch the next one, these must be equal:</p>

<p>$h \sin\theta + w \cos\theta = w + d$</p>

<p>Rearranging gives</p>

<p>$d = h \sin\theta + w(\cos\theta - 1)$</p>

<p>This equation describes how the gap $d$ depends on the angle $\theta$ at which contact occurs.</p>

<hr />

<h2 id="the-maximum-possible-gap">The Maximum Possible Gap</h2>

<p>To find the largest possible spacing, we maximise</p>

<p>$d(\theta) = h \sin\theta + w(\cos\theta - 1)$</p>

<p>Differentiating:</p>

<p>$\frac{dd}{d\theta} = h \cos\theta - w \sin\theta$</p>

<p>Setting this equal to zero:</p>

<p>$h \cos\theta = w \sin\theta$</p>

<p>so</p>

<p>$\tan\theta = \frac{h}{w}$</p>

<p>Substituting this back into the expression for $d$ leads to</p>

<p>$d_{\max} = \sqrt{h^2 + w^2} - w$</p>

<p>This is the <strong>maximum spacing</strong> for which the falling brick can still reach the next one.</p>

<hr />

<h2 id="a-numerical-example">A Numerical Example</h2>

<p>In the UK, the standard dimensions for a brick are height $h = 21.5$  cm and width $w = 6.5$  cm:</p>

<p>$d_{\max} = \sqrt{21.5^2 + 6.5^2} - 6.5$</p>

<p>$= \sqrt{504.5} - 6.5$</p>

<p>$\approx 22.46 - 6.5 = 15.96 \text{  cm}$</p>

<p>So the bricks cannot be spaced more than approximately $15.96$  cm apart.</p>

<hr />

<h2 id="why-the-maximum-is-not-the-best">Why the Maximum Is Not the Best</h2>

<p>Although $d_{\max}$ tells us the largest possible gap, it does <strong>not</strong> tell us the best gap.</p>

<p>If the spacing is too close, the first brick hits the next one very early in its fall. At this point, it has not yet gained much speed, so the impact is weak.</p>

<p>If the spacing is larger, the brick falls further before making contact. As it falls, gravitational potential energy is converted into rotational kinetic energy, so its angular speed increases.</p>

<p>This means that <strong>later collisions are more forceful</strong>.</p>

<p>So placing the bricks closer to the maximum possible spacing allows the falling brick to build up more speed before impact, which is necessary for the double domino effect to occur.</p>

<p>This also explains why a spacing of $15.0$  cm worked more reliably than $15.96$  cm. The value $15.96$  cm represents the theoretical maximum, where the falling brick only just reaches the next one. At this point, even a slight deviation in spacing or alignment prevents contact, and the impact is extremely weak. Reducing the spacing slightly ensures a more reliable collision with sufficient force.</p>

<hr />

<h2 id="online-simulation">Online simulation</h2>

<p>The main reason I wanted to find the maximum possible distance was to test the double domino effect. In this scenario, the bricks must be placed very close to the maximum possible spacing so that each brick is only marginally supported by the next. When the final brick falls, this support is lost, triggering the collapse of the entire chain.</p>

<p>To test this, I simulated the system in Algodoo.</p>

<p>At a spacing of $15.0$  cm, the chain successfully continues:</p>

<p><img src="/assets/domino_150.gif" alt="Domino effect" /></p>

<p><em>At larger spacing, the brick falls further before impact, producing a stronger collision.</em></p>

<p>What I find interesting is that the distances between the bricks had to be very precise for the double domino effect to take place. For example, 15.0 cm distance works pretty well, but 14.7 cm was too small for there to be enough space for the bricks to fall cleanly.</p>

<p>Even though the simulation looks rather simple, the precision required for success took a while to fully accomplish. If you are interested in this Algodoo scene I used for this simulation, feel free to email me (more information on the <a href="https://www.algebra314.com/about/">About page</a>).</p>

<hr />

<h2 id="conclusion">Conclusion</h2>

<p>The domino effect is not just a visual curiosity, but a combination of geometry and mechanics.</p>

<p>The maximum spacing</p>

<p>$d_{\max} = \sqrt{h^2 + w^2} - w$</p>

<p>comes from considering how far a rotating brick can reach.</p>

<p>However, the success of the chain depends not only on whether the bricks touch, but on how much energy is transferred during the collision.</p>

<p>This explains why the “best” spacing is often close to, but not exactly equal to, the theoretical maximum.</p>]]></content><author><name>Berkay</name></author><summary type="html"><![CDATA[Introduction]]></summary></entry><entry><title type="html">Why Does the Discriminant Determine the Number of Roots?</title><link href="https://www.algebra314.com/2026/04/02/discriminant.html" rel="alternate" type="text/html" title="Why Does the Discriminant Determine the Number of Roots?" /><published>2026-04-02T00:00:00+00:00</published><updated>2026-04-02T00:00:00+00:00</updated><id>https://www.algebra314.com/2026/04/02/discriminant</id><content type="html" xml:base="https://www.algebra314.com/2026/04/02/discriminant.html"><![CDATA[<p>Consider a quadratic equation:</p>

<p>$ax^2 + bx + c = 0$</p>

<p>We are often told that the expression $b^2 - 4ac$ — known as the <em>discriminant</em> — determines how many real roots the equation has.</p>

<p>But why does this happen?</p>

<hr />

<h2 id="the-key-observation">The Key Observation</h2>

<p>Using the quadratic formula:</p>

<p>$x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}$</p>

<p>we see that everything depends on the square root term</p>

<p>$\sqrt{b^2 - 4ac}$</p>

<p>The nature of this square root determines the number of real solutions.</p>

<hr />

<h2 id="case-1-b2---4ac--0">Case 1: $b^2 - 4ac &gt; 0$</h2>

<p>If the discriminant is positive, then $\sqrt{b^2 - 4ac}$ is a real, non-zero number.</p>

<p>This means the $\pm$ sign gives two different values, so the quadratic has <strong>two distinct real roots</strong>.</p>

<hr />

<h2 id="case-2-b2---4ac--0">Case 2: $b^2 - 4ac = 0$</h2>

<p>If the discriminant is zero, then</p>

<p>$\sqrt{b^2 - 4ac} = 0$</p>

<p>So the formula becomes</p>

<p>$x = \frac{-b}{2a}$</p>

<p>Both values collapse into one, so the quadratic has <strong>one repeated real root</strong>.</p>

<hr />

<h2 id="case-3-b2---4ac--0">Case 3: $b^2 - 4ac &lt; 0$</h2>

<p>If the discriminant is negative, then $\sqrt{b^2 - 4ac}$ is not a real number.</p>

<p>So the quadratic has <strong>no real roots</strong>.</p>

<hr />

<h2 id="a-graphical-interpretation">A Graphical Interpretation</h2>

<p>Now consider the graph</p>

<p>$y = ax^2 + bx + c$</p>

<p>The roots of the quadratic are exactly the points where the graph meets the $x$-axis.</p>

<ul>
  <li>If $b^2 - 4ac &gt; 0$, the graph crosses the $x$-axis twice.</li>
  <li>If $b^2 - 4ac = 0$, the graph just touches the $x$-axis once.</li>
  <li>If $b^2 - 4ac &lt; 0$, the graph does not meet the $x$-axis at all.</li>
</ul>

<p>So the discriminant determines how many times the graph intersects the $x$-axis, which is why it determines how many real roots there are.</p>

<hr />

<h2 id="conclusion">Conclusion</h2>

<p>The discriminant is not just a number to calculate mechanically. It controls the square root term in the quadratic formula, and that in turn determines whether the equation has two, one, or no real roots.</p>]]></content><author><name>Berkay</name></author><summary type="html"><![CDATA[Consider a quadratic equation:]]></summary></entry><entry><title type="html">Why the Monty Hall Problem Still Feels Wrong</title><link href="https://www.algebra314.com/2026/03/20/monty-hall-problem.html" rel="alternate" type="text/html" title="Why the Monty Hall Problem Still Feels Wrong" /><published>2026-03-20T00:00:00+00:00</published><updated>2026-03-20T00:00:00+00:00</updated><id>https://www.algebra314.com/2026/03/20/monty-hall-problem</id><content type="html" xml:base="https://www.algebra314.com/2026/03/20/monty-hall-problem.html"><![CDATA[<p>The Monty Hall problem is interesting because it feels like the odds are 50/50, but it is not. Here is how it works:</p>

<ul>
  <li>You choose 1 of 3 doors</li>
  <li>Behind 1 is a car</li>
  <li>Behind the other 2 are goats</li>
  <li>Your aim is to open the door with the car</li>
  <li>The host knows what door has what</li>
  <li>After you choose, the host opens a door with a goat from one of the 2 doors you did not choose</li>
  <li>Now you have the option to switch to the other unopened door</li>
  <li>Should you switch?</li>
</ul>

<p>At first, it looks 50/50 because there are only 2 choices, but the chances of the door you did not pick having a car is 2/3. Here is why.</p>

<p>When the host opens a goat door from those two, that 2/3 probability does not disappear - it concentrates on the one remaining unopened door.</p>

<p>So:</p>

<ul>
  <li>Probability your original choice was right: 1/3</li>
  <li>Probability the other unopened door is right: 2/3</li>
</ul>

<p>That is why switching is better.</p>

<p>This took me a bit to properly understand, but a useful way to see this is to imagine 100 doors instead of 3. You pick 1 door, and the host opens 98 goat doors. It becomes much easier to see that your first choice is probably wrong, and that the one remaining unopened door is much more likely to contain the prize.</p>

<p>If you want to try this specific 100 door scenario for yourself, here is some Python code I made. After you play it a few times, you will start noticing how it is definitely not 50/50, and switching nearly always gives you a car.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">random</span>

<span class="k">def</span> <span class="nf">play_game</span><span class="p">():</span>
    <span class="n">doors</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">101</span><span class="p">))</span>
    <span class="n">car</span> <span class="o">=</span> <span class="n">random</span><span class="p">.</span><span class="n">choice</span><span class="p">(</span><span class="n">doors</span><span class="p">)</span>

    <span class="c1"># Player picks a door
</span>    <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
        <span class="k">try</span><span class="p">:</span>
            <span class="n">first_pick</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">input</span><span class="p">(</span><span class="s">"Pick a door (1-100): "</span><span class="p">))</span>
            <span class="k">if</span> <span class="mi">1</span> <span class="o">&lt;=</span> <span class="n">first_pick</span> <span class="o">&lt;=</span> <span class="mi">100</span><span class="p">:</span>
                <span class="k">break</span>
            <span class="k">else</span><span class="p">:</span>
                <span class="k">print</span><span class="p">(</span><span class="s">"Enter a number between 1 and 100."</span><span class="p">)</span>
        <span class="k">except</span><span class="p">:</span>
            <span class="k">print</span><span class="p">(</span><span class="s">"Invalid input, try again."</span><span class="p">)</span>

    <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"</span><span class="se">\n</span><span class="s">You picked door </span><span class="si">{</span><span class="n">first_pick</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>

    <span class="c1"># Determine the other unopened door
</span>    <span class="k">if</span> <span class="n">first_pick</span> <span class="o">==</span> <span class="n">car</span><span class="p">:</span>
        <span class="c1"># Picked correctly, then leave one random goat
</span>        <span class="n">other_options</span> <span class="o">=</span> <span class="p">[</span><span class="n">d</span> <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">doors</span> <span class="k">if</span> <span class="n">d</span> <span class="o">!=</span> <span class="n">first_pick</span> <span class="ow">and</span> <span class="n">d</span> <span class="o">!=</span> <span class="n">car</span><span class="p">]</span>
        <span class="n">other_door</span> <span class="o">=</span> <span class="n">random</span><span class="p">.</span><span class="n">choice</span><span class="p">(</span><span class="n">other_options</span><span class="p">)</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="c1"># Picked wrong -&gt; other door must be the car
</span>        <span class="n">other_door</span> <span class="o">=</span> <span class="n">car</span>

    <span class="k">print</span><span class="p">(</span><span class="s">"Host opens 98 doors... all goats"</span><span class="p">)</span>
    <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"Remaining doors: </span><span class="si">{</span><span class="n">first_pick</span><span class="si">}</span><span class="s"> and </span><span class="si">{</span><span class="n">other_door</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>

    <span class="c1"># Switch decision
</span>    <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
        <span class="n">switch</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s">"Do you want to switch? (yes/no): "</span><span class="p">).</span><span class="n">lower</span><span class="p">()</span>
        <span class="k">if</span> <span class="n">switch</span> <span class="ow">in</span> <span class="p">[</span><span class="s">"yes"</span><span class="p">,</span> <span class="s">"no"</span><span class="p">]:</span>
            <span class="k">break</span>
        <span class="k">print</span><span class="p">(</span><span class="s">"Type 'yes' or 'no'."</span><span class="p">)</span>

    <span class="n">final_pick</span> <span class="o">=</span> <span class="n">other_door</span> <span class="k">if</span> <span class="n">switch</span> <span class="o">==</span> <span class="s">"yes"</span> <span class="k">else</span> <span class="n">first_pick</span>

    <span class="c1"># Result
</span>    <span class="k">if</span> <span class="n">final_pick</span> <span class="o">==</span> <span class="n">car</span><span class="p">:</span>
        <span class="k">print</span><span class="p">(</span><span class="s">"You got the CAR!"</span><span class="p">)</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="k">print</span><span class="p">(</span><span class="s">"You got a goat."</span><span class="p">)</span>

    <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"(Car was behind door </span><span class="si">{</span><span class="n">car</span><span class="si">}</span><span class="s">)"</span><span class="p">)</span>


<span class="c1"># Game loop
</span><span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
    <span class="n">play_game</span><span class="p">()</span>
    <span class="n">again</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">Play again? (yes/no): "</span><span class="p">).</span><span class="n">lower</span><span class="p">()</span>
    <span class="k">if</span> <span class="n">again</span> <span class="o">!=</span> <span class="s">"yes"</span><span class="p">:</span>
        <span class="k">break</span>
</code></pre></div></div>
<p>What makes this problem interesting is not just the answer, but the fact that intuition pushes so strongly in the wrong direction. It is a good example of how mathematical reasoning can correct instinctive thinking.</p>]]></content><author><name>Berkay</name></author><summary type="html"><![CDATA[The Monty Hall problem is interesting because it feels like the odds are 50/50, but it is not. Here is how it works:]]></summary></entry></feed>