<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
    <title>Franklin's blog</title>
    <description>Franklin's blog</description>
    <link>https://franklin.dyer.me</link>
    <atom:link href="https://franklin.dyer.me/rss.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
        <title>Angeblich schwere 5x5 Latin-Square-Rätsel</title>
        <link>http://franklin.dyer.me/hard-latin-square-puzzles-de.html</link>
        <guid>hard-latin-square-puzzles-de</guid>
        <pubDate>2026-03-30</pubDate>
        <content:encoded type="html"><![CDATA[
    <h2>Angeblich schwere 5x5 Latin-Square-Rätsel</h2>

<p>In letzter Zeit bin ich absolut beschäftigt und zerstreut, sowohl geistig als auch materiell. Letztes Jahr habe ich mich für einen Masterprogramm in Computerlinguistik an der Universität Tübingen beworben und vor fast einem Monat bin ich mit meiner Frau nach Deutschland gezogen und seit der Abreise ist unserer Alltag komplett umgeworfen. Trotzdem habe ich es nicht inzwischen geschafft, meine Hobbyprojektsucht einzuschränken, um an meine reduzierte und unregelmäßigere Freizeit anzupassen...</p>

<p>Deshalb wird dieser Blogeintrag sehr knapp sein und im Grunde nur aus ein paar Rätsel bestehen. Sie sind im Format der Latin-Square-Rätsel aus dem deutschen <a href="https://www.testas.de/en/">TestAS</a>. In einem solchen Rätsel bekommt man eine 5x5 Matrix, in der viele Kisten leer sind, einige Kisten eine Buchstabe zwischen A und E enthalten, und eine Kiste das Fragezeichen "?" enthält. Vorausgesetzt, dass die ausgefüllte Kisten Teil eines <a href="https://en.wikipedia.org/wiki/Latin_square">lateinischen Quadrats</a> sind, in dem jede Buchstabe A-E genau einmal in jeder Reihe und in jeder Spalte vorkommt, soll man logisch den passenden Buchstabe für die mit dem Fragezeichen markierten Kiste folgern.</p>

<p>Folgendes ist ein einfaches Beispielrätsel von der TestAS-Webseite:</p>

<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>•</td>
<td>•</td>
<td>•</td>
<td>•</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>•</td>
<td>•</td>
<td>•</td>
</tr>
<tr>
<td>A</td>
<td>B</td>
<td>E</td>
<td>?</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>D</td>
<td>•</td>
<td>•</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>•</td>
<td>•</td>
<td>C</td>
</tr>
</tbody>
</table>

<p>Man sollte diese Rätsel ziemlich schnell lösen können, und zwar ohne Schmierpaper, sondern nur dem eigenen Gedächtnis. Natürlich fragte ich mich wie schwer solchen Rätsel sein können (wenn man sich auf nur 5x5 Latin-Squares beschränkt, also nichts Größeres). Dazu schrieb ich eine Haskellfunktion, um solche Rätsel durch Folgen von atomischen logischen Folgerungen zu lösen, und danach noch eine Funktion, um nach Rätsel stichprobenartig zu suchen, die "schwer zu lösen" für sie waren. Hier unten sind einige von ihnen. </p>

<p>(Ich frage mich, ob sich einige von ihren Lösungen trotzdem sehr knapp bewiesen lassen, wenn man besonders kreativ/schlau denkt.) </p>

<h3>Puzzle 1</h3>

<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>A</td>
<td>•</td>
<td>•</td>
<td>•</td>
<td>D</td>
</tr>
<tr>
<td>•</td>
<td>B</td>
<td>•</td>
<td>A</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>B</td>
<td>•</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>D</td>
<td>•</td>
<td>C</td>
<td>•</td>
</tr>
<tr>
<td>B</td>
<td>?</td>
<td>•</td>
<td>•</td>
<td>C</td>
</tr>
</tbody>
</table>

<h3>Puzzle 2</h3>

<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>D</td>
<td>•</td>
<td>•</td>
<td>•</td>
<td>E</td>
</tr>
<tr>
<td>•</td>
<td>A</td>
<td>•</td>
<td>D</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>E</td>
<td>?</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>E</td>
<td>•</td>
<td>B</td>
<td>•</td>
</tr>
<tr>
<td>B</td>
<td>•</td>
<td>•</td>
<td>•</td>
<td>C</td>
</tr>
</tbody>
</table>

<h3>Puzzle 3</h3>

<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>E</td>
<td>C</td>
<td>•</td>
<td>•</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>D</td>
<td>E</td>
<td>•</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>B</td>
<td>D</td>
<td>•</td>
</tr>
<tr>
<td>?</td>
<td>•</td>
<td>•</td>
<td>E</td>
<td>A</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>•</td>
<td>•</td>
<td>•</td>
</tr>
</tbody>
</table>

<h3>Puzzle 4</h3>

<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>C</td>
<td>B</td>
<td>•</td>
<td>•</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>E</td>
<td>C</td>
<td>•</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>E</td>
<td>D</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>•</td>
<td>C</td>
<td>A</td>
</tr>
<tr>
<td>•</td>
<td>?</td>
<td>•</td>
<td>•</td>
<td>•</td>
</tr>
</tbody>
</table>

<h3>Puzzle 5</h3>

<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>B</td>
<td>C</td>
<td>•</td>
<td>•</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>B</td>
<td>D</td>
<td>•</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>A</td>
<td>B</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>?</td>
<td>•</td>
<td>E</td>
<td>C</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>•</td>
<td>•</td>
<td>•</td>
</tr>
</tbody>
</table>

<h3>Puzzle 6</h3>

<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>•</td>
<td>D</td>
<td>•</td>
<td>C</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>D</td>
<td>•</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>B</td>
<td>A</td>
<td>C</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>•</td>
<td>?</td>
<td>•</td>
</tr>
<tr>
<td>A</td>
<td>•</td>
<td>•</td>
<td>D</td>
<td>•</td>
</tr>
</tbody>
</table>

<h3>Puzzle 7</h3>

<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>D</td>
<td>•</td>
<td>•</td>
<td>A</td>
<td>E</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>B</td>
<td>•</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>•</td>
<td>C</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>E</td>
<td>•</td>
<td>•</td>
<td>•</td>
</tr>
<tr>
<td>?</td>
<td>D</td>
<td>•</td>
<td>•</td>
<td>•</td>
</tr>
</tbody>
</table>

<h3>Puzzle 8</h3>

<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>C</td>
<td>•</td>
<td>•</td>
<td>A</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>C</td>
<td>•</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>•</td>
<td>D</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>•</td>
<td>•</td>
<td>B</td>
</tr>
<tr>
<td>?</td>
<td>E</td>
<td>•</td>
<td>•</td>
<td>C</td>
</tr>
</tbody>
</table>

<h3>Puzzle 9</h3>

<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>E</td>
<td>C</td>
<td>•</td>
<td>•</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>D</td>
<td>E</td>
<td>•</td>
<td>•</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>B</td>
<td>D</td>
<td>•</td>
</tr>
<tr>
<td>?</td>
<td>•</td>
<td>•</td>
<td>•</td>
<td>A</td>
</tr>
<tr>
<td>•</td>
<td>•</td>
<td>•</td>
<td>•</td>
<td>•</td>
</tr>
</tbody>
</table>

    <br>
<a href="/">go to homepage</a>
<hr>
<div id="license-statement">The posts on this website are licensed under <a href="https://creativecommons.org/licenses/by-nc/4.0/">CC-by-NC 4.0</a>.</div>
<div id="notbyai"><a href="https://notbyai.fyi/"><img src="/img/written-by-human.png"/><img src="/img/illustrated-by-human.png"/></a></div>
]]></content:encoded>
    </item>
    
    <item>
        <title>Exploring finite central groupoids</title>
        <link>http://franklin.dyer.me/finite-central-groupoids-en.html</link>
        <guid>finite-central-groupoids-en</guid>
        <pubDate>2026-01-01</pubDate>
        <content:encoded type="html"><![CDATA[
    <h2>Exploring finite central groupoids</h2>

<p>A few weeks ago I was craving a math puzzle but feeling uninspired, so I turned to the <a href="https://teorth.github.io/equational_theories/">Equational Theories</a> project for ideas. The project (which has now come to an end) aimed to prove as many implications as possible between algebraic identities of binary operations by crowdsourcing proofs written in the Lean programming language. In its completed state, the project is not only an incredible accomplishment but also a great source of mathematical chestnuts.</p>

<p>I settled on spending some time exploring <strong>central groupoids</strong>, which are defined as magmas (i.e. sets equipped with a binary operation $\cdot$) satisfying the following law: <script type="math/tex; mode=display">(x\cdot y)\cdot (y\cdot z) = y</script> For intuition, there's a whole family of easy-to-comprehend central groupoids that can be defined on sets of ordered pairs $A^2 = A\times A$. On a set of this form, the operation defined by $(x_1,x_2)\cdot (y_1,y_2) = (x_2, y_1)$ automatically satisfies the central groupoid law. Central groupoids of this form are called <strong>natural central groupoids</strong>. Part of the intrigue of central groupoids is that it's kind of tricky to exhibit families of non-natural central groupoids that are as intuitive as the natural ones. Even non-natural central groupoids have several properties that are loosely analogous to the central ones: for instance, all finite central groupoids have a perfect square number of elements (which we will prove later).</p>

<h3>Digraph, matrix and powerset representations</h3>

<p>Central groupoids can also be understood as a special kind of directed graph. If $D$ is a digraph with the property that any two vertices $v,w\in V(D)$ have a unique directed path of length 2 between them, then a binary operation $\cdot$ can be defined on $V$ such that $v\cdot w$ is the intermediate vertex on that unique path, that is, the unique vertex such that $v\to v\cdot w \to w$ in the graph $D$. It follows that this binary operation satisfies the central groupoid law: if $x,y,z\in V(D)$, then $x\cdot y\to y$ and $y\to y\cdot z$ are both edges, meaning that $y$ is intermediate on a path of length 2 between $x\cdot y$ and $y\cdot z$.</p>

<p><center><img src="/img/2026-01-01-Fig1.png" alt="Fig1" /></center></p>

<p>Conversely, every central groupoid arises from a digraph in this way, and given a central groupoid $C$ we can construct a digraph $D$ giving rise to it. Simply let the vertices $V(D)$ consist of the elements of $C$, and for each vertex $v\in V(D)$, let there be an edge joining $v\to v\cdot w$ for each $w\in V(D)$. This graph is guaranteed to have the uniqueness property of length-2 paths: if $v\to x\to w$ for some $v,w,x\in V(D)$, then we must have that $x = v\cdot v'$ and $w = x\cdot w'$ for some $v'$ and $w'$, implying that $(v\cdot v)\cdot x = v$ and hence $v\cdot w = x$, meaning that all intermediate elements on a length-2 path from $v$ to $w$ must equal $v\cdot w$.</p>

<p>Digraphs $D$ can also be represented by incidence matrices $M$, that is, sets of 0s and 1s such that a value of 1 in row $i$ and column $j$ indicates and edge $i\to j$ in the digraph. The length-2 path uniqueness property in the digraph $D$ for a central groupoid has a neat translation into matrix language: it's equivalent to $M^2 = J$, where $J$ is a matrix of all 1s. So central groupoids also correspond to zero-one matrices whose square is the identity matrix.</p>

<p>When working with concrete examples by hand, I find a different representation of central groupoids more convenient, since drawing out digraphs gets messy very quickly. A central groupoid $C$ can also be represented by a function $f: C\to \mathcal P C$ — that is, an assignment of a subset of $C$ to each element of $C$ — with the special property that for each subset $f(x)\subset C$, the set ${f(y) ~ : ~ y\in f(x)}$ comprises a <em>partition</em> of $C$. In terms of the central groupoid operation, the set $f(x)$ would be the set of all left-images of $x$, that is, the set of values $x\cdot y$ for $y$ ranging over $C$. In terms of the digraph representation $D$ for the central groupoid $C$, for a vertex $v\in D$, the value $f(v)$ would give the set of all vertices that are the target of an edge originating from $v$.</p>

<p>There's only one central groupoid of order 4, namely the natural one, so let's look at a couple concrete examples of order 9. Here's how I visualize the natural central groupoid of order 9. On the right is a table describing the function $f$, which maps each $x\in C$ to a subset of $C$. On the left is how I picture the digraph representation of $C$ without drawing a tangled mess of edges: for each vertex, the color of the vertex indicates that it should have directed edges pointing to each vertex in the set of the same color. For instance, $v_1$ has outward-pointing edges $v_1\to v_1$, $v_1\to v_2$ and $v_1\to v_3$ because it is red, and the red-colored group contains vertices $v_1,v_2,v_3$.</p>

<p><center><img src="/img/2026-01-01-Fig2.png" alt="Fig2" /></center></p>

<p>Values of the central groupoid operation can be read off from these diagrams. To compute, for instance, $v_1\cdot v_5$, you can follow these steps:</p>

<ul>
<li>identify the vertices that $v_1$ points to (they are $v_1,v_2,v_3$)</li>
<li>identify which of those vertices points to $v_5$ ($v_2$ does, since it is orange and $v_5$ is in the orange group)</li>
<li>this vertex $v_2$ is the value of $v_1\cdot v_5$</li>
</ul>

<p>Here's an example of a central groupoid of order 9 that is <em>not</em> natural:</p>

<p><center><img src="/img/2026-01-01-Fig3.png" alt="Fig3" /></center></p>

<p>You can check for yourself that it satisfies the required property, namely that for each 3-element set of elements ${x,y,z}$, the collection of sets ${f(x),f(y),f(z)}$ comprises a partition of ${1,2,\cdots,9}$. Note that there are only two distinct partitions to chosoe from here.</p>

<h3>Cardinality and idempotent elements of a finite central groupoid</h3>

<p>We shall see that each element $\alpha$ of a finite central groupoid $C$ determines a "local coordinate system" for $C$, and that consequently $C$ must have a perfect square number of elements.</p>

<p>Let $\alpha\in C$ be an arbitrary element of a central groupoid. Let the set of left-images of $\alpha$ be denoted $\alpha\cdot C$, and let the set of right-images of $\alpha$ be denoted $C\cdot \alpha$. In a natural central groupoid of order $n^2$, the set $\alpha\cdot C$ would consist of all points of the form $(\alpha_2, -)$ and $C\cdot \alpha$ would consist of all points of the form $(-,\alpha_1)$, so that each would have precisely $n$ points. Although a non-natural central groupoid does not come equipped with such a global coordinate representation, it <em>remain the case</em> in these central groupoids that $\alpha\cdot C$ and $C\cdot \alpha$ have the same number of elements. In particular, we have the following bijection $\alpha\cdot C \simeq C\cdot \alpha$: <script type="math/tex; mode=display">\begin{align*}g_\alpha ~ &amp;: ~ x \mapsto x\cdot\alpha \\ g_\alpha^{-1} ~ &amp;: ~ x \mapsto \alpha\cdot x \end{align*}</script> To see that this is a bijection, let $x=\alpha\cdot x'\in \alpha\cdot C$ be arbitrary and observe that </p>

<p>
<script type="math/tex; mode=display">\begin{align*}g_\alpha^{-1}(g_\alpha(x)) 
&amp;= \alpha\cdot (x\cdot \alpha) \\
&amp;= \alpha\cdot ((\alpha\cdot x')\cdot \alpha) \\ 
&amp;= ((x'\cdot\alpha)\cdot (\alpha\cdot x'))\cdot ((\alpha\cdot x')\cdot \alpha) \\
&amp;= \alpha\cdot x' \\
&amp;= x
\end{align*}</script>
</p>

<p>Since $C$ is a finite set, this is sufficient to conclude that $g_\alpha$ and $g^{-1}_\alpha$ as defined are inverses.</p>

<p>Knowing that $|\alpha\cdot C| = |C\cdot \alpha|$, we are ready to prove that $C$ must have cardinality a perfect square, and in the process derive a "local coordinate system" for $C$ based on the element $\alpha$. To accomplish this, we can exhibit a very simple bijection between $C$ itself and the set $(\alpha\cdot C)\times (C\cdot\alpha)$, namely the mapping $x\mapsto (\alpha\cdot x, x\cdot\alpha)$ with inverse mapping $(y_1,y_2)\mapsto y_1\cdot y_2$. The fact that these mappings are inverses follows directly from the central groupoid law and the finiteness of the set $C$. This establishes immediately that $|C| = n^2$, where $n = |\alpha\cdot C| = |C\cdot\alpha|$.</p>

<p>We can also prove that a central groupoid $C$ of order $n^2$ has precisely $n$ idempotent elements, that is, elements $x$ satisfying $x\cdot x = x$. This property is easiest to prove using the matrix representation $M$ for the central groupoid. The rows and columns of $M$ correspond to elements of $C$ or nodes of the corresponding digraph $D$, and idempotent elements correspond to loops of the digraph, or diagonal entries of $M$. Hence the number of idempotents is equal to the trace $\text{tr}(M)$. This trace can be computed directly as the sum of the eigenvalues of $M$. Since $M^2 = J$, and $J$ has characteristic polynomial $(\lambda - n^2)\lambda^{n^2-1}$, meaning that $M$ has characteristic polynomials $(\lambda - n)\lambda^{n^2-1}$ and trace $\text{tr}(M) = n$.</p>

<h3>The more than 3000 central groupoids of order 16</h3>

<p>There are precisely 6 central groupoids of order 9 up to isomorphism. It isn't difficult to enumerate them by hand with a bit of patience. But if we move on to the central groupoids of order 16, the number of possibilities explodes. (As far as I'm aware, nobody in the mathematical literature has successfully enumerated the 16-element central groupoids yet, even with computer assistance.)</p>

<p>The problem of determining whether two binary operations on finite sets of the same cardinality are isomorphic is in general very computationally intensive. For two sets of order $N$, there are $N!$ different bijections between the two sets, each of which is a possible isomorphism to be confirmed or ruled out. However, depending on the nature of the binary operation and its properties, the problem can sometimes be simplified considerably.</p>

<p>In the case of central groupoids, the idempotent elements can be used to simplify the process of checking isomorphism. We know that any central groupoid with $n^2$ elements must have precisely $n$ idempotent elements. As a consequence of this fact, the idempotent elements of any central groupoid must <em>generate</em> the entire central groupoid, since the sub-central-groupoid generated by those elements must also be a central groupoid with at least $n$ idempotent elements (namely the generators themselves). Hence, any isomorphism between two central groupoids is <em>completely determined</em> by its action on the idempotent elements. That narrows down the number of bijections that need to be checked from $N!$ to $(\sqrt N)!$. The latter still grows quite fast as a function of $N$, but for smaller values of $N$, this trick can be a huge help: for example, in the case of $N=16$, it's the difference between checking $16!\approx 2.1\times 10^{13}$ bijections and only $4!=24$. Note that this also simplifies the problem of finding the <em>symmetry group</em> of central groupoids, and it implies that the symmetry group of a central groupoid of order $n^2$ is a subgroup of $S_n$.</p>

<p>I've identified 3,471 nonisomorphic central groupoids of order $4^2=16$ using an algorithm that produces novel central groupoids by making small tweaks to existing ones. Unfortunately, I'm not sure whether my method produces <em>all possible</em> central groupoids of order $16$, but (purely conjecturally) I believe that it does. Furthermore, my code, written in Haskell, is not formally verified. (You can <a href="https://gist.github.com/franklindyer/b3c0ede8f5887b92ace4f59c0327972d">check it out in this Gist</a> if you want, or you can explore <a href="/files/cg_crawled16_pretty.json">this JSON data</a> listing the central groupoids I found and some of their properties.) So any of my comments below about the results of this number crunching can be taken with a grain of salt.</p>

<p>One interesting property of central groupoids to consider is the <em>symmetry group</em>, that is, its group of automorphisms (bijective operation-respecting functions). As mentioned earlier, any isomorphism of central groupoids of order $n^2$ is determined by its action on the $n$ idempotent elements (since they generate the whole set), so it suffices to characterise how these automorphisms permute these elements. For central groupoids of order $16$, it is pretty easy to calculate automorphism groups.  For the 3,471 nonisomorphic central groupoids that I found, here's the breakdown of symmetry groups. As you can see, the overwhelming majority have no nontrivial symmetries at all, but a few exceptional ones have more interesting symmetry groups.</p>

<table>
<thead>
<tr>
<th>Automorphism group action</th>
<th>Number of central groupoids of order 16</th>
</tr>
</thead>
<tbody>
<tr>
<td>Trivial</td>
<td>3254</td>
</tr>
<tr>
<td>$\mathbb Z_2$ swapping one pair of idempotents</td>
<td>136</td>
</tr>
<tr>
<td>$\mathbb Z_2$ swapping two pairs of idempotents</td>
<td>56</td>
</tr>
<tr>
<td>$\mathbb Z_3$</td>
<td>8</td>
</tr>
<tr>
<td>$S_3$</td>
<td>4</td>
</tr>
<tr>
<td>$V$ acting intransitively</td>
<td>5</td>
</tr>
<tr>
<td>$V$ acting transitively</td>
<td>2</td>
</tr>
<tr>
<td>$\mathbb Z_4$</td>
<td>4</td>
</tr>
<tr>
<td>$D_4$</td>
<td>1</td>
</tr>
<tr>
<td>$S_4$</td>
<td>1 (just the natural one)</td>
</tr>
</tbody>
</table>

<p>Another interesting statistic: of the more than 3,000 central groupoids that I found, only 33 are <em>self-dual</em>, meaning that they are isomorphic to the central groupoid you get by reversing the order of the operation (or reversing the edges in the corresponding digraph, if you prefer). This makes self-duality a shockingly rare property.</p>

<p>A few more intriguing finds among the $16$-element central groupoids that I enumerated include the following:</p>

<ul>
<li>There are 7 central groupoids for which every non-idempotent generates a sub-central-groupoid of order 4.</li>
<li>There is precisely 1 central groupoid for which every non-idempotent generates the entire set.</li>
<li>There are an additional 25 central groupoids for which <em>all but 2</em> of the non-idempotent elements generate the entire set.</li>
<li>There are 1043 central groupoids in which no two elements give rise to the same system of "local coordinates".</li>
<li>There are 52 central groupoids (including the natural one) in which every element can be written as a product of 2 idempotents.</li>
<li>There are 30 central groupoids in which there are 13 distinct left-image-sets $\alpha\cdot C$, and none with more than 13.</li>
</ul>

    <br>
<a href="/">go to homepage</a>
<hr>
<div id="license-statement">The posts on this website are licensed under <a href="https://creativecommons.org/licenses/by-nc/4.0/">CC-by-NC 4.0</a>.</div>
<div id="notbyai"><a href="https://notbyai.fyi/"><img src="/img/written-by-human.png"/><img src="/img/illustrated-by-human.png"/></a></div>
]]></content:encoded>
    </item>
    
    <item>
        <title>Polynomvernichtenden Funktionen und Folgen</title>
        <link>http://franklin.dyer.me/polynomvernichtung-de.html</link>
        <guid>polynomvernichtung-de</guid>
        <pubDate>2025-12-03</pubDate>
        <content:encoded type="html"><![CDATA[
    <h2>Polynomvernichtenden Funktionen und Folgen</h2>

<p>In diesem Blogeintrag wollte ich einfach ein Ergebnis von der Realanalyse mitteilen, die ich für sehr unintuitiv halte. Es lautet, dass es Funktionen $f:\mathbb R^+\to\mathbb R$ gibt, die alle Polynomfunktionen <em>vernichten</em>, also <em>orthogonal</em> zu jeder Polynomfunktion sind, bezüglich des $L^2$-Skalarprodukt. Das heißt, es gibt Funktionen $f:\mathbb R^+\to\mathbb R$, für die gilt <script type="math/tex; mode=display">\int_0^\infty f(x) \cdot P(x) ~ dx = 0</script> für jedes Polynom $P$. Anders gesagt gilt folgendes für alle $k\in\mathbb N$: <script type="math/tex; mode=display">\int_0^\infty f(x)\cdot x^k ~ dx = 0</script> Überraschenderweise ist es ziemlich einfach, die Formel einer bestimmten Elementarfunktion vorzulegen, die diese seltsame Eigenschaft erfüllen. Die folgende Integralformel gilt für alle $\alpha\in\mathbb C$ bei denen $\text{Re}(\alpha) &gt; 0$: <script type="math/tex; mode=display">g_n(\alpha) = \int_0^\infty x^n e^{-\alpha x} ~ dx = \frac{n!}{\alpha^{n+1}}</script> Wenn man $\alpha$ die Werte von komplexen Einheitswurzeln annehmen lässt, dabei stellt sich heraus, dass besondere Linearkombinationen von verschiedenen Werten von $f_n(\alpha)$ den Wert Null annehmen für alle $n$ die einer bestimmten Teilfolge von $\mathbb N$ gehören. Zum Beispiel, jede vierte Wert von $\zeta_8^n + \zeta_8^{-n}$ ist Null, weil $\zeta_8^{8n+2}=+i$ und $\zeta_8^{-(8n+2)}= -i$. Deshalb gilt <script type="math/tex; mode=display">\frac{g_{4n+1}(\zeta_8) + g_{4n+1}(\zeta_8^{-1})}{2} = \int_0^\infty x^{4n+1} e^{-x/\sqrt{2}}\cos\big(x/\sqrt{2}\big) ~ dx = 0</script> Nach einem zusätzlichen Ersatz in diesem Integral, ergibt sich, dass <script type="math/tex; mode=display">\int_0^\infty \frac{e^{-\sqrt[4]{x}}\cos(\sqrt[4]{x})}{\sqrt x}\cdot x^k ~ dx = 0</script> Die gleiche Methode bringt noch weitere Beispielfunktionen hervor:</p>

<p>
<script type="math/tex; mode=display">\begin{align*}
f(x) &amp;= \frac{e^{-\sqrt{3} \sqrt[6]{x}}\cos(\sqrt[6]{x})}{\sqrt{x}} \\
f(x) &amp;= \frac{e^{-(\sqrt{2}-1) \sqrt[8]{x}}\cos(\sqrt[8]{x})}{\sqrt{x}} \\
f(x) &amp;= \frac{e^{-(2-\sqrt{3}) \sqrt[12]{x}}\cos(\sqrt[12]{x})}{\sqrt{x}} \\
\end{align*}</script>
</p>

<p>Natürlich erfüllen auch lineare Kombinationen von diesen Funktionen die gleiche seltsame Eigenschaft; das heißt, die Menge von allen integrierbaren Funktionen $f:\mathbb R^+\to\mathbb R$, die orthogonal zu jedem Polynom sind, ist ein <em>Vektorraum</em>. Es ist nämlich der Nullraum des Operators <script type="math/tex; mode=display">f ~ \mapsto ~ \bigg\langle\int_{0}^\infty f(x) \cdot x^k ~ dx\bigg\rangle_{k\in\mathbb N}</script> Die Existenz solcher Beispielfunktionen ist sogar überraschender, in Anbetracht der Tatsache, dass es keine derartige Funktionen im Vektorraum von integrierbaren Funktionen auf dem Interval $[0,1]$ anstatt $[0,\infty)$ gibt, dessen Nichtexistenz eine Konzequenz des <a href="https://en.wikipedia.org/wiki/Stone–Weierstrass_theorem">Satzes von Stone-Weierstrass</a> ist. Wenn eine Funktion $f:[0,1]\to\mathbb R$ orthogonal zu jedem Polynom auf dem Interval $[0,1]$ wäre, dann wäre auch $\langle f, P\rangle =0$ für jedes Polynom $P$, weshalb es im Widerspruch zum Satz von Stone-Weierstrass unmöglich wäre, $f$ durch Polynomfunktionen zu approximieren.</p>

<hr>

<p>Diesem Resultat entspricht auch ein diskretes Gegenstück. Es existieren auch unendlichen Folgen $(a_n)$ von Realzahlen, die ally Polynomfolgen $(n^k)$ vernichten bezüglich des $\ell^2$-Skalarproduktes, damit folgendes gilt für jede $k\in\mathbb N$:</p>

<p>
<script type="math/tex; mode=display">\sum_{n=1}^{\infty} a_n\cdot n^k = 0</script>
</p>

<p>Diese Folgen bilden auch einen Vektorraum, der der Kernraum von einer unendlichen <a href="https://en.wikipedia.org/wiki/Vandermonde_matrix">Vandermonde-Matrix</a> sind, was sogar erstaunlicher ist, weil alle endliche Vandermonde-Teilmatrizen von dieser Matrix voller Rang sind, also einen nulldimensionale Kernraum besitzen:</p>

<p>
<script type="math/tex; mode=display">\begin{bmatrix}1 &amp; 1 &amp; 1 &amp; 1 &amp; \cdots \\ 1 &amp; 2 &amp; 3 &amp; 4 &amp; \cdots \\ 1 &amp; 2^2 &amp; 3^2 &amp; 4^2 &amp; \cdots \\ 1 &amp; 2^3 &amp; 3^3 &amp; 4^3 &amp; \cdots \\ \cdots &amp; \cdots &amp; \cdots &amp; \cdots &amp; \end{bmatrix}\begin{bmatrix}a_1 \\ a_2 \\ a_3 \\ a_4 \\ \cdots\end{bmatrix} = \mathbf{0}</script>
</p>

<p>Es ist schwerer, die Existenz solcher Folgen zu beweisen, doch man kann sich die früher erwähnte polynomvernichtende Funktionen $f:\mathbb R^+\to\mathbb R$ zunutze machen, um Beispielfolgen zu produzieren. Sei $f$ eine bestimmte polynomvernichtende Funktion $f:\mathbb R^+\to\mathbb R$ und sei bestimmt eine komplexe Funktion $\phi_f$ durch die folgende Formel, wo $z\in \mathbb C$ die Ungleichung $\text{Re}(z) &lt; 1$ erfüllt:</p>

<p>
<script type="math/tex; mode=display">\phi_f(z) := \int_0^\infty f(x) \cdot e^{-x(1-z)} ~ dx</script>
</p>

<p>Diese Formel definiert eine analytische Funktion $\phi_f$ in der ganzen Kreisscheibe $|z| &lt; 1$, weshalb folgt es, dass $\phi_f$ eine konvergente Potenzreihe innerhalb dieser Kreisscheibe besitzt:</p>

<p>
<script type="math/tex; mode=display">\phi_f(z) = \sum_{n=0}^\infty \frac{\phi_f^{(n)}(0)}{n!}\cdot z^n</script>
</p>

<p>Durch die Formel, damit $\phi_f$ definiert wurde, kann man beweisen, dass sich sowohl $\phi_f$ als auch alle ihrer Ableitungen $\phi_f^{(k)}$ dem Nullwert annähern als $z\to 1$:</p>

<p>
<script type="math/tex; mode=display">\lim_{z\to 1}\phi_f^{(k)}(z) = k!\int_0^\infty f(x)\cdot x^k ~ dx = 0</script>
</p>

<p>Das ist selbst zwar ein ziemlich ungewöhnliches Grenzverhalten von einer analytischen Funktion, doch darüber hinaus kann man daraus folgern, dass die Koeffizientenfolge $a_n = \phi_f^{(n)}(0)/n!$ zu jedem Polynom orthogonal ist, denn</p>

<p>
<script type="math/tex; mode=display">\lim_{z\to 1}\phi_f^{(k)}(z) = \sum_{n=0}^\infty a_n\cdot n(n-1)\cdots (n-k+1) = 0</script>
</p>

<p>und jene Familie von Polynomen $n(n-1)\cdots (n-k+1)$ spannt den ganzen Vektorraum von Polynomfunktionen auf. Deshalb ergibt sich die folgende Formel für eine Beispielsfolge $(a_n)$ mit der Eigenart, für die wir uns interessieren:</p>

<p>
<script type="math/tex; mode=display">a_n := \frac{1}{n!}\int_0^\infty f(x) \cdot x^n e^{-x} ~ dx</script>
</p>

<p>Soweit ich weiß gibt es keine schöne analytisch geschlossene Formel für eine zu jedem Polynom orthogonale Folge $(a_n)$. Die <a href="https://en.wikipedia.org/wiki/Thue–Morse_sequence">Thue-Morse Folge</a> bekommt doch eine "ehrenvolle Erwähnung": obwohl die unendliche Summe von $\sigma(n)\cdot n^k$ gar nicht konvergent ist, trifft ihre Folgen von Partialsummen den Nullwert unendlich oft. Insbesondere gilt <script type="math/tex; mode=display">\sum_{n=1}^{m\cdot 2^{k+1}} \sigma(n)\cdot n^k = 0</script> für jede $m,k\in\mathbb N$, der an und für sich auch eine sehr sonderbare eigenschaft ist!</p>

    <br>
<a href="/">go to homepage</a>
<hr>
<div id="license-statement">The posts on this website are licensed under <a href="https://creativecommons.org/licenses/by-nc/4.0/">CC-by-NC 4.0</a>.</div>
<div id="notbyai"><a href="https://notbyai.fyi/"><img src="/img/written-by-human.png"/><img src="/img/illustrated-by-human.png"/></a></div>
]]></content:encoded>
    </item>
    
    <item>
        <title>A vector technique for unsupervised lexeme discovery</title>
        <link>http://franklin.dyer.me/unsupervised-lexeme-discovery-en.html</link>
        <guid>unsupervised-lexeme-discovery-en</guid>
        <pubDate>2025-11-05</pubDate>
        <content:encoded type="html"><![CDATA[
    <h2>A vector technique for unsupervised lexeme discovery</h2>

<p>Lately I've been an active contributor to <a href="https://tatoeba.org/en">Tatoeba</a>, a huge open-source collection of parallel sentences in many different world languages. Aside from being an amazing resource for the languages I'm studying, it's given me exposure to languages that I didn't even know existed before, and it's also a great dataset for NLP projects.</p>

<p>I've been mulling over the following question: given a bunch of example sentences translated into your own language, would it be possible to algorithmically deduce translations for individual lexemes/morphemes? When done manually, this task is fairly simple. For instance, I don't know any Hungarian, but if I were given the following Hungarian translations of English sentences:</p>

<table>
<thead>
<tr>
<th>English</th>
<th>Hungarian</th>
</tr>
</thead>
<tbody>
<tr>
<td>Tom filled the bottle with drinking water.</td>
<td>Tom megtöltötte az üveget ivóvízzel.</td>
</tr>
<tr>
<td>Tom drinks at least three liters of water every day.</td>
<td>Tom naponta legalább három liter vizet iszik.</td>
</tr>
<tr>
<td>If it weren't for water, humans wouldn't survive.</td>
<td>Ha nem lenne víz, az emberek nem élnék túl.</td>
</tr>
<tr>
<td>The water came up to our knees.</td>
<td>A víz térdig ért.</td>
</tr>
<tr>
<td>I would like some water.</td>
<td>Kérek egy kis vizet.</td>
</tr>
</tbody>
</table>

<p>...then after staring at these sentences for a while, I would be able to guess that the word for <code>water</code> in Hungarian is <code>víz</code> without any prior knowledge. This is because the only thing in common between the English sentences is the word <code>water</code>, whereas for the Hungarian sentences it seems to be <code>víz</code> or <code>viz</code> (sometimes with additional prefixes/suffixes). In fact, I would also be willing to guess that <code>ivóvízzel</code> means <code>drinking water</code>.</p>

<p>Really, all I did was look at these sentences, find some common subsequences of characters, and make a heuristic judgment about what the most likely translation of the word <code>water</code> would be. This process seems like it should be susceptible to automation, so I gave it a try! </p>

<p>Most of the NLP tools and algorithms that I've learned about are for processing text at the word/morpheme level, and presuppose a tokenizer/lemmatizer/stemmer for the target language. This task, however, occurs at the character level and concerns how we discover lexemes/morphemes in the first place. I'm not familiar with many NLP techniques that work at this low of a level, so this problem has been a very fun challenge! </p>

<p>Below, I explain my approach and discuss some of its current weaknesses.</p>

<hr>

<p>But first, a little eye candy!</p>

<p>Given a list of sentences in a target language with a word/phrase/substring in common between their English translations, my code calculates a kind of "heatmap" on each sentence, assigning each position in the sentence a score between 0 and 1 quantifying its local similarity to other sentences. We can visualize the results for specific sentences by graphing the scores by character index. Here's an example in Hungarian, generated when searching for a translation of the word <code>water</code>:</p>

<p><center><img src="/img/2025-11-05-Fig1.png" alt="Fig1" /></center></p>

<p>I also have a utility for visualizing this "relevance score" by highlighting segments of sentences in the target language with varying levels of saturation. Here's what this looks like for the same example in Hungarian:</p>

<p><center><img src="/img/2025-11-05-Fig2.png" alt="Fig2" /></center></p>

<p>Candidate words can be obtained from sentences by extracting segments containing the highest scores. By defining a custom string distance metric on the extracted strings and performing <a href="https://docs.scipy.org/doc/scipy/reference/cluster.hierarchy.html">hierarchical clustering</a>, we can also obtain a heuristic grouping of the words into clusters comprising possible lexemes. These clustered words or word forms can then be visualized as a <a href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.hierarchy.dendrogram.html">dendrogram</a>. Here's a dendrogram output by my code for the same example in Hungarian:</p>

<p><center><img src="/img/2025-11-05-Fig3.png" alt="Fig3" /></center></p>

<p>Although most of my test runs have used parallel sentences from Tatoeba, data can be ingested from any TSV-formatted file of parallel sentences. I was also able to import some data in <a href="https://en.wikipedia.org/wiki/Kannada">Kannada</a> (a Dravidian language spoken in India) from the <a href="https://github.com/project-anuvaad/anuvaad-parallel-corpus?tab=readme-ov-file">Anuvaad Parallel Corpus</a> and test out my algorithm on it. Here's the resulting dendrogram when I asked it to infer possible translations for the word <code>beautiful</code>:</p>

<p><center><img src="/img/2025-11-05-Fig5.png" alt="Fig5" /></center></p>

<p><a href="#examples-table">Jump to the end of the post</a> for a huge table of examples showing lexeme guesses for a few very common words in several different languages. Though my code is still pretty rough around the edges, I'm very happy with how the results are coming out so far, and I wonder if it has the potential to be developed into something more sophisticated like an unsupervized best-effort lemmatizer for languages lacking established lemmatization tools.</p>

<p>If you're interested, you can check out my code in a Jupyter notebook <a href="https://github.com/franklindyer/lexeme-discovery/blob/main/lexeme-discovery.ipynb">here on Github</a>. I encourage you to play around with it! Parallel sentence data from several sample languages is included in the repo, so no additional downloads (aside from Python packages) should be necessary.</p>

<hr>

<p>Now, here's a more in-the-weeds description of my approach.</p>

<p>The problem under consideration is as follows: given a bunch of sentences in language $L$ whose translations contain a certain word $w$ (or more generally, matching a certain regex), produce one or more "candidate morphemes" in the language $L$ that might serve as translations of $w$. I'm calling this problem "unsupervised" because I'm not using ground truth data (such as dictionaries in various languages) to train any sort of model to recognize words. </p>

<p>My first thought was to use an <a href="https://en.wikipedia.org/wiki/N-gram">n-gram model</a> to analyze common sequences of characters in example sentences. Given a set $S$ of sentences in language $L$ with translations containing the target word $w$, we could tabulate the frequencies of 2-grams or 3-grams among those sentences. Then the "hottest" substrings in each sentence could be identified as the ones containing more high-frequency n-grams on average.</p>

<p><center><img src="/img/2025-11-05-Fig4.png" alt="Fig3" /></center></p>

<p>I implemented this approach and it worked shockingly well for many languages. However, there was a huge drawback for languages like Arabic and Hebrew that have <em>non-contiguous</em> word roots. For instance, in Hebrew, the word for <code>to read</code> has the 3-letter root <code>קרא</code>, and conjugating this verb sometimes involves inserting letters in between: <code>he reads</code> becomes <code>קורא</code>, inserting the letter <code>ו</code>. This is a big problem for the n-grams approach, because when scoring these words in a collection of sentences, the 2-grams <code>קר</code> and <code>קו</code> would <em>compete with each other</em> in the 2-gram frequency count, causing different conjugations of <code>to read</code> to detract from each others' scores.</p>

<p>My immediate next thought was to use an generalized version of n-grams called "skip-grams", in which both contiguous and non-contiguous letter combinations are tabulated, e.g. there might be a frequency category not only for the substring <code>קר</code>, but also an additional category for occurrences of <code>ק</code> and <code>ר</code> separated by one or fewer characters, or by two or fewer characters, and so on. The problem with this approach is that the number of possible categories grows very quickly and it's not obvious what kind of scoring system should be used to take them all into account.</p>

<p>The idea I'm about to describe occurred to me at around midnight one night, and I ended up staying up until about 3am frantically coding up a proof-of-concept - I <em>had to know</em> if it would work! Vector embeddings were fresh in my mind because of a recent online course in NLP, but I had never seen a vector embedding technique applied to individual characters rather than words.</p>

<p>Say $C$ is the set of all characters in the language $L$. These characters might be normalized to avoid distinguishing characters that are "really the same", e.g. capitalized versus lowercase versions of the same letter, or accented versus non-accented variants, etc. Each character $c\in C$ is assigned a unit vector $\phi(v)\in \mathbb R^d$ where $d$ is the dimension of the embedding. These embeddings should either assign orthogonal vectors to different characters (in which case we must have $d\ge |C|$) or <em>very nearly</em> orthogonal vectors to different characters (in which case you can often do with fewer than $|C|$ dimensions). This ensures that different characters are handled independently.</p>

<p>Once we have a character embedding, we define a way of embedding <em>pairs of characters</em> separated by a certain number of indices in a string. This can be defined by a function $\psi:C^2\times {0,\cdots,\ell}\to\mathbb R^d$, where $\psi(c_1,c_2,j)$ is the embedding for $c_1$ followed by $c_2$ after $j$ characters, and $\ell$ is the "lookahead value" determining the maximum level of separation represented by the embedding. I've experimented with a few different options for this embedding, but the general idea is that $\psi(c_1,c_2, i)$ and $\psi(c_1,c_2, j)$ should be somewhat similar to each other, especially when $i,j$ are close, in order to allow embeddings of the same character $c_2$ in slightly different positions after $c_1$ to "constructively interfere" with each other. In this way, $\psi$ acts sort of like a "fuzzy" n-grams frequency table that avoids huge proliferation of frequency categories by allowing some of them to conflate with each other. Further, $\psi(c_1,c_2,i)$ and $\psi(c_1,c_3,j)$ should be orthogonal or near-orthogonal when $c_2\ne c_3$.</p>

<p><center><img src="/img/2025-11-05-Fig6.png" alt="Fig6" /></center></p>

<p>One option I've tried has been <script type="math/tex; mode=display">\psi(c_1,c_2,j) := \cos\Big(\frac{\pi j}{2\ell+1}\Big)\phi(c_2)</script> and another is the following, where $U$ is a unitary matrix that is close to the identity and $\alpha &lt; 1$ is some constant: <script type="math/tex; mode=display">\psi(c_1,c_2,j) := (\alpha U)^j \phi(c_2)</script> Both of these work pretty well, but I suspect that the results can be improved by more intelligently designing the function $\psi$, and this is a detail I want to continue experimenting with.</p>

<p>Next, we define a function $\Psi$ such that $\Psi(i, s)$ gives an embedding combining the character pair embeddings $\psi(s[i], -, -)$ for several of the characters following $s[i]$, up to the character $s[i+\ell]$ at the lookahead threshold: <script type="math/tex; mode=display">\Psi(i, s) := \sum_{j=i}^{i+\ell} \psi(s[i], s[j], j-i)</script> And then, given a whole collection of sentences $S$, we define a combined embedding $\overline{\Psi}(c)$ that, intuitively speaking, summarizes the "average context" of the character $c$ in all of the places it appears in all the sentences of $S$. It is defined as follows: <script type="math/tex; mode=display">\overline{\Psi}(c, S) := \frac{1}{1+\tfrac{|S|}{|\{s\in S: ~ c \in s\}|}}\cdot\sum_{s\in S}\sum_{s[j] = c} \frac{\Psi(j, s)}{\#(c, s)}</script>
</p>

<p>This is an average of all of the embeddings $\Psi(j, s)$ of the positions where the character $c$ appears across all sentences, averaged across different appearances of the character $c$ in each sentence $s$. Making this an average rather than a sum is vital, both because it prevents extremely long sentences from affecting these embeddings disproportionately, and because it prevents high-frequency characters from having much larger embeddings in general. It is also multiplied by a scaling factor punishing characters that occur only in a small number of the sentences in $S$.</p>

<p>Finally, for each sentence $s$ in $S$, each of its characters is scored by calculating the cosine similarity of each character's <em>local embedding</em> in that specific sentence with its <em>global embedding</em> across all of the sentences in $S$. That is: </p>

<p>
<script type="math/tex; mode=display">\text{score}(i, s) = \frac{\overline{\Psi}(c, S)\cdot \Psi(i, s)}{\lVert\overline{\Psi}(c, S)\rVert\cdot \lVert\Psi(i, s)\rVert}</script>
</p>

<p>When a character is followed by sequences of characters that frequently follow it in many of the sentences in $S$, then the vectors $\overline{\Psi}(c, S)$ and $\Psi(i, s)$ should point in similar directions, meaning that $\text{score}(i, s)$ should be larger.</p>

<p>In my scripts, I also apply some final post-processing to the character scores $\text{score}(i, s)$ for each sentence. For one, I scale and translate the scores into the interval $[0,1]$ by subtracting the minimum score and scaling by the difference between the min and max scores. I also smooth the scores across each sentence by taking a windowed average, and apply a power function such as $x\mapsto x^4$ because it accentuates the difference between higher and lower scores. This is how we get the "heatmap" highlighted sentences and graphs showcased earlier. Extracting the words occurring at the peaks of these graphs is how relevant words are extracted from sentences.</p>

<hr>

<p>This technique still has several kinks that need to be worked out. For instance, in its current form, it does not distinguish subsequences that are common within a certain subset of sentences from subsequences that are common throughout <em>the language as a whole</em>. For that reason, the results of the above process often contain some irrelevant high-frequency strings corresponding to common words similar to <code>the</code>, <code>a/an</code> and <code>I</code> in English, for example. The same goes for the names <code>Tom</code> and <code>Mary</code>, which are <em>extremely common</em> in the Tatoeba corpus (to the point of being an inside joke of the Tatoeba community). Perhaps character scores could be modified by penalizing characters whose local embeddings are too similar to their global embedding in the language as a whole.</p>

<p>On a similar note, even if a certain word is not common in the language as a whole, it may <em>co-occur</em> very commonly with the target word. Consider for instance the words <code>read/reads/reading</code> and <code>book</code>. Naturally, they co-occur in a lot of the English sentences of the Tatoeba corpus, so that this technique might be likely to, say, mis-identify the Hungarian word for <code>book</code> as an appropriate translation of <code>to read</code>. I still haven't made up my mind about how to remedy this issue.</p>

<p>Finally, there is a key type of deduction that we use easily when manually inferring words' meanings, but my vector method does not take advantage of. Let me illustrate it with another example. Consider the following parallel sentences in English and Latvian. From these sentences, can you guess a translation for the word <code>milk</code>?</p>

<table>
<thead>
<tr>
<th>English</th>
<th>Latvian</th>
</tr>
</thead>
<tbody>
<tr>
<td>No, I never drink coffee with milk.</td>
<td>Nē, es nekad nedzeru kafiju ar pienu.</td>
</tr>
<tr>
<td>Boris never confronted Rima.</td>
<td>Boriss nekad nestājās pretī Rimai.</td>
</tr>
<tr>
<td>Don't drink alcohol.</td>
<td>Nedzeriet alkoholu.</td>
</tr>
<tr>
<td>I didn't drink any coffee today.</td>
<td>Es šodien nedzēru kafiju.</td>
</tr>
<tr>
<td>Do you actually like your coffee with salt?</td>
<td>Vai jums tiešām garšo kafija ar sāli?</td>
</tr>
<tr>
<td>No, I can't.</td>
<td>Nē, es nevaru.</td>
</tr>
</tbody>
</table>

<p>You could probably infer that <code>pienu</code> means milk even though it only appears in one of these sentences. This is because the remaining words in that sentence also appear in at least one of the other sentences, but <code>milk</code> does not appear in any of their English translations. That is, we have applied a process of elimination to deduce a translation for the word <code>milk</code>, which is a heuristic that my code does not (yet) attempt to use.</p>

<p>To sum up, the things I'd still like to improve, in brief, are:</p>

<ul>
<li>find a way of dealing with overrepresented named entities in the Tatoeba corpus, e.g. Tom and Mary</li>
<li>penalize common letter combinations throughout the language</li>
<li>come up with a way to filter out words that commonly co-occur with a target word</li>
<li>incorporate an add-on that also takes into account eliminative strategies </li>
</ul>

<hr>

<p><a id="examples-table"></a></p>

<p>Here's a big fat table showing my algorithm's output for a few common words in several different languages, in case you would like to get a feel for how well it works and the kinds of errors it makes. I recommend Wikitionary for looking up the meanings of these words if you want to check their definitions for accuracy.</p>

<table><tr><td></td><td>dog</td><td>cat</td><td>book</td><td>bread</td><td>water</td><td>milk</td><td>home</td><td>day</td><td>eat</td><td>sleep</td><td>read</td><td>black</td><td>white</td><td>big</td><td>small</td></tr><tr><td>ber<br>(Berber)</td><td>aydinni<br>uydinni<br>aydi<br>aydia<br>uydi<br>aydinneɣ<br>aydinnek<br>aydinnes<br>aydiinu<br>weydi</td><td>amcicnni<br>umcicnni<br>amcica<br>amcic<br>umcic<br>amuccnni<br>amcicinu<br>imucca<br>yimucca<br>imcac</td><td>adlisnni<br>udlisnni<br>idlisen<br>yidlisen<br>adlis<br>adlisa<br>yedlisen<br>adlisnnes<br>adlisinu<br>udlis</td><td>aɣrum<br>uɣrum<br>weɣrum<br>aɣrumnni<br>uɣṛum<br>aɣrumnnes<br>weɣrumnni<br>weɣruminu<br>aqbur<br>ara</td><td>waman<br>wamana<br>aman<br>watay<br>yeḥman<br>amanaya<br>amannni<br>amandin<br>mani<br>ameqqran</td><td>akeffay<br>akeffaya<br>ukeffay<br>akeffaynni<br>ukeffaynni<br>ukeffayis<br>akeffaynnek<br>ayefki<br>uyefki<br>yefkaiyid</td><td>ɣer<br>ɣef<br>deg<br>seg<br>yedda<br>yebda<br>yella<br>yelli<br>taddart<br>tamaneɣt</td><td>wass<br>ass<br>assa<br>wussan<br>ussan<br>ussana<br>asmi<br>assnni<br>assnsen<br>yessen</td><td>isett<br>nsett<br>ttetteɣ<br>ttetten<br>setteɣ<br>setten<br>teččed<br>teččeḍ<br>iḥemmel<br>ikemmel</td><td>teṭṭes<br>yeṭṭes<br>neṭṭes<br>yeṭṭsen<br>yeḍḍes<br>teṭṭseḍ<br>teṭṭsed<br>yettaṭṭas<br>yelzem<br>yiḍes</td><td>yeqqar<br>yeqqard<br>yeɣra<br>yeɣrad<br>yeɣri<br>adlis<br>adlisa<br>udlis<br>idlisen<br>yidlisen</td><td>aberkan<br>taberkant<br>iberkanen<br>tiberkanin<br>krayellan<br>tsednan<br>aberqemmuc<br>dakken<br>asgainna<br>ayisnnek</td><td>amellal<br>umellal<br>tamellalt<br>imellalen<br>yimellalen<br>tmellalt<br>mellul<br>tmellalin<br>timellalin<br>mellulet</td><td>tameqqrant<br>tameqrant<br>ameqran<br>ameqqran<br>ameqṛan<br>timeqqranin<br>timeqranin<br>imeqranen<br>meqqren<br>aḥeqqar</td><td>amecṭuḥ<br>tamecṭuḥt<br>mecṭuḥit<br>mecṭuḥet<br>imecṭuḥen<br>tameẓyant<br>tamurt<br>taḥanut<br>teɣlust<br>anect</td></tr><tr><td>ell<br>(Greek)</td><td>σκύλος<br>σκύλους<br>σκύλο<br>σκύλου<br>σκυλί<br>σκυλιά<br>δύσκολο<br>του<br>σου<br>σκότωσε</td><td>γάτα<br>γάτας<br>γάλα<br>γάτες<br>γάτος<br>είναι<br>είσαι<br>φοβάται<br>κοιμάται<br>τα</td><td>βιβλίο<br>βιβλίου<br>βιβλία<br>τίτλος<br>έβαλες<br>βάλε<br>το<br>του<br>ιστορικά<br>ανήκει</td><td>ψωμί<br>ψωμιού<br>σκορδόψωμο<br>μέρα<br>κάνω<br>αυτοί<br>τομ<br>μισό<br>έκοψε<br>είναι</td><td>νερό<br>νερά<br>νερού<br>άερα<br>πίνει<br>πίνεις<br>καλύτερο<br>είναι<br>έργα<br>δεν</td><td>γάλα<br>για<br>υγεία<br>σόγιας<br>λίγο<br>αλλεργικός</td><td>σπίτι<br>στις<br>πάτε<br>πόδια<br>είναι<br>τεράστιου<br>ποια<br>παιδιά<br>στο<br>σπό</td><td>μέρα<br>ημέρα<br>μέσα<br>μέρες<br>ημέρες<br>μέχρι<br>χώρα<br>σήμερα<br>μια<br>μία</td><td>τρώνε<br>τρώει<br>να<br>ένα<br>τρώω<br>τομ<br>τον<br>φάω<br>φάε<br>τα</td><td>κοιμάμαι<br>κοιμάται<br>κοιμάσαι<br>κοιμήθηκα<br>κοιμήθηκαν<br>κοιμήθηκε<br>κοιμήθηκες<br>κοιμόταν<br>κοιμούνται<br>κοιμηθεί</td><td>διαβάζει<br>διαβάζεις<br>διαβάσει<br>διαβάσεις<br>διαβάσω<br>διαβάζω<br>διάβασα<br>διάβασμα<br>διάβαζα<br>διάβασε</td><td>μαύρο<br>μαύρος<br>μαύρα<br>μαύρη<br>μαύρες<br>τομ<br>του<br>τον<br>το<br>αγοριού</td><td>άσπρο<br>άσπρος<br>άσπρα<br>άσπρη<br>άσπρους<br>εκείνα<br>είναι<br>εμφανίζεται<br>έναν<br>ένας</td><td>μεγάλο<br>μεγάλος<br>μεγάλοι<br>μεγάλα<br>μεγάλη<br>μεγάλε<br>μεγάλες<br>μέγαλος<br>μεγαλύτερη<br>μεγαλουπόλεις</td><td>μικρός<br>μικρό<br>μικρή<br>μικρά<br>μικρού<br>είναι<br>μεσαία<br>μένα<br>ένα<br>ενός</td></tr><tr><td>hun<br>(Hungarian)</td><td>kutyát<br>kutyád<br>kutyám<br>kutyák<br>kutyákat<br>kutyámat<br>kutyáját<br>kutyánkat<br>kutyája<br>kutyánk</td><td>macskákat<br>macskádat<br>macska<br>macskája<br>macskát<br>macskám<br>macskád<br>macskákért<br>macskával<br>macskánk</td><td>könyvet<br>könyveit<br>könyvét<br>könyvei<br>könyved<br>könyvek<br>könyve<br>könyveket<br>könyvedet<br>könyveim</td><td>kenyeret<br>kenyérhez<br>kenyérre<br>kenyérben<br>kenyerünk<br>bundáskenyeret<br>kenyér<br>kenyérből<br>kent<br>milyen</td><td>vizet<br>vizem<br>vized<br>vízen<br>vízben<br>vízzel<br>vízhez<br>vízre<br>vízbe<br>vizünk</td><td>tejet<br>tejed<br>tejjel<br>tehenet<br>tejből<br>tej<br>teheneket<br>vajat<br>fejni<br>sajt</td><td>otthon<br>itthon<br>otthonom<br>hazafele<br>hazafelé<br>otthonukról<br>haza<br>házat<br>tom<br>tomi</td><td>nap<br>napig<br>napok<br>napot<br>napon<br>napja<br>napom<br>napod<br>napokra<br>naponta</td><td>eszem<br>eszel<br>eszik<br>eszi<br>szeretnél<br>szeretnék<br>esznek<br>eszünk<br>vettem<br>ettem</td><td>aludni<br>elaludni<br>aludnom<br>alszik<br>alszok<br>aludj<br>aludt<br>aludjunk<br>aludtunk<br>aludtam</td><td>olvastad<br>olvastam<br>olvassam<br>olvasni<br>elolvasni<br>olvasod<br>olvasok<br>olvasom<br>olvasol<br>elolvastam</td><td>fekete<br>feketébe<br>feketék<br>feketében<br>felhőket<br>koromfekete<br>szeretem<br>nekem<br>feketepiacról<br>végezte</td><td>fehér<br>fehérre<br>fehérbe<br>falfehér<br>fehérnél<br>fehérbor<br>elfehéredik<br>megfehéredett<br>festette<br>fordult</td><td>nagy<br>vagy<br>nagyon<br>nagyok<br>mary<br>vagyok<br>egy<br>nagyvárosban<br>nagyvárosok<br>hogyan</td><td>kicsi<br>kocsim<br>kicsiben<br>kisvárosban<br>kisvárosból<br>kis<br>cicije<br>kisbicskát<br>szókincsed<br>kilátást</td></tr><tr><td>hye<br>(Armenian)</td><td>շունը։<br>շունը<br>շունդ<br>շունն<br>շուն<br>անունը<br>շանը<br>շանը։<br>շան։<br>ունի</td><td>կատուն<br>կատուն։<br>կատու։<br>կատուս<br>կատու<br>կատուները<br>կատուները։<br>կատուներ<br>կատուների<br>կատվին։</td><td>գիրքը։<br>գիրքը<br>գրքեր<br>գրքերը<br>գրքերն<br>գրքեր։<br>գիրքն<br>գիրք<br>գրել<br>գրքում։</td><td>հաց<br>հացը<br>հաց։<br>հացն<br>հացը։<br>գնեցի։<br>գնեց։<br>գնելիս։<br>առավ։<br>պատվիրեցի։</td><td>ջուր<br>ջուրը<br>ջուր։<br>ջուրը։<br>մաքուր<br>նոր<br>ունի<br>ջրով<br>խմում։<br>ու</td><td>կաթը<br>կաթ<br>կաթի<br>կաթ։<br>կաթը։<br>կատուն<br>խմել։<br>խմել<br>եմ<br>են</td><td>տուն<br>տուն։<br>տանն<br>տա՞նն<br>տանը<br>տանը։<br>տան<br>շուտ<br>տանել։<br>յաննին</td><td>երեկ<br>երեք<br>ամեն<br>մենք<br>մերին<br>երբեք<br>այն<br>տանն<br>համար<br>նրան։</td><td>ուտում։<br>ուտու՞մ։<br>ուտում<br>ուտո՞ւմ<br>ուտու՞մ<br>ուզում<br>ուտել։<br>ուտես։<br>ուտելու<br>ուտելու։</td><td>քնում։<br>քնում<br>քնել։<br>քնեք։<br>քնելը<br>քնեց։<br>քնո՞ւմ<br>քնել<br>քնեցի<br>քնեցի։</td><td>կարդացել<br>կարդացե՞լ<br>կարդում<br>կարդում։<br>կարդո՞ւմ<br>կարդացել։<br>կարդալ<br>կարդալ։<br>կարդա։<br>կարդաց</td><td>սև<br>սա<br>ես<br>այս<br>են։<br>եք։<br>ամեն<br>ամպերով։<br>մեքենան<br>նա</td><td>սպիտակ<br>սպիտակ։<br>պատերը<br>պատը<br>տունը։<br>սա<br>առյուծը<br>է։</td><td>մեծ<br>մե՞ծ<br>մեծ։<br>մենք<br>ամեն<br>է։<br>չէ։<br>են։<br>եմ<br>աչքեր</td><td>փոքր<br>փոքրիկ<br>բնակարանը<br>բառարանը<br>է։<br>էր։<br>որքա՞ն<br>մեր<br>երկիր<br>էր</td></tr><tr><td>ind<br>(Indonesian)</td><td>anjing<br>anjingku<br>anjingmu<br>anjingnya<br>ingin<br>jangan<br>anaknya<br>anggur<br>siang<br>makanan</td><td>kucing<br>kucingku<br>kucingmu<br>kucingnya<br>bukan<br>makan<br>temukan<br>ikan<br>menyukai<br>ini</td><td>buku<br>bukuku<br>bukumu<br>bukan<br>bukunya<br>suka<br>baru<br>bukubuku<br>aku<br>kesukaanmu</td><td>roti<br>rotinya<br>dari<br>tom<br>itu<br>turun<br>wanita<br>memberikan<br>air<br>mentega</td><td>airnya<br>air<br>dari<br>hari<br>ada<br>udara<br>mandi<br>mineral<br>sendiri<br>pantai</td><td>susu<br>susunya<br>sudah<br>sebelum<br>nasi<br>sapi<br>dua<br>setiap<br>dari<br>di</td><td>rumah<br>kerumah<br>rumahmu<br>rumahku<br>rumahnya<br>sebuah<br>hujan<br>bukan<br>apakah<br>pulang</td><td>hari<br>sehari<br>harimu<br>hasil<br>harga<br>nasi<br>hampir<br>seharian<br>harihari<br>kemarin</td><td>makan<br>akan<br>makanan<br>memakan<br>dimakan<br>maukah<br>malam<br>ikan<br>mana<br>kacang</td><td>tidur<br>tertidur<br>tidurlah<br>tidak<br>ribut<br>yaitu<br>menidurkanku<br>badak<br>dua<br>itu</td><td>membaca<br>membacakan<br>dibaca<br>beberapa<br>baca<br>dibacanya<br>majalah<br>sebuah<br>bukunya<br>padaku</td><td>hitam<br>kita<br>wanita<br>minum<br>tanpa<br>itu<br>melihat<br>pakaian<br>tikus<br>putih</td><td>putih<br>seputih<br>batubatu<br>hitam<br>salju<br>itu<br>ini</td><td>besar<br>sebesar<br>gambar<br>sejajar<br>semua<br>seluas<br>osaka<br>sebuah<br>sebelum<br>terkadang</td><td>kecil<br>memiliki<br>sempit<br>lakilaki<br>mencarikan<br>terlalu<br>kita<br>tetapi<br>tinggal<br>ini</td></tr><tr><td>isl<br>(Icelandic)</td><td>hundinn<br>hundurinn<br>hundinum<br>hundanna<br>hundarnir<br>hundur<br>kötturinn<br>hundasýningu<br>eigandinn<br>hundar</td><td>kötturinn<br>köttinn<br>köttur<br>hundurinn<br>maðurinn<br>kettir<br>ketti<br>kattar<br>kettinum<br>kött</td><td>bókina<br>bókin<br>bókinni<br>bók<br>bóka<br>bókarinnar<br>bækurnar<br>bækur<br>tekur<br>kemur</td><td>brauð<br>brauðbita<br>borðarðu<br>borðaði<br>borða<br>að<br>með<br>er</td><td>vatn<br>vatns<br>vatni<br>vatnið<br>vatninu<br>vatnsglas<br>kranavatn<br>vertu<br>flöskunni<br>fötunni</td><td>mjólk<br>mjólkar</td><td>heima<br>heim<br>heiman<br>heimilið<br>eins<br>heimabæinn<br>til<br>mig<br>minnir<br>er</td><td>daginn<br>dagurinn<br>dagsins<br>dag<br>daga<br>dagana<br>enginn<br>degi<br>segir<br>lengi</td><td>borðar<br>borða<br>borðað<br>borðaði<br>borðum<br>borðarðu<br>orðin<br>borðaðirðu<br>brauð<br>að</td><td>sofa<br>sofið<br>svefni<br>svefns<br>sofandi<br>sofnaði<br>svefn<br>svafst<br>svaf<br>hafa</td><td>lesa<br>lesið<br>þessa<br>lestu<br>skáldsöguna<br>skáldsögu<br>elska<br>lestur<br>enska<br>þessar</td><td>svartir<br>svartur<br>svört<br>svart<br>svörtu<br>svörtum<br>kolsvart<br>svartklædd<br>var<br>stór</td><td>hvítar<br>hvíta<br>hvítt<br>hvít<br>hvítur<br>hvítklædda<br>hvað<br>þetta<br>hvítvínsglas<br>eða</td><td>stórt<br>stór<br>stóra<br>stóri<br>er<br>ert<br>eru<br>stóran<br>stórir<br>en</td><td>lítill<br>lítil<br>lítið<br>litlum<br>litlir<br>litla<br>hluti<br>með lítið<br>bill<br>leit</td></tr><tr><td>kan<br>(Kannada)</td><td>ಪ್ರಾಣಿಗಳ<br>ಪ್ರಾಣಿಗಳು<br>ಇಲ್ಲಿವೆ<br>ಇಲ್ಲಿಗೆ<br>ಮಾತ್ರವಲ್ಲದೆ<br>ಮಾತ್ರವಲ್ಲದೇ<br>ಇಲ್ಲಿ<br>ಇಲ್ಲಿನ<br>ಪ್ರಾಣಿಗಳಾದ<br>ಕತ್ತೆ</td><td>ಚಿರತೆಗಳು<br>ಚಿರತೆಗಳ<br>ಕಾಡು<br>ಕಂಡು<br>ಬೆಕ್ಕು<br>ಬೆಕ್ಕಿನ<br>ಶ್ರೇಣಿಗಳನ್ನು<br>ಪ್ರಾಣಿಗಳನ್ನು<br>ಕಾಣಬಹುದು<br>ಕಾಣಬಹದು</td><td>ಪುಸ್ತಕಗಳು<br>ಪುಸ್ತಕಗಳ<br>ಪುಸ್ತಕಗಳನ್ನು<br>ಪುಸ್ತಕವನ್ನು<br>ಪ್ರವಾಸಿಗರು<br>ಪ್ರವಾಸಿಗರಿಗೆ<br>ಮತ್ತು<br>ವಸ್ತು<br>ಎತ್ತರ<br>ಪುಸ್ತಕಗಳಿವೆ</td><td>ಹಾಗು<br>ಪ್ರಶಾಂತ</td><td>ಮತ್ತು<br>ಮುತ್ತು<br>ಮತ್ತೆ<br>ಹೊತ್ತು<br>ಪ್ರವಾಸಿಗರ<br>ಪ್ರವಾಸಿಗರು<br>ಮತ್ತೊಂದು<br>ಮರೆತು<br>ಸುತ್ತಲು<br>ನೀರಿನ</td><td>ಮಾಡಿಸಲಾಗುತ್ತದೆ<br>ಮಾಡಲಾಗುತ್ತದೆ<br>ನೀಡಲಾಗುತ್ತದೆ<br>ನಂಬಲಾಗುತ್ತದೆ<br>ಪೂಜಿಸಲಾಗುತ್ತದೆ<br>ಹಾಲನ್ನು<br>ಹೆಸರನ್ನು<br>ಮತ್ತು<br>ಭಕ್ತರು<br>ಮಾತ್ರ</td><td>ಅಳಿವನಂಚಿನಲ್ಲಿರುವ<br>ಅಳಿವಿನಂಚಿನಲ್ಲಿರುವ<br>ಮತ್ತು<br>ಮುತ್ತ<br>ಪಕ್ಷಿಗಳಿವೆ<br>ಪಕ್ಷಿಗಳಿಗೆ<br>ಕತ್ತೆ<br>ಪ್ರಾಣಿಗಳ<br>ಪ್ರಾಣಿಗಳು<br>ಮನೆಯಾಗಿದೆ</td><td>ದಿನಗಳಲ್ಲೂ<br>ದಿನಗಳಲ್ಲಿ<br>ಬೆಳಗ್ಗೆ<br>ಬೆಳಿಗ್ಗೆ<br>ಆಚರಿಸಲಾಗುತ್ತದೆ<br>ನೆರವೇರಿಸಲಾಗುತ್ತದೆ<br>ತೆರೆದಿರುತ್ತಿದ್ದು<br>ತೆರೆದಿರುತ್ತದೆ<br>ಮತ್ತು<br>ಮತ್ತೆ</td><td>ಸೇವಿಸುತ್ತಾರೆ<br>ಸಲ್ಲಿಸುತ್ತಾರೆ<br>ಆಹಾರಗಳನ್ನು<br>ಆಹಾರವನ್ನು<br>ಪ್ರವಾಸಿಗರಿಗೆ<br>ಪ್ರವಾಸಿಗರೂ<br>ಕೊಲ್ಲುತ್ತಾರೆ<br>ಮಾಡಬಹುದು<br>ಮಾಡುವುದು<br>ತಿನ್ನುತ್ತಾರೆ</td><td>ಇಲ್ಲಿ<br>ರಲ್ಲಿ<br>ಇಲ್ಲಿಗೆ<br>ಮಲಗಿರುವ<br>ಮಲಗಿರುವಂತಹ<br>ಒದಗಿಸುತ್ತದೆ<br>ತೋರಿಸುತ್ತದೆ<br>ಮಲಗುವ<br>ಎಲ್ಲಾ<br>ಎಲ್ಲರ</td><td>ಸೂರ್ಯಾಸ್ತಮಾನವನ್ನು<br>ಸೂರ್ಯಸ್ನಾನವನ್ನು<br>ಇಲ್ಲಿನ<br>ಇಲ್ಲಿಯ<br>ಇಲ್ಲಿ<br>ಸ್ವಾಗತವನ್ನು<br>ಕ್ರಾಂತಿಯನ್ನೇ<br>ನಲ್ಲಿ<br>ಶಾಸನವೊಂದನ್ನು<br>ಹೆಸರುಗಳನ್ನು</td><td>ಕಪ್ಪು<br>ಕೆಂಪು<br>ಕಟ್ಟು<br>ಕಪ್ಪುಕರಡಿ<br>ಇಲ್ಲಿ<br>ಇಲ್ಲಿನ<br>ಮತ್ತು<br>ಮತ್ತೊಂದು<br>ರಫ್ತು<br>ಬೆಕ್ಕು</td><td>ಬಿಳಿ<br>ಬಿಳಿಯ<br>ನಿರ್ಮಿಸಲಾಗಿದೆ<br>ನಿರ್ಮಿಸಲಾಗಿರುವ<br>ಮತ್ತು<br>ಮತ್ತೊಂದು<br>ವಸ್ತು<br>ನಿರ್ಮಿಸಲ್ಪಟ್ಟಿದೆ<br>ಪ್ರವಾಸಿಗರು<br>ಪ್ರವಾಸಿಗರನ್ನು</td><td>ದೊಡ್ಡ<br>ದೊಡ್ದ<br>ಪ್ರವಾಸಿಗರ<br>ಪ್ರವಾಸಿಗರು<br>ಇಲ್ಲಿ<br>ಇಲ್ಲಿನ<br>ಇಲ್ಲಿದೆ<br>ಇಲ್ಲಿಗೆ<br>ನಲ್ಲಿ<br>ದೊಡ್ಡದಾದ</td><td>ಸ್ಥಳದಲ್ಲಿರುವ<br>ಸಮೀಪದಲ್ಲಿರುವ<br>ಇಲ್ಲಿವೆ<br>ಇಲ್ಲಿಗೆ<br>ಅಲೀಗಢದಲ್ಲಿರುವ<br>ದೂರದಲ್ಲಿರುವ<br>ಪ್ರವಾಸಿಗರು<br>ಪ್ರವಾಸಿ<br>ರಸ್ತೆಯಲ್ಲಿರುವ<br>ಜಿಲ್ಲೆಯಲ್ಲಿರುವ</td></tr><tr><td>kat<br>(Georgian)</td><td>ძაღლია<br>ძაღლი<br>ძაღლის<br>ძაღლს<br>ძაღლები<br>ძალიან<br>ძაღლთან<br>აი<br>არ</td><td>კატა<br>კატები<br>არის</td><td>წიგნი<br>წიგნის<br>წიგნია<br>წიგნში<br>წიგნს<br>წიგნებია<br>წიგნები<br>წიგნების<br>წიგნმა<br>ისინი</td><td>პური<br>პურს<br>ვჭამ<br>ჭამს<br>მაქვს<br>ვიყიდე</td><td>წყალს<br>წყალი<br>წყლის</td><td>რძე<br>რძეს<br>რძისგან<br>სახლისკენ<br>მე</td><td>სახლში<br>სახლშია<br>სახლი<br>სახლიდან<br>სახლისკენ<br>ახლა<br>ლეილას<br>დარჩით<br>ისინი<br>დაბნელებამდე</td><td>დღე<br>დღეს<br>დღეა<br>დღეში<br>დღის<br>ყოველდღე<br>რამდენ<br>მე<br>ბარდება<br>ეს</td><td>ჭამს<br>ჭამას<br>ვჭამ<br>ვჭამთ<br>ჭამა<br>გიჭამია<br>გვიჭამია<br>მიირთვა<br>მიირთვი<br>დესერტი</td><td>მძინავს<br>სძინავს<br>გძინავს<br>დაეძინა<br>დაიძინა<br>ძინავთ<br>გვეძინა<br>ეძინათ<br>მეძინა<br>დასაძინებლად</td><td>კითხულობენ<br>კითხულობს<br>ვკითხულობ<br>წაიკითხა<br>წავიკითხავ<br>კითხვა</td><td>ძაღლი<br>შავია</td><td>არის<br>თეთრი</td><td>დიდი<br>სახლი<br>ის</td><td>პატარა<br>მდინარის<br>მახლობლად<br>სახლში<br>ტომი</td></tr><tr><td>lit<br>(Lithuanian)</td><td>šunis<br>šunys<br>šuns<br>šunį<br>šunų<br>šunims<br>šuo<br>šuniui<br>nusipirkau<br>nusipirkti</td><td>katės<br>katė<br>katę<br>kates<br>katinai<br>katinas<br>katei<br>kėdės<br>katiną<br>kam</td><td>knygą<br>knyga<br>knygų<br>knygas<br>knygos<br>knygoje<br>mokiniai<br>naudinga<br>laikai<br>yra</td><td>duoną<br>duona<br>duonos<br>duok<br>parduoda<br>kurią<br>nori<br>nuo<br>pikto<br>žinau</td><td>vandens<br>vandenį<br>vandeniu<br>vanduo<br>vienas<br>sunkesnis<br>sūresnis<br>daviau<br>kareiviai<br>negalėtume</td><td>pieno<br>pieną<br>pienu<br>pienas<br>geria<br>geriu<br>neduoda<br>išgerti<br>nori<br>palaukti</td><td>namo<br>namų<br>namie<br>namai<br>mano<br>esame<br>neeiname<br>neturite<br>mane<br>taip</td><td>dienų<br>dieną<br>diena<br>dienas<br>viena<br>dienos<br>dienoms<br>dienom<br>dirba<br>kasdien</td><td>valgyti<br>valgti<br>pavalgyti<br>valgėte<br>valgei<br>valgom<br>valgo<br>suvaglyti<br>nevalgo<br>nevalgė</td><td>miegoti<br>pamiegoti<br>miegojai<br>miegojo<br>miega<br>miego<br>miegu<br>miegi<br>miegojau<br>miegantį</td><td>skaityti<br>perskaityti<br>skaitai<br>skaityk<br>perskaitysi<br>perskatyti<br>skaitoma<br>neskaityk<br>skaitau<br>perskaitysiu</td><td>juodas<br>juoda<br>juodai<br>juodų<br>juodo<br>juodą<br>juodus<br>juodos<br>juokiasi<br>lova</td><td>balta<br>baltas<br>baltą<br>balto<br>matau<br>pabalo</td><td>didelis<br>didelias<br>didelių<br>dideli<br>didelė<br>didelį<br>viena</td><td>mažas<br>mažos<br>maža<br>mažame<br>matai<br>namas<br>maži<br>mažą<br>mažoje<br>labai</td></tr><tr><td>lvs<br>(Latvian)</td><td>suni<br>suns<br>sunim<br>suņi<br>mans<br>suņu<br>mani<br>manu<br>suņiem<br>sāka</td><td>kaķis<br>kaķus<br>kaķim<br>kaķi<br>kaķa<br>mazākais<br>raibais<br>tikai<br>kaklu<br>vairāk</td><td>grāmata<br>grāmatu<br>grāmatas<br>grāmatām<br>smaga<br>man<br>tava<br>ir<br>tā</td><td>maizi<br>maizes<br>rupjmaizi<br>kvass<br>esi<br>kas<br>ar<br>ir</td><td>ūdens<br>ūdeni<br>ūdenī<br>ūdenim<br>ūdenstilpē<br>minerālūdens<br>iedevu<br>gruntsūdeņus<br>putni<br>nedzeru</td><td>pienu<br>piena<br>piens<br>rūgušpienu<br>priekšroku<br>reta<br>nedzer<br>pazīstama<br>un<br>ir</td><td>mājās<br>mājām<br>atstājis<br>atstāja<br>nerunājam<br>aizmirsa<br>sekoja<br>savu<br>angliski<br>ej</td><td>dienu<br>diena<br>dienā<br>vienu<br>dienas<br>dienai<br>ēdiena<br>dienās<br>viena<br>dienām</td><td>ēstu<br>ēst<br>ēd<br>ēdu<br>mēs<br>ēdīs<br>ēdīsi<br>ēdis<br>neēdu<br>ēdīšu</td><td>gulēju<br>gulēšu<br>gulēja<br>gulēji<br>gulēt<br>pagulēt<br>gulēsi<br>guļot<br>guļ<br>guļu</td><td>lasīt<br>lasītu<br>lasot<br>grāmatas<br>grāmata<br>lasīja<br>lasīju<br>izlasītu<br>lasījis<br>lasu</td><td>melns<br>melnas<br>melnos<br>melnās<br>melna<br>melnā<br>melnu<br>melnai<br>melnie<br>melnajā</td><td>balts<br>baltu<br>baltā<br>balto<br>baltais<br>bars<br>melnas<br>bikses<br>tas<br>straumi</td><td>liela<br>lielu<br>lieli<br>lielā<br>liels<br>lielās<br>lielām<br>saule<br>saules<br>tai</td><td>mazas<br>maza<br>mazu<br>mazs<br>mazā<br>mana<br>manam<br>maziem<br>marija<br>redzama</td></tr><tr><td>mkd<br>(Macedonian)</td><td>кучето<br>кучево<br>кучиња<br>кучињата<br>куче<br>кучка<br>куки<br>кое<br>очекуваше<br>чуваше</td><td>мачкава<br>мачката<br>мачките<br>мачка<br>мачки<br>сака<br>сакам<br>кучиња<br>имам<br>таа</td><td>книгата<br>книгава<br>книги<br>книга<br>книгите<br>читаш<br>дека<br>магии<br>премногу<br>на</td><td>леб<br>леп<br>лебот<br>треба<br>ли<br>е<br>со<br>во<br>од<br>на</td><td>водата<br>водава<br>вода<br>додај<br>додека<br>воденица<br>навадам<br>доволна<br>создаде<br>да</td><td>млеко<br>млекото<br>млеково<br>мене<br>козјо<br>пиеме<br>смееме<br>колку<br>ако<br>може</td><td>дома<br>дом<br>мама<br>додека<br>том<br>има<br>домашните<br>одам<br>одиме<br>да</td><td>ден<br>дена<br>еден<br>денес<br>денов<br>денот<br>дедо<br>арен<br>две<br>дневно</td><td>јадам<br>јадат<br>јадеш<br>јаде<br>јадел<br>јадеме<br>јадеше<br>јади<br>јадење<br>јадено</td><td>спијат<br>спијам<br>спие<br>спиев<br>спиеш<br>спиел<br>спиеле<br>спиење<br>спиеше<br>спиј</td><td>прочитам<br>прочита<br>прочиташ<br>прочитал<br>прочитав<br>читам<br>чита<br>читаш<br>читал<br>читаше</td><td>црни<br>црно<br>црна<br>црн<br>црниот<br>том<br>тоа<br>црнец<br>црната<br>црнокос</td><td>црнобели<br>црнобело<br>бели<br>белци<br>бела<br>бело<br>бел<br>белата<br>белиот<br>врело</td><td>голема<br>големо<br>големи<br>голем<br>том<br>тоа<br>поента<br>помогна<br>главното<br>главната</td><td>мала<br>мали<br>мало<br>мал<br>малата<br>табла<br>премала<br>премали<br>премало<br>малечка</td></tr><tr><td>nob<br>(Norwegian Bokmal)</td><td>hunden<br>hundene<br>hunder<br>under<br>hund<br>hun<br>rundt<br>nesten<br>sovende<br>hans</td><td>katten<br>kattene<br>katter<br>katt<br>klatre<br>hater<br>etter<br>svarte<br>kanskje<br>elsker</td><td>bøker<br>bøger<br>bøkene<br>boken<br>bokas<br>boka<br>bok<br>noen<br>ønsker<br>denne</td><td>brød<br>brødet<br>dere<br>denne<br>drar<br>ludder<br>allerede<br>de<br>er<br>egentlig</td><td>vann<br>vanne<br>vannet<br>mannen<br>vanndamp<br>enn<br>var<br>renne<br>varer<br>plantene</td><td>melk<br>melken<br>melkekyr<br>melkeallergi<br>melkeproduksjon<br>drikker<br>i</td><td>hjem<br>hjemme<br>jeg<br>hele<br>komme<br>kommer<br>hvis<br>rette<br>der<br>deg</td><td>dagen<br>dager<br>dag<br>deg<br>ganger<br>klager<br>dagboken<br>leger<br>lang<br>gang</td><td>spiser<br>spise<br>spiste<br>spises<br>spist<br>spis<br>pisa<br>disse<br>spisesalen<br>pizza</td><td>sovet<br>sover<br>sove<br>sovende<br>hver<br>sov<br>ideer<br>søvn<br>ligger<br>som</td><td>lese<br>leser<br>leste<br>lest<br>eller<br>hele<br>eventyr<br>allerede<br>denne<br>disse</td><td>svart<br>svarte<br>sort<br>var<br>hvit<br>hatt<br>har<br>katten<br>hesten<br>en</td><td>hvit<br>hvite<br>hvitt<br>har<br>var<br>hest<br>katten<br>kanter<br>svart<br>vi</td><td>stort<br>stor<br>store<br>svart<br>som<br>etter<br>sett<br>et<br>er<br>en</td><td>liten<br>lite<br>litt<br>lille<br>gutten<br>den<br>en<br>enn<br>kvinnen<br>enden</td></tr><tr><td>ron<br>(Romanian)</td><td>câinele<br>câinelui<br>câine<br>câini<br>caine<br>câinilor<br>cine<br>câinii<br>inventat<br>nevoie</td><td>pisica<br>pisică<br>pisici<br>pisicii<br>pisicile<br>pipăit<br>scăpat<br>trecea<br>petrece<br>mănâncă</td><td>carte<br>cartea<br>aceasta<br>această<br>care<br>cărți<br>cărții<br>cărui<br>foarte<br>cărțile</td><td>pâinea<br>pâine<br>taie<br>pe<br>proaspătă<br>în<br>ai</td><td>apă<br>apa<br>apei<br>apus<br>proaspăt<br>piatră<br>puțină<br>luxoasă<br>pe<br>era</td><td>laptele<br>lapte<br>poate<br>alerga<br>turnat<br>ea<br>el<br>a</td><td>acasă<br>casă<br>casa<br>școală<br>astăzi<br>șase<br>acum<br>tatăl<br>meargă<br>rămas</td><td>zi<br>azi<br>duminică<br>duminica<br>zile<br>zilele<br>săptămâna<br>săptămânii<br>ai<br>fi</td><td>mănânci<br>mănânc<br>mănânce<br>mănâncă<br>mănâncăți<br>mânca<br>mâncat<br>mâncați<br>mâncăm<br>mâncare</td><td>doarme<br>doarmă<br>dormi<br>dormit<br>dormind<br>dormea<br>dorm<br>adorm<br>dormeau<br>dormeam</td><td>citit<br>citite<br>citito<br>citești<br>citește<br>citim<br>citesc<br>citească<br>citi<br>cartea</td><td>negru<br>negrul<br>negre<br>negri<br>neagră<br>afară<br>mereu<br>fiecare<br>erau<br>grup</td><td>alb<br>albă<br>albe<br>albi<br>ale<br>sau<br>astăzi<br>lebedele<br>umple<br>ca</td><td>mare<br>mari<br>are<br>marile<br>țară<br>tale<br>foarte<br>mărire<br>favoare<br>gaura</td><td>mică<br>mici<br>mic<br>este<br>ești<br>asta<br>există<br>acesta<br>acest<br>camera</td></tr></table>

    <br>
<a href="/">go to homepage</a>
<hr>
<div id="license-statement">The posts on this website are licensed under <a href="https://creativecommons.org/licenses/by-nc/4.0/">CC-by-NC 4.0</a>.</div>
<div id="notbyai"><a href="https://notbyai.fyi/"><img src="/img/written-by-human.png"/><img src="/img/illustrated-by-human.png"/></a></div>
]]></content:encoded>
    </item>
    
    <item>
        <title>Interessante Eigenartigkeiten der russischen Grammatik</title>
        <link>http://franklin.dyer.me/eigenartigkeiten-von-russisch-de.html</link>
        <guid>eigenartigkeiten-von-russisch-de</guid>
        <pubDate>2025-09-01</pubDate>
        <content:encoded type="html"><![CDATA[
    <h2>Interessante Eigenartigkeiten der russischen Grammatik</h2>

<p>Vor fast neun Monaten find ich an, Russisch selbst zu studieren. Anfänglich hatte ich nur vor, das russisches Alphabet und vielleicht ein paar Wörter/Namen zu lernen. Aber nachdem ich anfing, hat es nie aufgehört, sehr interessant zu sein, deswegen habe ich noch nicht damit aufgehört! Letztens bin ich bei Kapitel 22 im Buch <em>The New Penguin Russian Course</em> angekommen.</p>

<p>In diesem Blogeintrag wollte ich einige bestimmte Eigenartigkeiten von der russischen Sprache (besonders im Vergleich zu Englisch, Spanisch und Deutsch) auflisten und besprechen, die mir am interessantesten vorkamen.</p>

<h3>Null-Kopula</h3>

<p>In der Grammatik wird eine Kopula mehr oder weniger als ein Wort (normalerweise ein Verb) definiert, dass das Subjekt eines Sätzes mit einem anderen Substantiv identifiziert, auf eine Kategorie beschränkt, usw. (Der Ausdruck, mit dem den Subjekt identifiziert wird, heißt der "Subjektkomplement".) Zum Beispiel ist das Verb "sein" die hauptsächliche deutsche Kopula und ähnlicherweise das Verb "to be" auf Englisch.</p>

<p>Russisch benutzt doch eine Null-Kopula, das heißt, mann kann das Subjekt eines Sätzes mit einem anderen Substantiv oder Adjektiv ohne weiteres Wort verbinden. Hier unten gibt es ein paar Beispiele:</p>

<table>
<thead>
<tr>
<th>Satz auf Russisch</th>
<th>Satz auf Deutsch</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://tatoeba.org/en/sentences/show/2012228">Я не англичанин.</a></td>
<td>Ich bin kein Engländer.</td>
</tr>
<tr>
<td><a href="https://tatoeba.org/en/sentences/show/13059719">Он танцовщик.</a></td>
<td>Er ist ein Tänzer.</td>
</tr>
<tr>
<td><a href="https://tatoeba.org/en/sentences/show/13106552">Том — мормон.</a></td>
<td>Tom ist ein Mormone.</td>
</tr>
</tbody>
</table>

<p>Manchmal benutzt man den Geviertstrich an Stelle von der Kopula, wie man hier oben im dritten Beispiel sieht. Es ist nicht der Fall, dass es kein Kopulaverb in Russisch gibt, sondern dass es einfach beim Präsens ausgelassen wird. Der Kopulaverb heißt быть und es taucht manchmal in seiner Infinitivform und in seiner Vergangenheitsform auf. Zwar hat es auch eine Präsensform aber diese hat das Futur zu bedeuten. In den meisten Fällen, wo быть auftaucht, muss den Subjektkomplement in den Instrumentalkasus gebeugt werden.</p>

<table>
<thead>
<tr>
<th>Satz auf Russisch</th>
<th>Satz auf Deutsch</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://tatoeba.org/en/sentences/show/10212861">Хочу быть инженером.</a></td>
<td>Ich will ein Ingenieur sein.</td>
</tr>
<tr>
<td><a href="https://tatoeba.org/en/sentences/show/12738426">Он был ленивым.</a></td>
<td>Er war faul.</td>
</tr>
<tr>
<td><a href="https://tatoeba.org/en/sentences/show/8231784">Она будет учительницей.</a></td>
<td>Sie wird eine Lehrerin.</td>
</tr>
</tbody>
</table>

<h3>Relativ kompliziertes Kardinalzahlensystem</h3>

<p>"Relativ kompliziert" ist eine riesige Untertreibung - ich hätte nie ahnen können, dass die Kardinalzahlen eine der kompliziertesten Aspekte der russischen Grammatik ist. Für diejenigen, die den Ausdruck "Kardinalzahl" nicht kennen: das verweist sich auf Zahlwörter, die eine Anzahl an etwas bestimmt. (Auf Deutsch zum Beispiel: "ein Apfel", "zwei Äpfel", "drei Äpfel" usw.) Das steht im Gegensatz zu Ordinalzahlen, die Position von einem Gegenstand in einer Folge. (Auf Deutsch: "erstes Kapitel", "zweites Kapitel", "drittes Kapitel" usw.)</p>

<p>Die Kardinalzahlwörter selbst sind nicht so kompliziert, mindestens nicht komplizierter als in anderen europäischen Sprachen. Hier unten sind einige Beispiele:</p>

<table>
<thead>
<tr>
<th>Zahlwort auf Russisch</th>
<th>Zahl</th>
</tr>
</thead>
<tbody>
<tr>
<td>один</td>
<td>1</td>
</tr>
<tr>
<td>два</td>
<td>2</td>
</tr>
<tr>
<td>три</td>
<td>3</td>
</tr>
<tr>
<td>четыре</td>
<td>4</td>
</tr>
<tr>
<td>пять</td>
<td>5</td>
</tr>
<tr>
<td>шесть</td>
<td>6</td>
</tr>
<tr>
<td>семь</td>
<td>7</td>
</tr>
<tr>
<td>восемь</td>
<td>8</td>
</tr>
<tr>
<td>девять</td>
<td>9</td>
</tr>
<tr>
<td>десять</td>
<td>10</td>
</tr>
<tr>
<td>одиннадцать</td>
<td>11</td>
</tr>
<tr>
<td>двенадцать</td>
<td>12</td>
</tr>
<tr>
<td>тринадцать</td>
<td>13</td>
</tr>
<tr>
<td>четырнадцать</td>
<td>14</td>
</tr>
<tr>
<td>пятнадцать</td>
<td>15</td>
</tr>
<tr>
<td>шестнадцать</td>
<td>16</td>
</tr>
<tr>
<td>семнадцать</td>
<td>17</td>
</tr>
<tr>
<td>восемнадцать</td>
<td>18</td>
</tr>
<tr>
<td>девятнадцать</td>
<td>19</td>
</tr>
<tr>
<td>двадцать</td>
<td>20</td>
</tr>
<tr>
<td>двадцать один</td>
<td>21</td>
</tr>
<tr>
<td>двадцать два</td>
<td>22</td>
</tr>
<tr>
<td>двадцать три</td>
<td>23</td>
</tr>
</tbody>
</table>

<p>Was komplizierter ist, ist die Beugung des Wortes der Gegenstände, die zusammengezählt sind. Für die Zahl 1 und irgendeine Zahl (abgesehen von 11), dessen letzte Ziffer 1 ist, wird das Wort <em>singular</em> und im <em>nominativen Kasus</em> gebeugt. Für die Zahlen 2, 3 und 4 und irgendeine Zahl (abgesehen von 12, 13, 14), dessen letzte Ziffer eine von diesen Zahlen ist, wird das Wort auch <em>singular</em> aber im <em>genitiven Kasus</em> gebeugt. Schließlich werden im Fall von anderen Zahlen das Wort <em>plural</em> und im <em>genitiven Kasus</em> gebeugt. Also, zum Beispiel:</p>

<table>
<thead>
<tr>
<th>Zahlwort auf Russisch</th>
<th>Zahl</th>
<th>Kasus</th>
<th>Anzahl an Äpfel</th>
</tr>
</thead>
<tbody>
<tr>
<td>один</td>
<td>1</td>
<td>nom. sg.</td>
<td>одно яблоко</td>
</tr>
<tr>
<td>два</td>
<td>2</td>
<td>gen. sg.</td>
<td>два яблока</td>
</tr>
<tr>
<td>три</td>
<td>3</td>
<td>gen. sg.</td>
<td>три яблока</td>
</tr>
<tr>
<td>четыре</td>
<td>4</td>
<td>gen. sg.</td>
<td>четыре яблока</td>
</tr>
<tr>
<td>пять</td>
<td>5</td>
<td>gen. pl.</td>
<td>пять яблок</td>
</tr>
<tr>
<td>шесть</td>
<td>6</td>
<td>gen. pl.</td>
<td>шесть яблок</td>
</tr>
<tr>
<td>семь</td>
<td>7</td>
<td>gen. pl.</td>
<td>семь яблок</td>
</tr>
<tr>
<td>восемь</td>
<td>8</td>
<td>gen. pl.</td>
<td>восемь яблок</td>
</tr>
<tr>
<td>девять</td>
<td>9</td>
<td>gen. pl.</td>
<td>девять яблок</td>
</tr>
<tr>
<td>десять</td>
<td>10</td>
<td>gen. pl.</td>
<td>десять яблок</td>
</tr>
<tr>
<td>одиннадцать</td>
<td>11</td>
<td>gen. pl.</td>
<td>одиннадцать яблок</td>
</tr>
<tr>
<td>двенадцать</td>
<td>12</td>
<td>gen. pl.</td>
<td>двенадцать яблок</td>
</tr>
<tr>
<td>тринадцать</td>
<td>13</td>
<td>gen. pl.</td>
<td>тринадцать яблок</td>
</tr>
<tr>
<td>четырнадцать</td>
<td>14</td>
<td>gen. pl.</td>
<td>четырнадцать яблок</td>
</tr>
<tr>
<td>пятнадцать</td>
<td>15</td>
<td>gen. pl.</td>
<td>пятнадцать яблок</td>
</tr>
<tr>
<td>шестнадцать</td>
<td>16</td>
<td>gen. pl.</td>
<td>шестнадцать яблок</td>
</tr>
<tr>
<td>семнадцать</td>
<td>17</td>
<td>gen. pl.</td>
<td>семнадцать яблок</td>
</tr>
<tr>
<td>восемнадцать</td>
<td>18</td>
<td>gen. pl.</td>
<td>восемнадцать яблок</td>
</tr>
<tr>
<td>девятнадцать</td>
<td>19</td>
<td>gen. pl.</td>
<td>девятнадцать яблок</td>
</tr>
<tr>
<td>двадцать</td>
<td>20</td>
<td>gen. pl.</td>
<td>двадцать яблок</td>
</tr>
<tr>
<td>двадцать один</td>
<td>21</td>
<td>nom. sg.</td>
<td>двадцать одно яблоко</td>
</tr>
<tr>
<td>двадцать два</td>
<td>22</td>
<td>gen. sg.</td>
<td>двадцать два яблока</td>
</tr>
<tr>
<td>двадцать три</td>
<td>23</td>
<td>gen. sg.</td>
<td>двадцать три яблока</td>
</tr>
<tr>
<td>двадцать четыре</td>
<td>24</td>
<td>gen. sg.</td>
<td>двадцать четыре яблока</td>
</tr>
<tr>
<td>двадцать пять</td>
<td>25</td>
<td>gen. pl.</td>
<td>двадцать пять яблок</td>
</tr>
</tbody>
</table>

<p>All das geht nur für Kardinalzahlen, die eine Nominalphrase im nominativen oder im akkusativen Kasus bilden. Wenn diese Nominalphrase in einem der anderen vier Kasus ist, dann wird sowohl die Kardinalzahl als auch das Substantiv in diesem bestimmten Kasus gebeugt. Natürlich haben die Zahlwörter selbst auch viele irregulare Kasusdeklinationen:</p>

<table>
<thead>
<tr>
<th>Zahl</th>
<th>nom.</th>
<th>gen.</th>
<th>dat.</th>
<th>inst.</th>
<th>prep.</th>
</tr>
</thead>
<tbody>
<tr>
<td>2</td>
<td>два</td>
<td>двух</td>
<td>двум</td>
<td>двумя</td>
<td>двух</td>
</tr>
<tr>
<td>3</td>
<td>три</td>
<td>трёх</td>
<td>трём</td>
<td>тремя</td>
<td>трёх</td>
</tr>
<tr>
<td>4</td>
<td>четыре</td>
<td>четырёх</td>
<td>четырём</td>
<td>четырмья</td>
<td>четырёх</td>
</tr>
<tr>
<td>5</td>
<td>пять</td>
<td>пяти</td>
<td>пяти</td>
<td>пятью</td>
<td>пяти</td>
</tr>
<tr>
<td>6</td>
<td>шесть</td>
<td>шести</td>
<td>шести</td>
<td>шестью</td>
<td>шести</td>
</tr>
<tr>
<td>40</td>
<td>сорок</td>
<td>сорока</td>
<td>сорока</td>
<td>сорока</td>
<td>сорока</td>
</tr>
<tr>
<td>50</td>
<td>пятьдесят</td>
<td>пятидесяти</td>
<td>пятидесяти</td>
<td>пятьюдесятью</td>
<td>пятидесяти</td>
</tr>
<tr>
<td>90</td>
<td>девяносто</td>
<td>девяноста</td>
<td>девяноста</td>
<td>девяноста</td>
<td>девяноста</td>
</tr>
<tr>
<td>100</td>
<td>сто</td>
<td>ста</td>
<td>ста</td>
<td>ста</td>
<td>ста</td>
</tr>
<tr>
<td>200</td>
<td>двести</td>
<td>двухсот</td>
<td>двумстам</td>
<td>двумястами</td>
<td>двухстах</td>
</tr>
<tr>
<td>300</td>
<td>триста</td>
<td>трёхсот</td>
<td>трёмстам</td>
<td>тремястами</td>
<td>трёхстах</td>
</tr>
</tbody>
</table>

<p>Für etwas so einfach und grundsätzlich wie die Aufzählung von Gegenständen ist das lächerlich kompliziert! Auf Deutsch sowohl als auf Englisch und Spanisch muss man meistens nur ein Kardinalzahlwort und ein Gegenstandswort nebeneinandersetzen.</p>

<h3>Perfektive und imperfektive Verben</h3>

<p>Viele Sprachen machen einen grammatischen Unterschied zwischen Ereignissen, die innerhalb eines bestimmten Zeitraums vollendet sind, und Ereignissen, die unvollendet sind. Dieser Unterschied heißt (linguistischer) Aspekt. Im ersten Fall nennt man den Aspekt <em>perfektiv</em> und im zweiten Fall nennt man den Aspekt <em>imperfektiv</em>. Folgendes ist eine Tabelle von Beispielen auf Deutsch:</p>

<table>
<thead>
<tr>
<th>Satz auf Deutsch</th>
<th>Satz auf Englisch</th>
<th>Aspekt des schräggedruckten Verbs</th>
<th>Grund</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://tatoeba.org/en/sentences/show/5180588">Ich <em>trank</em> ein Glas Milch.</a></td>
<td>I drank a glass of milk.</td>
<td>perfektiv</td>
<td>bestimmte Menge an Milch wird ausgetrunken</td>
</tr>
<tr>
<td><a href="https://tatoeba.org/en/sentences/show/8833625">Sami <em>trank</em> immer Milch.</a></td>
<td>Sami always drank milk.</td>
<td>imperfektiv</td>
<td>gewöhnliche Aktion, die wiederholt wird</td>
</tr>
<tr>
<td><a href="https://tatoeba.org/en/sentences/show/9978420">Kinder <em>trinken</em> Milch.</a></td>
<td>Kids drink milk.</td>
<td>imperfektiv</td>
<td>allgemeine Aktion anstatt bestimmtes Ereignisses</td>
</tr>
<tr>
<td><a href="https://tatoeba.org/en/sentences/show/8072023">Ich werde ein Bier <em>trinken</em>.</a></td>
<td>I will drink a beer.</td>
<td>perfektiv</td>
<td>bestimmte Menge ist ausgetrunken worden</td>
</tr>
<tr>
<td><a href="https://tatoeba.org/en/sentences/show/353018"><em>Trink</em> deine Milch.</a></td>
<td>Drink up your milk.</td>
<td>perfektiv</td>
<td>es wird befohlen, dass die Milch völlig ausgetrunken wird</td>
</tr>
<tr>
<td><a href="https://tatoeba.org/en/sentences/show/8072023">Du musst viel Milch <em>trinken</em>; dann wirst du groß und stark.</a></td>
<td>You must drink lots of milk; then you'll get big and strong.</td>
<td>imperfektiv</td>
<td>allgemeine Empfehlung für die Zukunft</td>
</tr>
</tbody>
</table>

<p>In den Sprachen, die ich bis jetzt kann (Englisch, Spanisch und Deutsch) unterscheidet man perfektiven von imperfektiven Verbverwendungen durch unterschiedlichen Beugungen oder zusätzlichen Wörter (z.B. <em>immer</em>, <em>jeden Tag</em>, <em>oft</em>, <em>manchmal</em> usw). Dagegen ist jedes Verb in Russisch entweder perfektiv oder imperfektiv, das heißt, der Aspekte hängt hauptsächlich nur von dem Verb selbst ab. Jedem imperfektiven Verb entspricht ein (aber manchmal mehrere) perfektives Verb. Der Aspekt beeinflusst manchmal sogar die Bedeutung eines Verbs. In der Tabelle hier unten finden sich einige Beispiele:</p>

<table>
<thead>
<tr>
<th>imperfektives Verb</th>
<th>Bedeutung</th>
<th>perfektives Verb</th>
<th>Bedeutung</th>
</tr>
</thead>
<tbody>
<tr>
<td>говорить</td>
<td>reden/sagen</td>
<td>сказать</td>
<td>(etwas) sagen</td>
</tr>
<tr>
<td>говорить</td>
<td>reden/sagen</td>
<td>поговорить</td>
<td>eine Zeit lang reden</td>
</tr>
<tr>
<td>знать</td>
<td>wissen</td>
<td>узнать</td>
<td>herausfinden/erfahren</td>
</tr>
<tr>
<td>пить</td>
<td>trinken</td>
<td>выпить</td>
<td>austrinken</td>
</tr>
<tr>
<td>жить</td>
<td>wohnen</td>
<td>пожить</td>
<td>eine Zeit lang (in einem Ort) wohnen</td>
</tr>
<tr>
<td>звать</td>
<td>nennen</td>
<td>позвать</td>
<td>herbeirufen</td>
</tr>
<tr>
<td>учить</td>
<td>studieren</td>
<td>выучить</td>
<td>beherrschen (ein Fachgebiet/eine Sprache)</td>
</tr>
</tbody>
</table>

<p>Das Beispiel садиться/сесть "sich setzen" ist auch besonders interessant, weil das imperfektive Gegenstück ein reflexives Verb ist (ausweislich des Suffix -ся) und das perfektive Gegenstück andrerseits kein reflexives Verb ist! </p>

<p>Mithilfe dieser Einteilung von Verben kann man eine Vielfalt an zeitlichen Bedeutungen mit nur wenigen Zeitformen äußern. Zum Beispiel, die Gegenwartsform der Verben im Russischen spielen eine Doppelrolle: bei den imperfektiven Verben äußert sie eine Aktion, die im Gang ist oder einen gegenwärtigen Zustand, aber bei den perfektiven Verben bedeutet sie eine künftige Aktion. So kann eine einzige Verbform für zwei Tempus (Gegenwart und Zukunft) angewendet werden! </p>

<p>Allerdings ist diese Eigenschaft der russischen Grammatik wahrscheinlich die, die meine Denkart am meisten verändert, wenn ich etwas auf Russisch zu sprechen oder zu schreiben versuche.</p>

<h3>Vielfalt an Bewegungsverben</h3>

<p>Das Thema in der russischen Grammatik, das sich bis jetzt als das schwierigste für mich herausgestellt hat, betrifft die Bewegungsverben (<em>gehen</em>, <em>fahren</em>, <em>rennen</em>, <em>besuchen</em>, <em>bringen</em> usw). Es gibt sehr viele Bewegungsverben im Russischen zu erinnern und zu allem Unglück sehen einige Paare von Bewegungsverben sehr ähnlich aus, was erschwert für mich die Memorierung.</p>

<p>Im Allgemeinen ist es im Russischen in vielen Fällen unmöglich, zusätzliche Informationen über eine Bewegung aus einem Satz auszulassen, die man in der Muttersprache angewöhnt ist, nicht spezifizieren zu müssen. Zum Beispiel, das Verb <em>gehen</em> auf Deutsch könnte sich sowohl einen Spaziergang als auch eine Autofahrt beschreiben, und von Natur aus bestimmt es nicht, ob diese Einwegfahrt oder Rundfahrt ist. Im Russischen gibt es ein bestimmtes Verb für jeden Fall aber kein allgemeines Verb, die diese Einzelheiten verbergt.</p>

<table>
<thead>
<tr>
<th>Bewegungsverb auf Russisch</th>
<th>Bedeutung</th>
</tr>
</thead>
<tbody>
<tr>
<td>ходить</td>
<td>gehen, zu Fuß, hin und zurück oder in vielen Richtungen</td>
</tr>
<tr>
<td>идти</td>
<td>gehen, zu Fuß, in einer Richtung</td>
</tr>
<tr>
<td>ездить</td>
<td>gehen, mit dem Auto, hin und zurück oder in vielen Richtungen</td>
</tr>
<tr>
<td>ехать</td>
<td>gehen, mit dem Auto, in einer Richtung</td>
</tr>
<tr>
<td>водить</td>
<td>(jemanden) bringen, zu Fuß, hin und zurück</td>
</tr>
<tr>
<td>вести</td>
<td>(jemanden) bringen, zu Fuß, in einer Richtung</td>
</tr>
<tr>
<td>возить</td>
<td>(jemanden/etwas) bringen, mit dem Auto, hin und zurück</td>
</tr>
<tr>
<td>везти</td>
<td>(jemanden/etwas) bringen, mit dem Auto, in einer Richtung</td>
</tr>
</tbody>
</table>

<p>Zudem sind diese nur imperfektive Verben. Jedem Verb von diesen entspricht auch ein (manchmal zwei oder mehr!) perfektives Gegenstück. Da die Wahl des richtigen Verbs von so vielen Parametern abhängt ist es sogar schwierig, eine gute Tabelle davon zu entwerfen - man braucht wohl einen ganzen Hyperwürfel:</p>

<p><center>
<img src="/img/2025-09-01-Fig1.png" alt="Fig1" />
</center></p>

<h3>Ähnlichkeiten mit Englisch, Spanisch und Deutsch</h3>

<p>Zum Schluss wollte ich durch ein paar Listen zusammenfassen, was mir bis jetzt beim Russischlernen am schwierigsten ist und was mir am einfachsten ist.</p>

<p>Mir sind die einfachste Seiten (oder die Seiten, die einfacher als ich erwartete waren) der russischen Grammatik bis jetzt:</p>

<ul>
<li>keine Artikel erinnern oder deklinieren zu müssen</li>
<li>die Vergangenheitsform des Verbs</li>
<li>Konditionalis und Irrealis zu bilden</li>
</ul>

<p>und die schwierigste Seiten:</p>

<ul>
<li>Pluralsubstantive im genitiven Kasus zu beugen</li>
<li>Kardinalzahlen (zum Teil weil es auf pluralen genitiven Deklinationen beruht)</li>
<li>zwischen den Präpositionen в und на je nach dem Ort entscheiden</li>
<li>die Position des Tons in einem Wort zu erinnern</li>
<li>umgangsprachliche russischen Partikeln (e.g. и, а, ну, да, -ка, -то) zu verstehen und zu benutzen</li>
</ul>

<p>Es ist auch manchmal ziemlich schwer im Allegemeinen, viele ähnlich aussehende Wörter nicht zu verwechseln. Dazu gibt es ein Meme:</p>

<p><center>
<img src="/img/2025-09-01-Fig2.png" alt="Fig2" />
</center></p>

<p>Da dieser Blogeintrag schon so vollgepackt mit Tabellen ist, warum nicht eine Tabelle mehr? Ich habe einige Spracheigenschaften in der folgenden Tabelle zusammengestellt, um Englisch, Spanisch, Deutsch und Russisch unter sich zu vergleichen:</p>

<table>
<thead>
<tr>
<th>Spracheigenschaft</th>
<th>Englisch</th>
<th>Spanisch</th>
<th>Deutsch</th>
<th>Russisch</th>
</tr>
</thead>
<tbody>
<tr>
<td>Pro-Drop</td>
<td></td>
<td>✓</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>2P sing. wird 2P pl. in formeller Sprache</td>
<td></td>
<td>✓</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>hat Artikel</td>
<td>✓</td>
<td>✓</td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>grammatisches Geschlecht für Substantiven</td>
<td></td>
<td>✓</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>doppelte Verneinung ist Verneinung</td>
<td></td>
<td>✓</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>hat Kasussystem</td>
<td></td>
<td></td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>Verbenbeugungen sind geschlechtsabhängig</td>
<td></td>
<td></td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>hat grammatische Belebtheit</td>
<td></td>
<td>✓</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>viele aussagekräftigen Verbpräfixen</td>
<td></td>
<td></td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>Perfekt kann durch Hilfsverb ausgedrückt werden</td>
<td>✓</td>
<td>✓</td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td>Futur kann durch Hilfsverb ausgedrückt werden</td>
<td>✓</td>
<td>✓</td>
<td>✓</td>
<td>✓</td>
</tr>
</tbody>
</table>

    <br>
<a href="/">go to homepage</a>
<hr>
<div id="license-statement">The posts on this website are licensed under <a href="https://creativecommons.org/licenses/by-nc/4.0/">CC-by-NC 4.0</a>.</div>
<div id="notbyai"><a href="https://notbyai.fyi/"><img src="/img/written-by-human.png"/><img src="/img/illustrated-by-human.png"/></a></div>
]]></content:encoded>
    </item>
    
    <item>
        <title>Eine knappe Erklärung von der Kosinus-Formel des Skalarprodukts</title>
        <link>http://franklin.dyer.me/dot-product-cosine-formula-de.html</link>
        <guid>dot-product-cosine-formula-de</guid>
        <pubDate>2025-08-15</pubDate>
        <content:encoded type="html"><![CDATA[
    <h2>Eine knappe Erklärung von der Kosinus-Formel des Skalarprodukts</h2>

<p>Das Skalarprodukt (auf Englisch: <em>dot product</em>) ist eine elementare mathematische Verknüpfung, die einem Paar von Vektoren eine Skalarzahl zuordnet. Ich glaube, ich habe davon zum ersten Mal ausdrücklich erfahren, als ich den Kurs namens "Calculus 3" in meiner Uni belegte. Es ist sehr einfach zu rechnen: das Skalarprodukt ist die Summe der Produkte der beziehungsweisen Koordinaten der Vektoren.</p>

<p>
<script type="math/tex; mode=display">\mathbf{x}\cdot\mathbf{y} = x_1 y_1 + x_2 y_2 + \cdots + x_n y_n</script>
</p>

<p>Es ist doch häufig eingesetzt, um den Wert des Winkels $\vartheta$ zu kalkulieren, der zwischen den Vektoren eingeschlossen ist, denn es gilt auch, dass:</p>

<p>
<script type="math/tex; mode=display">\mathbf{x}\cdot\mathbf{y} = \lVert \mathbf{x}\rVert \cdot\lVert \mathbf{y}\rVert \cdot \cos\vartheta</script>
</p>

<p>Dies ist eine sehr wichtige Formel, die überall bei der multivariaten Analyse, linearen Algebra, Geometrie usw. eingesetzt wird. Doch <em>wie beweist man eigentlich diese Kosinus-Formel</em>, wenn man nur die erste Formel für die Definition des Skalarprodukts annimmt? Es gilt als elementar, aber ist gar nicht offensichtlich. Trotzdem hat mir kein einziges Mal ein Professor oder Lehrbuch die Verbindung zwischen diese zwei Formeln ausdrücklich erläutert.</p>

<p>Dazu wollte ich einen sehr knappen Gedankengang darstellen, der es ermöglicht, diese Kosinus-Formel "auf einen Blick" zu erfassen. Es ist nichts Besonderes, aber ich habe so was eigentlich nie eindeutig niedergeschrieben.</p>

<hr>

<p>Man kann die Kosinus-Formel für das Skalarprodukt einfach beweisen, wenn man bereit ist, die folgenden "offensichtliche" (oder mindestens intuitivere) Tatsachen anzunehmen:</p>

<ul>
<li>die Drehungen in $\mathbb R^n$ behalten die Winkel zwischen Vektoren</li>
<li>die Drehungen in $\mathbb R^n$ behalten Distanzen zwischen Paaren von Punkten</li>
<li>für jedes Paar von Vektoren $\mathbf{x},\mathbf{y}\in\mathbb R^n$ gibt es eine Drehung um den Ursprung, die sie in die XY-Ebene bringen</li>
</ul>

<p>Dieser Gedankengang beruht sich hauptsächlich auf der grundsätzlichen algebraischen Tatsache $(x-y)^2 = x^2 - 2xy + y^2$. Anders gesagt lautet diese Gleichung: </p>

<p>
<script type="math/tex; mode=display">x\cdot y = \frac{x^2 + y^2 - (x-y)^2}{2}</script>
</p>

<p>Seien $\mathbf{x},\mathbf{y}\in\mathbb R^n$ zufällige Vektoren, wenn man diese Gleichung komponentenweise auf diese zwei Vektoren anwendet, dann bekommt man die Gleichung </p>

<p>
<script type="math/tex; mode=display">\mathbf{x}\cdot\mathbf{y} = \frac{\lVert \mathbf{x}\rVert^2 + \lVert\mathbf{y} \rVert^2 - \lVert \mathbf{x} - \mathbf{y} \rVert^2}{2}</script>
</p>

<p>Das heißt, dass $\mathbf{x}\cdot\mathbf{y}$ nur von den drei Distanzen $\lVert \mathbf{x}\rVert, \lVert\mathbf{y} \rVert, \lVert \mathbf{x} - \mathbf{y} \rVert$ abhängt. Laut unserer Voraussetzungen muss jede Drehung die Distanzen zwischen Punkten behalten. Sei dann $U$ eine Drehung um den Ursprung, denn behaltet es die Werte der Ausdrücke $\lVert \mathbf{x}\rVert, \lVert\mathbf{y} \rVert, \lVert \mathbf{x} - \mathbf{y} \rVert$. Daraus folgt, dass </p>

<p>
<script type="math/tex; mode=display">\mathbf{x}\cdot\mathbf{y} = U\mathbf{x}\cdot U\mathbf{y}</script>
</p>

<p>Unsere dritte Voraussetzung lautet, dass es eine bestimmte Drehung $U$ gibt, die $\mathbf{x},\mathbf{y}$ gleichzeitig in der XY-Ebene bringt. Also haben wir gefolgert, dass es jedem Paar von Vektoren $\mathbf{x}, \mathbf{y}$ ein anderes Paar von Vektoren $\mathbf{x}' = U\mathbf{x}, \mathbf{y}' = U\mathbf{y}$ in der XY-Ebene entspricht, das sowohl das gleiche Skalarprodukt als den gleiche Winkelwert hat. Das heißt: die Formel gilt im Allgemeinen, solange es im zweidimensionalen Fall gilt, wobei $\mathbf{x} = (x_1,x_2)$ und $\mathbf{y} = (y_1,y_2)$.</p>

<p>Im zweidimensionalen Fall ist die Formel doch sehr einfach zu beweisen. Durch einer weiteren Drehung um den Ursprung kann man $\mathbf{y}$ parallel zu der X-Achse richten, damit $\mathbf{x} = (x_1,x_2)$ und $\mathbf{y} = (y_1, 0)$. In diesem allereinfachsten Fall reduziert sich die KosinusFormel auf <script type="math/tex; mode=display">x_1 y_1 = \sqrt{x_1^2 + x_2^2}\cdot y_1 \cos\vartheta</script> oder <script type="math/tex; mode=display">\frac{x_1}{\sqrt{x_1^2 + x_2^2}} = \cos\vartheta</script> Diese Gleichung ist doch bloße zweidimensionale Trigonometrie:</p>

<p><center>
<img src="/img/2025-08-15-Fig1.png" alt="Fig1" />
</center></p>

<hr>

<p>Und das war's! </p>

<p>Übrigens frage ich mich, ob man irgendeine Verbindung zwischen dem Skalarprodukt und der Galoistheorie von Rationalfunktionkörper erweisen kann. Der Kern unseres früheren Beweis war die Tatsache, dass die Drehungen um den Ursprung behalten das Skalarprodukt, also, das Polynom $x_1 y_1 + \cdots + x_n y_n$. Deshalb frage ich mich zum Beispiel, ob der Unterkörper von $\mathbb R(x_1,\cdots, x_n, y_1,\cdots, y_n)$, die aus den von gleichzeitigen linearen Drehungen behaltenen rationalen Funktionen besteht, genau $\mathbb R(\lVert \mathbf{x}\rVert^2, \lVert \mathbf{y}\rVert^2, \mathbf{x}\cdot\mathbf{y})$ ist. Das habe ich doch bis jetzt weder bestätigt noch widerlegt.</p>

    <br>
<a href="/">go to homepage</a>
<hr>
<div id="license-statement">The posts on this website are licensed under <a href="https://creativecommons.org/licenses/by-nc/4.0/">CC-by-NC 4.0</a>.</div>
<div id="notbyai"><a href="https://notbyai.fyi/"><img src="/img/written-by-human.png"/><img src="/img/illustrated-by-human.png"/></a></div>
]]></content:encoded>
    </item>
    
    <item>
        <title>A deceptively simple-looking minimax problem</title>
        <link>http://franklin.dyer.me/minimax-uniform-lehmann-en.html</link>
        <guid>minimax-uniform-lehmann-en</guid>
        <pubDate>2025-07-15</pubDate>
        <content:encoded type="html"><![CDATA[
    <h2>A deceptively simple-looking minimax problem</h2>

<p>Lately I've been brushing up on my statistics (which is only prudent given all of the buzz about ML in the software dev world right now) and I've gone down a bit of a rabbit-hole studying <a href="https://en.wikipedia.org/wiki/Estimation_theory">parameter estimation problems</a>. Lehmann's books <em>Theory of Point Estimation</em> and <em>Testing Statistical Hypotheses</em> present parameter estimation problems in a general framework that I've found pretty insightful. Actually, as a side project I've put together a little website with a collection of <a href="https://paramest.com/">parameter estimation challenges</a> that you can solve in the browser by writing a WebR function. Check it out!</p>

<p>These parameter estimation problems involve making estimates of unknown quantities given only imperfect information in the form of randomly distributed data. Penalties for incorrect answers are calculated in terms of a given "loss function". An interesting subclass of these problems are the <em>minimax problems</em>, where you are tasked with minimizing the expected loss <em>in the worst case</em>, that is, minimizing the maximum possible expected loss across all possible values of the unknown quantity.</p>

<p>Lehmann comments that minimax problems are often very tricky to solve compared to other forms of parameter estimation problems. Of course, I had to see this for myself to believe it, so I wrote down one of the simplest minimax problems I could think of and tried to solve it.</p>

<p>And boy, was he right. I've been toying with this problem on and off for the past several weeks, and it's been infuriating, particularly because the problem's statement is so simple on its face. But I finally finished solving it analytically just a few days ago, and the solution is far more complicated than it has any right to be.</p>

<p>Anyways, here's the problem:</p>

<blockquote>
<p>There is an unknown parameter $\vartheta \in [0,1]$, and you need to make a guess $\vartheta^\ast$ at the value of this parameter. You are penalized based on how far off your guess is from the true value - if the true value is $\vartheta$ and your guess is $\vartheta^\ast$, then the penalty is $L(\vartheta,\vartheta^\ast) = (\vartheta - \vartheta^\ast)^2$, that is, the squared error. The only information you are given to inform your estimate is the value of a random variable $\omega\sim \mathcal U(0,\vartheta)$, that is, the value of a uniformly distributed random value in $[0,\vartheta]$. </p>
<p>How can you choose your estimate in order to <em>minimize</em> the <em>maximum possible</em> expected penalty? That is, what strategy will <em>guarantee</em> the expected penalty to be as small as possible, regardless of the true value of $\vartheta\in [0,1]$? And what is this smallest possible expected penalty?</p>
</blockquote>

<p>The "strategies" for solving this problem can be represented as "decision functions" $\delta: [0,1]\to [0,1]$ such that $\delta(\omega) = \vartheta^\ast$ gives an estimate for the parameter $\vartheta$ in terms of the random observation $\omega\sim \mathcal U(0,\vartheta)$. You can <a href="https://paramest.com/challenges/unif-minimax">take a crack at this problem yourself</a> on my website by writing a decision function in R, if you want.</p>

<p>This post will describe the winding path that I followed to the ultimate grotesque solution of this minimax problem. Enjoy! 🤡</p>

<h3>A failed attempt</h3>

<p>In Lehmann's <em>Theory of Point Estimation</em>, he mentions a very useful fact about minimax problems: if you can find a prior distribution $\Lambda$ and a Bayes solution $\delta_\Lambda$ for that prior that makes the risk function a <em>constant function</em>, then $\delta_\Lambda$ is automatically a minimax solution for the problem. (The <strong>risk function</strong> $R(\delta, \vartheta)$ is defined as the <em>expected loss</em> when a specific decision function $\delta$ is used, and the true parameter value is $\vartheta$.) He shows how to use this fact to deduce the minimax estimate for an unknown parameter $p$ given a binomially distributed random variable $X\sim\text{Binom}(n,p)$. (He does this by letting $\Lambda$ be a certain beta distribution, but as for where this idea came from in the first place, he kind of pulls it out of a hat.)</p>

<p>So naturally, my first step was to look for a decision function $\delta$ making the risk function $R$ constant. Then I could try to find a prior distribution for which that decision function was Bayes optimal, and my work would be done. For the risk to be constant as a function of the parameter $\vartheta$, the following expression would have to be constant as a function of $\vartheta$: <script type="math/tex; mode=display">R(\vartheta) = \frac{1}{\vartheta}\int_0^\vartheta \big(\vartheta - \delta(x)\big)^2 ~ dx = C</script>
</p>

<p>It took me a few weeks of on-and-off work on this problem to realize that $\delta$ can be solved for analytically. But in the meantime, I found an approximate solution for $\delta$ by discretizing the interval $[0,1]$ into a bunch of evenly spaced points and reformulating the problem as a system of linear equations that could be solved algorithmically. In fact, there are infinitely many solutions $\delta$, as for any particular solution $\delta$, another solution can be obtained from the function $x\mapsto \alpha \delta(x/\alpha)$ for any $\alpha &gt; 0$, dilating the solution about the origin. This yields a function looking something like this:</p>

<p><center>
<img src="/img/2025-07-15-Fig1.png" alt="Fig1" />
</center></p>

<p>This poses an unfortunate problem: there is no way to dilate/contract this function in such a way that it is defined on all of $[0,1]$ and is also $\leq 1$ everywhere on $[0,1]$. This means that $\delta$ cannot be the Bayes solution for any prior $\Lambda$, because it can <em>never</em> be optimal to guess a value of $\vartheta$ that is greater than $1$ (since $\vartheta$ only takes values in the interval $[0,1]$). This dashes any hopes of proving minimaxity via the aforementioned theorem on constant risk functions.</p>

<p>Of course, we could always try modifying this decision function so that it never returns an "unreasonable" estimate $\vartheta^\ast &gt; 1$. For instance, we might consider a decision function $x\mapsto \min(1, \delta(x))$ where $\delta$ is the function depicted above that makes the risk function $R$ a constant function. But of course, this truncated version does not make the $R$ a constant function. If we use $x\mapsto \min(1, \delta(x))$ as our decision function, then the new risk function looks like this:</p>

<p><center>
<img src="/img/2025-07-15-Fig2.png" alt="Fig2" />
</center></p>

<p>The maximum risk here is approximately $\approx 0.0891$, which is not too bad! But this risk function is non-constant, so there is no guarantee of minimaxity. And as we shall see in a moment, it is not, in fact, optimal.</p>

<h3>Dubious approximation using gradient descent</h3>

<p>After (erroneously) deciding that it was unlikely I would ever analytically find a minimax solution to this problem, I started looking for approximate numerical solutions. Initially, I had used numerical methods to approximate a decision function $\delta$ making the risk function constant. But a more direct approach would be to numerically calculate a decision function $\delta$ minimizing the maximum value of the risk function $R(\vartheta)$ by using a numerical minimization method.</p>

<p>My numerical approach to this problem was as follows:</p>

<ol>
<li>Discretize the domain $\Theta = [0,1]$ into $n$ points</li>
<li>Discretize some initial guess $\delta$ of the decision function as a vector in $\mathbb R^n$</li>
<li>Express $R$ as a vector function $r:\mathbb R^n\to \mathbb R^n$ whose input is $\delta$ and whose output is a vector discretizing the risk function $R(\vartheta)$</li>
<li>Apply <a href="https://en.wikipedia.org/wiki/Gradient_descent">gradient descent</a> to the objective function $\lVert r(\delta) \rVert_\infty = \max(\lVert r(\delta) \rVert_\infty)$</li>
</ol>

<p>There is a bit of a problem with this approach, though. Although the risk $r(\delta)$ is a differentiable function with respect to the different components of the $\delta$ vector, the supremum norm $\lVert\cdot\rVert_\infty$ is <em>not</em> a differentiable function of its vector argument, so gradient descent cannot really be applied (in its usual form) to the objective function $\delta\mapsto \lVert r(\delta) \rVert_\infty$.</p>

<p>Instead, I applied a modified form of gradient descent in which at each step, only the gradient of the <em>largest component</em> of $r(\delta)$ is calculated and used to adjust the input vector $\delta$. This way, each step of the gradient descent algorithm focuses on decreasing the largest component of the output risk vector $R = r(\delta)$, which is necessary to decrease the maximum component of the vector $R$.</p>

<p>This was just my heuristic approach to the problem, and it yielded a helpful insight, as we will see in a moment. But there was nothing rigorous about this idea. I've found no reference to this modified sup-norm version of gradient descent anywhere online, so I have no idea if there are any theoretical guarantees of its convergence. Also, the usual gradient descent algorithm uses the gradients at previous steps to dynamically adjust the step size, but because my modified algorithm is constantly switching between different components of $R$ to minimize, this kind of intelligent step size calculation wasn't possible. Instead, I just picked a "small enough" static step size to see what the method would turn up.</p>

<p>Here's an animation of my modified gradient descent algorithm being applied to an initial decision function guess of $\delta(x) = x$:</p>

<p><center>
<img src="/img/2025-07-15-Fig3.gif" alt="Fig3" />
</center></p>

<p>We can see the input decision function $\delta$ and the output risk function $R$ seemingly converge to functions shaped similarly to what we saw in my original failed attempt. To me, this suggested that my initial approach might not have actually been too far off. However, the maximum risk of this numerical solution was significantly lower at $\approx 0.0747$, as compared to a maximum risk of $\approx 0.0891$ in the original attempt. </p>

<p>The risk functions for the original attempt and this newer attempt look similar, in that they consist of a plateau stretching until about $x\approx 0.5$ followed by a parabolic-looking dip downwards. However, a notable difference between them is the fact that in the older solution, the end of the dip at $x=1$ falls short of the height of the original plateau, while in the newer solution, the end of the dip at $x=1$ seems to match the height of the original plateau. This qualitative observation led to the conjectured exact solution described in the next section (later proven to be correct).</p>

<h3>A conjectured analytical solution</h3>

<p>Previously, I mentioned the idea of trying to "salvage" a non-Bayes (and non-admissible) decision function $\delta$ making the risk function $R$ a constant function by capping its values at $1$. Then, when I used a modified version of gradient descent to search for a minimax solution, I noticed that the apparent numerical solution (and its risk function) looked an awful lot like the solution and non-constant risk function that I had salvaged from my original attempt, except that the height of the plateau in the risk function starting at $R(0)$ appeared to align with the final value $R(1)$ of the risk function.</p>

<p>This led to my next method of attack: trying to find a decision function which both makes $R$ constant, and also makes $R(0) = R(1)$ when it is "capped" at a maximum value of $1$. In what follows, I will let $f$ denote a non-admissible decision function that makes $R$ constant, and let $\delta$ denote the decision function that results from capping it off at a maximum value of $1$.</p>

<p>Around this time is when I figured out how to <em>analytically</em> solve for functions $f$ reducing the risk function $R$ to a constant, by solving a certain differential equation. And the answer is <em>weird</em>.</p>

<p>We're looking for functions $f$ satisfying the following integral identity, for some constant $C$: <script type="math/tex; mode=display">R(\vartheta) = \frac{1}{\vartheta}\int_0^\vartheta \big(\vartheta - f(x)\big)^2 ~ dx = C</script> Note that this is the same as saying <script type="math/tex; mode=display">\frac{d}{d\vartheta}\int_0^\vartheta \big(\vartheta - f(x)\big)^2 ~ dx = C</script> Using the <a href="https://en.wikipedia.org/wiki/Leibniz_integral_rule">Leibniz integral rule</a> we can turn this into a differential equation for the function $f$: we obtain <script type="math/tex; mode=display">\big(\vartheta - f(\vartheta)\big)^2 + 2\vartheta^2 - 2\int_0^\vartheta f(x) ~ dx = 0</script> From this point, the calculations are a big nicer if we make a substitution, considering the function $g$ defined as $g(\vartheta) = f(\vartheta) - \vartheta$ in place of the function $f$. With this substitution, the above becomes <script type="math/tex; mode=display">g^2 + \vartheta^2 - 2\int_0^\vartheta g(x) ~ dx = 0</script> Differentiating once more with respect to $\vartheta$ yields: <script type="math/tex; mode=display">2g'g + 2\vartheta - 2g = 0</script> or, after simplifying, <script type="math/tex; mode=display">g' = 1 - \frac{\vartheta}{g}</script>
</p>

<p>The solution to this differential equation is quite messy and involves defining $g$ implicitly. (To be completely honest, I found the solution at first using Wolfram, but came up with the following slick derivation after the fact.) To solve it, we'll first define a complex-valued function $z:(0,1)\to \mathbb C$ as $z(\vartheta) = \zeta_3\vartheta + g(\vartheta)$, where $\zeta_3$ is the complex cube root of unity in the upper half-plane. Then note that by the differential equation for $g$, we have <script type="math/tex; mode=display">\frac{dz}{d\vartheta} = \zeta_3 + g' = \frac{\zeta_6}{g}\cdot z</script> which means that the following quantity has to be <em>purely real</em>, since $g$ is a real-valued function: <script type="math/tex; mode=display">\zeta_6^{-1}\cdot \frac{1}{z}\frac{dz}{d\vartheta}</script> But note this is simply the derivative of $\zeta_6^{-1}\log(z)$. Thus, since the derivative of $\zeta_6^{-1}\log(z)$ with respect to $\vartheta$ is a purely real quantity, the derivative of its imaginary part with respect to $\vartheta$ vanishes, and we have that it must have constant imaginary part: <script type="math/tex; mode=display">\text{Im}(\zeta_6^{-1}\log z) = C</script> By decomposing $z$ into its real and imaginary parts in terms of $g$ and $\vartheta$ and computing the imaginary part of $\zeta_6^{-1}\log z$ in terms of these quantities (and simplifying a bit, absorbing some numbers into the arbitrary constant $C$), we obtain the following gross-looking definition for $g(x)$ as an implicit function of $x$: <script type="math/tex; mode=display">\tfrac{1}{2}\log(g^2 - xg + x^2) - \tfrac{1}{\sqrt{3}}\arctan\Big(\frac{x-2g}{\sqrt{3} x}\Big) = C</script>
</p>

<p>Nasty! But if you open up a graphing calculator and plot the curve defined by this equation:</p>

<p>
<script type="math/tex; mode=display">\tfrac{1}{2}\log((f-x)^2 - x(f-x) + x^2) - \tfrac{1}{\sqrt{3}}\arctan\Big(\frac{3x-2f}{\sqrt{3} x}\Big) = C</script>
</p>

<p>you will miraculously find a shape that looks just like the graph we saw earlier.</p>

<p>As discussed before, the empirical results of my (sus) gradient descent had led me to believe that the true minimax solution is a truncated version of the decision function $f$ (for some value of the constant $C$) defined as follows, where $x_\ast$ is the smallest real value $x$ for which $f(x) = 1$, i.e. the point at which $f$ turns into a decision function that no longer makes sense: <script type="math/tex; mode=display">\delta(x) = \begin{cases} f(x) &amp; \text{if }x \leq x_\ast \\ 1 &amp; \text{else}\end{cases}</script> and further, that $\delta$ it is such that its risk function $R$ satisfies $R(0) = R(1)$. It turns out that we can actually calculate the exact value of the constant $C$ (and hence the implicitly defined function $f$) for which this condition on the risk function is satisfied. This condition is equivalent to <script type="math/tex; mode=display">f_0^2 = \int_0^1 \big(1-\delta(x)\big)^2 ~ dx</script> or, since $\delta = 1$ for all $x\geq x_\ast$, the condition is <script type="math/tex; mode=display">f_0^2 = \int_0^{x_\ast} \big(1-f(x)\big)^2 ~ dx</script> Using the properties of $f$ and the differential equation for $g$, the RHS can actually be reduced to a pretty simple form in terms of $x_\ast$. I'll leave the details as an exercise, but it can be shown that the RHS can be reduced to the simple expression $f_0^2 - (1-x_\ast)(2x_\ast^2 - 3x_\ast + 1)$, from which it follows that the above equation implies <script type="math/tex; mode=display">(1-x_\ast)(2x_\ast^2 - 3x_\ast + 1) = 0</script> The only solution to this equation other than $x_\ast = 1$ (which is not possible) is $x_\ast = 1/2$ - a remarkably simple answer to a very complicated question! This means that if the condition $R(0)=R(1)$ holds then we must have $x_\ast = 1/2$, and consequently $f(1/2) = 1$, or $g(1/2) = 1/2$. Setting $(x,g) = (1/2,1/2)$ in the implicit equation defining $g(x)$ gives the following value of the constant $C$: <script type="math/tex; mode=display">C = -\log 2 + \frac{\pi}{6\sqrt{3}}\approx -0.391</script> which yields the following minimax loss value: <script type="math/tex; mode=display">\sup_{\vartheta\in [0,1]} R(\vartheta) = f(0)^2 = \tfrac{1}{4}e^{-2\pi/3\sqrt{3}}\approx 0.0746</script> which agrees numerically with the minimax loss value that I found empirically.</p>

<p>After a few weeks of banging my head against the wall, I wasn't expecting to find an exact value for the minimax expected loss <em>at all</em>. And if I had, I certainly wouldn't have expected <em>that</em> kooky number!</p>

<h3>Proof of minimaxity</h3>

<p>At this point, I had a numerical minimax solution, and I had an analytical description of a function agreeing with it numerically which I <em>conjectured</em> to be minimax. But still no proof of its minimaxity.</p>

<p>But finally I realized that another result from Lehmann on minimax solutions could still be applied, since it had slightly weaker hypotheses. In the weaker theorem, the risk function $R$ is not required to be constant. It is just required to be <em>constant on a set of unit measure</em> with respect to the prior distribution for which $\delta$ is Bayes. That is, $\delta=\delta_\Lambda$ needs to be a Bayes solution for some prior distribution $\Lambda$, and the risk function $R$ only needs to be constant on some <em>subset</em> $A\subset [0,1]$, so long as that subset has probability $\Lambda(A) = 1$.</p>

<p>The solution $\delta$ that we've constructed above has a risk function $R(\vartheta)$ that is <em>not constant</em>. However, it <em>is</em> constant on the set $[0,1/2]\cup {1}$. This result means that if we can find a prior distribution $\Lambda$, supported on the set $[0,1/2]\cup {1}$, for which $\delta=\delta_\Lambda$ is the Bayes solution, then $\delta$ <em>is in fact minimax</em>. And this time, there are no glaring red flags about $\delta$ that preclude it from being minimax.</p>

<p>The most general prior distribution $\Lambda$ supported on $[0,1/2]\cup {1}$ takes the form $\Lambda(X) = p [[ 1\in X ]] + (1-p)\Lambda_0(X)$ where $p\in [0,1]$ and $\Lambda_0$ is a narrower distribution on the set $[0,1/2]$. That is, a random variable on the set $[0,1/2]\cup {1}$ must take the value $1$ with some probability $p\in [0,1]$, and must follow some other distribution $\Lambda_0$ when its value falls in the interval $[0,1/2]$. </p>

<p>We shall try to choose $p$ and $\Lambda_0$ in order to make our $\delta$ the Bayes solution for $\Lambda$. When the squared error loss function is used, the Bayes solution is just the expected value of the posterior distribution, meaning that <script type="math/tex; mode=display">\delta_\Lambda(x) = \mathbb E[\vartheta | x] = \frac{\tfrac{p}{1-p} + \int_x^{1/2} \Lambda_0(\phi) ~ d\phi}{\tfrac{p}{1-p} + \int_x^{1/2} \tfrac{1}{\phi}\Lambda_0(\phi) ~ d\phi}</script>
</p>

<p>when $x\in [0,1/2]$. When $x &gt; 1/2$, of course we have that $\delta_\Lambda(x) = 1$, since an observation of $1$ means that the value of $\vartheta$ <em>must be</em> $=1$ when it is known to belong to $[0,1/2]\cup {1}$. So we want to choose a value of $p$ and a density function $\Lambda_0$ such that the above equals $f(x)$ for all $x\in [0,1/2]$.</p>

<p>With a bit of algebra, this can be turned into a nice differential equation for $\Lambda_0$. I found the following solution: <script type="math/tex; mode=display">\begin{align*}p &amp;= \frac{1}{1 + h(\tfrac{1}{2}) - h(0)} \\ \Lambda_0(\vartheta) &amp;= \frac{p}{1-p} ~ \frac{dh}{d\vartheta} \end{align*}</script> where <script type="math/tex; mode=display">h(\vartheta) =1-\exp\bigg(-\int_0^\vartheta \Big(\frac{1}{f(\phi)-\phi} - \frac{1}{f(\phi)}\Big)\cdot f'(\phi) ~ d\phi\bigg)</script> I'm not sure if this integral representation for $h$ in terms of $f$ can be simplified any further using the differential equation for $f$ - perhaps it can. But the above is sufficient to show existence of a Bayes prior $\Lambda$ for which $\delta = \delta_\Lambda$. One can check that the above does in fact define a valid density function for $\Lambda_0$ - namely, $\Lambda_0$ is positive on $[0,1/2]$ and it has unit integral over that interval - and that it satisfies the requisite integral equation to ensure $\mathbb E_\Lambda[\vartheta|x] = f(x)$ for $x\in [0,1/2]$. Just to get an idea of what this distribution looks like, here's the density function $\Lambda_0$ on $[0,1/2]$:</p>

<p><center>
<img src="/img/2025-07-15-Fig4.png" alt="Fig4" />
</center></p>

<p>and the value of $p$ is approximately $\approx 0.713$.</p>

<p>This gives us a final definitive answer: the function $\delta$ is indeed a <em>minimax solution</em> of our problem. Whew!</p>

<hr>

<p>That wraps up my extended treatment of this problem. I <em>really</em> was not expecting to find exact expressions for the minimax solution and minimax expected loss, and I'm blown away by how strange-looking they are. I also wasn't expecting to encounter such tricky differential equations.</p>

<p>Overall, a damn cool problem!</p>

    <br>
<a href="/">go to homepage</a>
<hr>
<div id="license-statement">The posts on this website are licensed under <a href="https://creativecommons.org/licenses/by-nc/4.0/">CC-by-NC 4.0</a>.</div>
<div id="notbyai"><a href="https://notbyai.fyi/"><img src="/img/written-by-human.png"/><img src="/img/illustrated-by-human.png"/></a></div>
]]></content:encoded>
    </item>
    
    <item>
        <title>Untersuchung von einer schwingenden Beatty-artigen Folge</title>
        <link>http://franklin.dyer.me/oscillating-beatty-golden-ratio-sum-de.html</link>
        <guid>oscillating-beatty-golden-ratio-sum-de</guid>
        <pubDate>2025-06-20</pubDate>
        <content:encoded type="html"><![CDATA[
    <h2>Untersuchung von einer schwingenden Beatty-artigen Folge</h2>

<p>Die <a href="https://de.wikipedia.org/wiki/Beatty-Folge">Beatty-Folgen</a> sind ein weniger bekanntes Thema der Mathematik, das mich besonders interessiert. Dazu habe ich letztens die folgende schwankende Folge von Summen untersucht, die die Verteilung von geraden und ungeraden Zahlen in der Beatty-Folge des <a href="https://de.wikipedia.org/wiki/Goldener_Schnitt">Goldenen Schnitts</a> enthält:</p>

<p>
<script type="math/tex; mode=display">s(n) = \sum_{k=1}^n (-1)^{\lfloor \phi k\rfloor}</script>
</p>

<p>Diese Folge sieht so aus:</p>

<p><center>
<img src="/img/2025-06-20-Fig1.png" alt="Fig 1" />
</center></p>

<p>Wegen der Irrationalität von $\phi$ sehen die Höhen und Tiefen dieser Folge zwar ein wenig wie die einer Zufallsbewegung aus. In den Graphen tritt auch eine gewisse Selbstähnlichkeit auf. Ich habe sehr befriedigende Antworten zu den folgenden Fragen bezüglich $s(n)$ entdeckt, und ich würde den Lesern auch vorschlagen, mal zu versuchen, sie zu lösen:</p>

<ul>
<li>Sind die Werte von $s(n)$ begrenzt?</li>
<li>Wenn ja, was ist eine obere Grenze für $|s(n)|$?</li>
<li>Wenn nein, mit welcher Wachstumsklasse wachsen die Höchstwerte und Minderwerte von $s(n)$?</li>
<li>Wie kann man die Werte von $s(n)$ effizient kalkulieren?</li>
</ul>

<hr>

<p>Mithilfe einiger günstigen Sätzen betreffend die <a href="https://de.wikipedia.org/wiki/Kettenbruch">Kettenbrüche</a> lässt sich eine sehr nützliche rekursive Formel für $s(n)$ beweisen, die die Lösung dieser Fragen sehr viel vereinfacht.</p>

<p>Für die Konvergenten $p/q$ eines Kettenbruchs, der der irrationalen Zahl $\alpha$ entspricht, gilt: <script type="math/tex; mode=display">\bigg|\alpha - \frac{p}{q}\bigg| \leq \frac{1}{q^2}</script> und umgekehrt, wenn eine rationale Zahl $p/q$ näher als $1/2q^2$ zu $\alpha$ ist, muss es eine Konvergente des Kettenbruchs von $\alpha$ sein. Die Fibonacci-Zahlen sind die besondere Konvergenten der rationalen Zahl $\phi$, deshalb: seien $n,k\in\mathbb N$ sodass $n &lt; F_{k-1}$ und sei $N$ die nächste natürliche Zahl zu $\phi n$, so gilt <script type="math/tex; mode=display">|\phi n - N| \geq n\cdot \bigg|\phi - \frac{N}{n}\bigg|\geq \frac{1}{2n} > \frac{1}{2F_{k-1}}</script>
und andrerseits
<script type="math/tex; mode=display">|\phi F_k - F_{k+1}| = F_k\cdot \bigg|\phi - \frac{F_{k+1}}{F_k}\bigg|\leq \frac{1}{F_{k+1}} \leq \frac{1}{2F_{k-1}}</script>
</p>

<p>denn es gilt, dass $F_{k+1} \geq 2F_{k-1}$ für jede $k \geq 1$. Das heißt, die Größe $|\phi F_k - F_{k+1}|$ ist kleiner als die Distanz zwischen $\phi n$ und der nächsten ganzen Zahl, damit $\phi n$ und $\phi n +(\phi F_k - F_{k+1})$ der gleichen Abrundung entsprechen müssen: <script type="math/tex; mode=display">\lfloor \phi n \rfloor = \lfloor \phi n +  (\phi F_k - F_{k+1})\rfloor</script> und deshalb: <script type="math/tex; mode=display">\lfloor \phi (n + F_k)\rfloor = \lfloor \phi n\rfloor + F_{k+1}</script> Tatsächlich gilt diese Formel auch wann $n=F_{k-1}$, nicht nur $n &lt; F_{k-1}$. Diese Identität ergibt eine rekursive Formel, die beim Kaltulieren größerer Werte der Funktion $s(n)$ sehr behilflich ist:
<script type="math/tex; mode=display">\begin{align*}
s(F_{k}+n)
&amp;= \sum_{j=1}^{F_{k}+n} (-1)^{\lfloor \phi j\rfloor} \\
&amp;= \sum_{j=1}^{F_k} (-1)^{\lfloor \phi j\rfloor} + \sum_{j=F_k+1}^{F_k+n} (-1)^{\lfloor \phi j\rfloor} \\
&amp;= \sum_{j=1}^{F_k} (-1)^{\lfloor \phi j\rfloor} + \sum_{j=1}^{n} (-1)^{\lfloor \phi (j+F_k)\rfloor} \\
&amp;= \sum_{j=1}^{F_k} (-1)^{\lfloor \phi j\rfloor} + \sum_{j=1}^{n} (-1)^{\lfloor \phi j\rfloor + F_{k+1}} \\
&amp;= s(F_k) + (-1)^{F_{k+1}}s(n)
\end{align*}</script>
Die Folge von Restklassen modulo $2$ der Fibonacci-Zahlen ist periodisch modulo $3$, damit jede dritte Fibonacci-Zahl gerade ist. Deshalb können wir die Formel auf diese Weise simplifizieren: <script type="math/tex; mode=display">s(F_k + n) = s(F_k) + (-1)^{[\![ k \not\equiv 2 \bmod 3 ]\!]}s(n)</script>
</p>

<p>Mit Hilfe von dieser Rekursionsgleichung ist es ganz einfach zu beweisen, dass die Teilfolge $s(F_k)$ deshalb auch periodisch ist. Offensichtlich ist $s(F_{k+1})$ nur auf $s(F_k)$, $s(F_{k-1})$ und $k\bmod 3$ abhängig und durch manuellen Rechnung kann man einfach bestätigen, dass $s(F_1) = s(F_7)$ und $s(F_2) = s(F_8)$ und davon folgern, dass $s(F_k) = s(F_{k+6})$ für alle $k\in\mathbb N$:</p>

<p>
<script type="math/tex; mode=display">
\begin{array}{l|l|l|l}
n &amp; F_n &amp; (-1)^{F_n} &amp; s(F_n) \\\hline
1 &amp; 1 &amp; -1 &amp; -1 \\
2 &amp; 1 &amp; -1 &amp; -1 \\
3 &amp; 2 &amp; 1 &amp; -2 \\
4 &amp; 3 &amp; -1 &amp; -1 \\
5 &amp; 5 &amp; -1 &amp; 1 \\
6 &amp; 8 &amp; 1 &amp; 0 \\
7 &amp; 13 &amp; -1 &amp; -1 \\ 
8 &amp; 21 &amp; -1 &amp; -1 \\ 
9 &amp; 34 &amp; 1 &amp; -2 \\ 
10 &amp; 55 &amp; -1 &amp; -1 \\ 
11 &amp; 89 &amp; -1 &amp; 1 \\
12 &amp; 144 &amp; 1 &amp; 0 \\ 
\vdots &amp; \vdots &amp; \vdots &amp; \vdots \\ 
\end{array}
</script>
</p>

<p>Diese Periodizität trivialisiert die Rechnung des Glieds $s(F_k)$ in der rekursiven Formel und deshalb ergibt sie im Grunde eine Beziehung zwischen den Werten von $s(n)$ im Bereich $[F_k,F_{k+1}]$ und den Werten von $s(n)$ im Bereich $[1, F_{k-1}]$.</p>

<p><center>
<img src="/img/2025-06-20-Fig2.png" alt="Fig 2" />
</center></p>

<p>Der <a href="https://de.wikipedia.org/wiki/Satz_von_Zeckendorf">Satz von Zeckendorf</a> besagt, dass jede natürliche Zahl in eine Summe von Fibonacci-Zahlen aufgelöst werden kann, derart, wobei keine zwei aufeinanderfolgenden Fibonacci-Zahlen in der Summe vorkommen. Die natürliche Zahlen lassen sich algorithmisch sehr effizient in ihre Zeckendorfzerlegungen auflösen. Deshalb ermöglicht die rekursive Formel für $s(n)$ die Rechnung von exakten Werten von $s(n)$ auch wenn $n$ so groß ist, dass es gar nicht praktisch wäre, $s(n)$ als eine Summe von $n$ Termen zu berechnen. Zum Beispiel, ich habe ein kleines Haskell-Programm geschrieben, die unsere Formel benutzt, um die folgende Werte von $s(n)$ zu rechnen:</p>

<p>
<script type="math/tex; mode=display">
\begin{array}{l|l}
n &amp; s(F_n) \\\hline
10^{10} &amp; 0 \\
10^{50} &amp; 2 \\
10^{100} &amp; -12 \\
10^{500} &amp; -4 \\
10^{1000} &amp; 30 \\
10^{5000} &amp; 10 \\
10^{10000} &amp; 72 \\
\end{array}
</script>
</p>

<p>Mithilfe der rekursiven Formel ist es auch ziemlich einfach zu beweisen, dass die folgende Formeln für sonderliche Werten der Folge $s(n)$ gelten:</p>

<p>
<script type="math/tex; mode=display">\begin{align*}
&amp; s(F_3 + F_6 + \cdots + F_{6n+3}) = -2n \\
&amp; s(F_3 + F_6 + \cdots + F_{6n+3} + F_{6n+4}) = 2n-1 \\
&amp; s(F_3 + F_6 + \cdots + F_{6n+6}) = 2n \\
&amp; s(F_3 + F_6 + \cdots + F_{6n+6} + F_{6n+8}) = -(2n+1) \\
\end{align*}</script>
</p>

<p>was bestätigt, dass $s(n)$ weder nach oben noch nach unten beschränkt ist. (Ich glaube, dass diese Eingabewerte für $s$ sind genau jene, wo es seine Höchstwerte und Mindestwerte zum ersten Mal annimmt, aber es ist mir noch nicht gelungen, das zu beweisen.) Wir können folgern, dass die Höchstwerte von $s(n)$ <em>logarithmisch</em> wachsen, denn die Fibonacci-Zahlen exponentiell wachsen: <script type="math/tex; mode=display">\sup_{1\leq k\leq n} s(k) = \mathcal O(\log n)</script>
</p>

<p>Zum Schluss möchte ich diesen Blogeintrag mit ein paar weiteren Fragen abschließen. Erstens: kannst du diese Technik erweitern, um die Rechnung von Summen wie z.B. <script type="math/tex; mode=display">\sum_{k=1}^n \omega^{\lfloor \alpha k\rfloor}</script> zu ermöglichen, wobei $\omega$ eine komplexe Einheitswurzel ist und $\alpha\notin \mathbb Q$? Zweitens: offensichtlich ergibt $s(n)$ eine divergierende Reihe als $n\to\infty$, aber kannst du beweisen, ob oder nicht diese Reihe sich durch einer anderen Summierungsweise wie z.B. <a href="https://en.wikipedia.org/wiki/Cesàro_summation">Cesàro-Summierung</a> einen Wert zuzuschreiben läßt? Der folgende Graph, der die Cesaro-Partialsummen von $s(n)$ halblogarithmisch darstellt, deutet überzeugend an, dass diese Summen auch so divergieren:</p>

<p><center>
<img src="/img/2025-06-20-Fig3.png" alt="Fig 3" />
</center></p>

    <br>
<a href="/">go to homepage</a>
<hr>
<div id="license-statement">The posts on this website are licensed under <a href="https://creativecommons.org/licenses/by-nc/4.0/">CC-by-NC 4.0</a>.</div>
<div id="notbyai"><a href="https://notbyai.fyi/"><img src="/img/written-by-human.png"/><img src="/img/illustrated-by-human.png"/></a></div>
]]></content:encoded>
    </item>
    
    <item>
        <title>Eine Technik zur Vereinfachung von aus Rekursionsgleichungen entstandenen Wachstumsklassen</title>
        <link>http://franklin.dyer.me/moderate-recurrence-trick-de.html</link>
        <guid>moderate-recurrence-trick-de</guid>
        <pubDate>2025-06-01</pubDate>
        <content:encoded type="html"><![CDATA[
    <h2>Eine Technik zur Vereinfachung von aus Rekursionsgleichungen entstandenen Wachstumsklassen</h2>

<blockquote>
<p>Kannst du die asymptotische Wachstumsklassen der Folgen ausrechnen, die durch die folgenden Rekursionsgleichungen definiert sind? <script type="math/tex; mode=display">\begin{align*}T(n) &amp;= T(n - \sqrt{n}) + \tfrac{1}{\sqrt{n}} \\ T(n) &amp;= T(n - \sqrt{n}) + \sqrt{\tfrac{\log n}{n}} \\ T(n) &amp;= T(n-\log^2 n) + \tfrac{1}{n} \\ T(n) &amp;= T(n ~ / ~ 2) + \tfrac{1}{\log n} \\ T(n) &amp;= T(n ~ / ~ 2) + e^{\sqrt{\log n}} \\ T(n) &amp;= 2 ~ T(n ~ / ~ 2) + \tfrac{n\log\log n}{\log n}\end{align*}</script>
</p>
</blockquote>

<p>In einem späteren Entwurf meiner Bachelorthese, die hauptsächlich die grundsätzliche Eigenschaften der asymptotischen Wachstumsklassen und die Partialsummen behandelte, habe ich mich ein bisschen in die Rekursionsgleichungen vertieft. Leider war dieser Abschnitt der These nicht ausführlich genug entwickelt, um im entgültigen Entwurf gehalten zu sein. Aber drin gab es eine tolle Lösungstechnik, die mindestens einen Blogeintrag verdient!</p>

<p>Ein Schlüsselbegriff, der innerhalb meiner These entwickelt wird, ist die <em>Mäßigkeit</em> der Wachstumsklassen. Meiner Definition nach, die Wachstumsklasse von einer Folge $(a_n)$ ist <strong>mäßig</strong>, wenn <script type="math/tex; mode=display">(b_n)\in\Theta(n) ~ \implies ~ a_{b_n} = \Theta(a_n)</script> d.h., wenn man $(a_n)$ durch einer Folge $(b_n)$, die der linealen Wachstumsklasse entspricht, neu indiziert, ist seine Wachstumsklasse nicht geändert. Diese Eigenschaft hängt nur von der Wachstumsklasse von $(a_n)$ ab, also, wenn $a_n = \Theta(a'_n)$ und $(a_n')$ mäßig ist, dann muss $(a_n)$ auch mäßig sein. Viele häufige Wachstumsklassen zeigen diese Eigenschaft (z.B. polynomiales Wachstum, logarithmisches Wachstum, alle ihre Summen, Produkte und Wurzeln, usw) und es hat zur Folge viele andere günstige Eigenschaften.</p>

<p>Unter ihnen ist eine einfache aber sehr wichtige Eigenschaft, die sich uns als sehr nützlich zur Lösung der Rekursionsgleichungen beweisen wird. Es heißt: wenn $(a_n)$ mäßig ist und $b_n = \mathcal O(n)$, dann kann mann folgern, dass <script type="math/tex; mode=display">\sum_{k=n}^{n + b_n} a_n = \Theta(a_n b_n)</script> Diese Schlussfolgerung lässt sich ganz einfach beweisen und es ist von selbst nicht so bahnbrechend, aber wir werden gleich sehen, wie es zur Trivialisierung einiger Rekursionsgleichungen führt.</p>

<p>Überleg mal die folgende Rekursionsgleichung: <script type="math/tex; mode=display">T(n) = T(n - a_n) + b_n</script> wo $T(0) &gt; 0$ und $(a_n)$ eine Folge von natürlichen Zahlen ist, derart, dass $a_n &lt; n$ für alle $n\in\mathbb N$ (damit $T(n-a_n)$ wohldefiniert ist). Unter bestimmten Bedingungen kann man beweisen, dass die Wachstumsklasse von $T$ nur von den respektiven Wachstumsklassen von $(a_n)$ und $(b_n)$ abhängig ist. Diese Unabhängigkeit hat zur Folge, dass man $(a_n)$ oder $(b_n)$ willkürlich durch günstiger Folgen ersetzen kann, die aus der gleichen Wachstumsklassen gezogen sind, um die Berechnung der Wachstumsklasse von $T$ zu erleichtern. Und wenn $(a_n)$ und $(b_n)$ <em>mäßig</em> sind, dann (so behauptet die Eigenschaft der mäßigen Wachstumsklassen, auf die wir hingewiesen haben) trifft zu: <script type="math/tex; mode=display">b_n = \Theta\bigg(\sum_{k=n-a_n+1}^n \frac{b_k}{a_k}\bigg)</script> damit die durch der folgenden Rekursionsgleichung definierten Funktion $T^\ast$ der gleichen Wachstumsklasse als $T$ entspricht: <script type="math/tex; mode=display">T^\ast(n) = T^\ast (n - a_n) + \sum_{k=n-a_n + 1}^n \frac{b_k}{a_k}</script> Aber es ist ganz einfach zu beweisen, dass die folgende Definition für $T^\ast$ diese Rekursionsgleichung bestätigt: <script type="math/tex; mode=display">T^\ast(n) = \sum_{k=0}^n \frac{b_k}{a_k}</script> und deshalb: <script type="math/tex; mode=display">T(n) = \Theta\bigg(\sum_{k=0}^n \frac{b_k}{a_k}\bigg)</script> Diese Technik reduziert die Berechnung der Wachstumsklasse von $T$ auf die Berechnung der Wachstumsklasse dieser Partialsumme, und in meiner These habe ich ganz ausführlich viele Technik zur Berechnung der Wachtumsklasse von Partialsummen entwickelt. Kurz gefasst wissen wir, dass solange $(a_n)$ und $(b_n)$ bestimmte ziemlich einfache Bedingungen erfüllen:</p>

<p>
<script type="math/tex; mode=display">T(n) = T(n - a_n) + b_n ~ \implies ~ T(n) = \Theta\bigg(\sum_{k=1}^{a_n} \frac{b_k}{a_k}\bigg)</script>
</p>

<p>Zum Beispiel:</p>

<p>
<script type="math/tex; mode=display">\begin{align*}T(n) = T(n - \sqrt{n}) + \frac{1}{\sqrt{n}} ~ &amp;\implies ~ T(n) = \Theta(\log n) \\ T(n) = T(n - \sqrt{n}) + \sqrt{\frac{\log n}{n}} ~ &amp;\implies ~ T(n) = \Theta\big((\log n)^{3/2}\big) \\ T(n) = T(n-\log n) + \frac{1}{n} ~ &amp;\implies ~ T(n) = \Theta(\log\log n) \\ T(n) = T(n-\log^2 n) + \frac{1}{n} ~ &amp;\implies ~ T(n) = \Theta(1)\end{align*}</script>
</p>

<p>Die gleiche Technik kann einer ähnlichen Klasse von Rekursiongleichungen gewidmet werden: die sogennante <em>Teile-und-Herrsche Rekursionen</em>, die sehr oft in der Lehre von theoretischen Algorithmen auftuachen und die Folgende Form annehmen:</p>

<p>
<script type="math/tex; mode=display">T(n) = \alpha ~ T(n ~ / ~\beta) + a_n</script>
</p>

<p>wo $\alpha &gt; 0$ und $\beta &gt; 1$. Bevor man jene Technik anwendet muss man einen Ersatz durchführen: wenn man $c = \log_\beta\alpha$ definiert, dann kann man folgern</p>

<p>
<script type="math/tex; mode=display">n^{-c} T(n) = (n/\beta)^{-c} ~ T(n ~ / ~\beta) + n^{-c} a_n</script>
</p>

<p>und man kann deshalb beweisen (hier verbergen wir viele mühsame Einzelheiten, die mann in einem gültigen Beweis durcharbeiten muss), dass $T(n) = \Theta(n^c T^\ast(n))$, wo $T^\ast$ durch der folgenden Rekursionsgleichung definiert ist: <script type="math/tex; mode=display">T^\ast(n) = T^\ast(n/\beta) + \frac{a_n}{n^c}</script> Diese Rekursionsgleichung ist geeignet für unsere frühere Technik. Wenn $(a_n)$ mäßig ist, dann würde $T^\ast$ der gleichen Wachstumsklasse entsprechen, wenn wir es so definiert hätten: <script type="math/tex; mode=display">T^\ast(n) = T^\ast(n/\beta) + \sum_{k=n/\beta + 1}^n \frac{a_k}{k^{c+1}}</script> Wie früher, diese Rekursionsgleichung lässt sich ganz einfach durch einer analytischen Formel simplifizieren: <script type="math/tex; mode=display">T^\ast(n) = \sum_{k=1}^n \frac{a_k}{n^{c+1}}</script> damit <script type="math/tex; mode=display">T(n) = \Theta\bigg(n^c \sum_{k=1}^n \frac{a_k}{n^{c+1}}\bigg)</script> Also, insgesamt wissen wir (noch mal durch bestimmten Eigenschaften von $(a_n)$ bedingt), dass</p>

<p>
<script type="math/tex; mode=display">T(n) = \alpha ~ T(n ~ / ~\beta) + a_n ~ \implies ~ T(n) = \Theta\bigg(n^c \sum_{k=1}^n \frac{a_k}{k^{c+1}}\bigg)</script>
</p>

<p>Diese Technik lässt sich auch in vielen Fällen anwenden, in den der sogennanten <a href="https://en.wikipedia.org/wiki/Master_theorem_(analysis_of_algorithms)">Master-Theorem</a> wegen Beschränkungen auf $(a_n), \alpha, \beta$ leider nicht gilt, sogar ohne auf fortgeschrittene Befunde z.B. von dem Kalkül zu beruhen. Zum Beispiel, hier sind ein paar von aus Rekursionsgleichungen entstandene asymptotische Formeln, die sich durch den Master-Theorem nicht lösen lassen:</p>

<p>
<script type="math/tex; mode=display">\begin{align*}T(n) = T(n ~ / ~ 2) + \frac{1}{\log n} ~ &amp;\implies ~ T(n) = \Theta(\log \log n) \\ T(n) = T(n ~ / ~ 2) + e^{\sqrt{\log n}} ~ &amp;\implies ~ T(n) = \Theta\big(n\sqrt{\log n}\cdot e^{\sqrt{\log n}}\big) \\ T(n) = 2 ~ T(n ~ / ~ 2) + \frac{n\log\log n}{\log n} ~ &amp;\implies ~ T(n) = \Theta(n \log^2\log n)\end{align*}</script>
</p>

    <br>
<a href="/">go to homepage</a>
<hr>
<div id="license-statement">The posts on this website are licensed under <a href="https://creativecommons.org/licenses/by-nc/4.0/">CC-by-NC 4.0</a>.</div>
<div id="notbyai"><a href="https://notbyai.fyi/"><img src="/img/written-by-human.png"/><img src="/img/illustrated-by-human.png"/></a></div>
]]></content:encoded>
    </item>
    
    <item>
        <title>Variación acotada y el operador de traslado</title>
        <link>http://franklin.dyer.me/bounded-variation-translation-operator-es.html</link>
        <guid>bounded-variation-translation-operator-es</guid>
        <pubDate>2025-05-20</pubDate>
        <content:encoded type="html"><![CDATA[
    <h2>Variación acotada y el operador de traslado</h2>

<p>Recientemente he tenido que tramitar algunos datos físicos de tipo serie cronológica e investigar formas de medir la exactitud de un modelo que produce tales series. Una medida típica es la norma $\lVert \cdot\rVert_1$, con la que se puede cuantificar la "distancia" entre funciones reales $f,g$ así: <script type="math/tex; mode=display">\lVert f-g\rVert_1 := \int_\mathcal{D} |f-g| ~ dt</script> Sucede que el modelo físico que estoy investigando produce a veces datos ligeramente retrasados temporalmente. Eso me ha animado a pensar un poco más teóricamente (aunque probablemente no importe mucho para ese proyecto) cuánto error puede surgir de translados pequeños. Es decir, si $T_\Delta$ representa el operador de translado: <script type="math/tex; mode=display">T_\Delta f(x) := f(x + \Delta)</script> entonces ¿qué se puede decir sobre la distancia $\lVert T_\epsilon f - f\rVert_1$, cuando $\epsilon$ es un número real positivo y pequeñito? </p>

<p><center><img src="/img/2025-05-20-Fig1.png" alt="Fig 1" /></center></p>

<p>Poco cuesta convencerse de que para la mayoría de funciones no patológicos, tanto funciones continuas como funciones escalonadas, la norma $\lVert T_\epsilon f - f\rVert_1$ disminuye <em>linealmente</em> como función de $\epsilon\to 0$. Pero precisamente ¿qué condiciones tiene que cumplir $f$ para que esto sea verdad?</p>

<p>He encontrado una condición suficiente en $f$ muy chula para que $\lVert T_\epsilon f - f\rVert_1 = \mathcal O(\epsilon)$ mientras que $\epsilon\to 0$: la <a href="https://es.wikipedia.org/wiki/Variación_acotada">variación acotada</a>. Aquí me pongo a bosquejar una prueba y también presentar un ejemplo de una aplicación sin la propiedad de variación acotada para la cual $\lVert T_\epsilon f - f\rVert_1$ disminye más lentamente.</p>

<hr>

<p>Primero demonstramos que cualquiera aplicación integrable $f:[0,1]\to \mathbb R$ con variación acotada cumple $\lVert T_\epsilon f - f\rVert_1 = \mathcal O(\epsilon)$. Para aclarar: en este dominio $[0,1]$ definimos el operador $T_\Delta$ de manera envolvente como si fuera el dominio un toro, es decir, definimos $T_\Delta f(x)$ como $T_\Delta f(x + \Delta \bmod 1)$. Así que, primero suponemos que $f:[0,1]\to \mathbb R$ es una función acotada, y que $B &gt; 0$ sea una cota superior concreta en su variación.</p>

<p>Que sea $\epsilon \in (0, 1)$ arbitrario y que sea $2n$ el número entero par más grande para el cual $2n\epsilon &lt; 1$. Como $f$ tiene variación acotada por hipótesis, también tiene que ser acotada, así que</p>

<p>
<script type="math/tex; mode=display">\int_0^1 |T_\epsilon f - f| ~ dx = \int_0^{2n\epsilon} |T_{\epsilon} f - f | ~ dx + \mathcal O(\epsilon)</script>
</p>

<p>Definimos ahora una función $\Delta(I,\epsilon)$ así, cuyos argumentos son un intervalo $I\subset [0,1]$ y un número real positivo pequeño $\epsilon &gt; 0$:</p>

<p>
<script type="math/tex; mode=display">\Delta(I,\epsilon) := \sup_{x\in I} |f(x+\epsilon) - f(x)|</script>
</p>

<p>Como antes, de la expresión $f(x+\epsilon)$ entendemos $f(x+\epsilon \bmod 1)$. Fíjate que esta expresión siempre  le da a $\Delta(I,\epsilon)$ un valor finito como $f$ es acotada. Podemos derivar una cota mayor en $\lVert T_\epsilon f - f \rVert_1$ partiendo el intervalo de integración en muchas partes y expresando el valor máximo de $| T_\epsilon f - f|$ en cada subintervalo en términos de $\Delta$:</p>

<p>
<script type="math/tex; mode=display">\int_0^1 | T_\epsilon f - f | ~ dx = \sum_{k=0}^{2n-1}\int_{k\epsilon}^{(k+1)\epsilon} |T_\epsilon f - f| ~ dx \leq \epsilon\sum_{k=0}^{2n-1} \Delta(k\epsilon + [0,\epsilon], ~ \epsilon)</script>
</p>

<p>Que sea $\delta \ll 1/n$ (por ejemplo, $\delta = 1/n^2$) y que sea $x_0,x_1,\cdots, x_{2n-1}$ una serie de valores tales que $x_k\in k\epsilon + [0,\epsilon]$ y $|f(x_k + \epsilon) - f(x_k)| \geq \Delta(k\epsilon + [0,\epsilon], ~ \epsilon) - \delta$, pues tales valores tienen que existir debido a la definición de $\Delta$ como un supremo. Repartiendo la suma que aparece en nuestra cota superior en sus términos pares e impares, se tiene que:</p>

<p>
<script type="math/tex; mode=display">\sum_{k=0}^{2n-1} \Delta(k\epsilon + [0,\epsilon], \epsilon) = \sum_{k=0}^{n-1} \Delta(2k\epsilon + [0,\epsilon], \epsilon) + \sum_{k=0}^{n-1} \Delta((2k+1)\epsilon + [0,\epsilon], \epsilon)</script>
</p>

<p>Considerando primero la suma con los términos pares, se ve que</p>

<p>
<script type="math/tex; mode=display">\sum_{k=0}^{n-1} \Delta(2k\epsilon + [0,\epsilon], \epsilon) \leq n\delta + \sum_{k=0}^{n-1} |f(x_{2k}+\epsilon)-f(x_{2k})|\leq n\delta + B</script>
</p>

<p>debido a la definición de la cota $B$ en la variación de $f$, junto con el hecho de que $x_0, x_0 + \epsilon, x_1, x_1 + \epsilon, \cdots$ es una sucesión creciente dentro del intervalo $[0,1]$. Semejantemente se puede derivar una cota superior para los términos impares. Sumando estas cotas se obtiene una cota en la suma entera:</p>

<p>
<script type="math/tex; mode=display">\sum_{k=0}^{2n-1} \Delta(k\epsilon + [0,\epsilon], \epsilon) \leq 2n\delta + 2B</script>
</p>

<p>Y pues como $\delta &gt; 0$ podría haber sido arbitrariamente pequeña, se tiene también:</p>

<p>
<script type="math/tex; mode=display">\sum_{k=0}^{2n-1} \Delta(k\epsilon + [0,\epsilon], \epsilon) \leq 2B</script>
</p>

<p>Entonces obtenemos una cota de $\mathcal O(\epsilon)$ en el integral que consideramos:</p>

<p>
<script type="math/tex; mode=display">\int_0^1 | T_\epsilon f - f | ~ dx \leq 2B\epsilon + \mathcal O(\epsilon) = \mathcal O(\epsilon)</script>
</p>

<hr>

<p>En cuanto a contraejemplos, no es muy difícil encontrar funciones que faltan la propiedad de variación acotada tales que $\lVert T_\epsilon f - f\rVert_\epsilon$ no es $\mathcal O(\epsilon)$. Considérate por ejemplo $f(x) = \log x$ o bien $f(x) = 1/\sqrt{x}$ para $x\in (0,1]$ junto con $f(0) = 0$. Cuesta un poco más encontrar contraejemplos <em>continuos</em>, pero se los puede hallar mediante una construcción parecida al <a href="https://es.wikipedia.org/wiki/Seno_del_topólogo">seno del topólogo</a>. </p>

<p>Define la aplicación $f:[0,1]\to\mathbb R$ por segmentos en una familia de intervalos $[0,1/2), [1/2,3/4), [3/4,7/8), \cdots$ de tamaño que disminuye geométricamente, tal que en cada intervalo $f$ es un sinusoide cuyo periodo parte su intervalo respectivo. Se puede asignarle al sinusoide número $n$ un número entero de periodos $N_n$ y una amplitud $a_n$, tal que para cada $n\in\mathbb N$, <script type="math/tex; mode=display">f(x) = a_n\sin\big(2^{n+1}N_n\pi x\big)</script> para todo $x\in [1-2^{n}, 1-2^{n+1})$. Una función así definida será continua siempre y cuando $a_n\to 0$ mientras que $n\to\infty$. </p>

<p>Dada esta definición, se ve que cuando se traslada $f$ por $\epsilon = (2^{n+1} N_n)^{-1}$, o sea medio periodo del sinusoide número $n$, se produce "interferencia destructiva" dentro del n-ésimo intervalo de tal manera que los puntos máximos de $y = f(x)$ y de $y = f(x + \epsilon)$ se desalinean. </p>

<p><center><img src="/img/2025-05-20-Fig2.png" alt="Fig2" /></center></p>

<p>Se puede demonstrar que la cota inferior siguiente vale para este valor fijo de $\epsilon$: <script type="math/tex; mode=display">\lVert T_\epsilon f - f\rVert_1 \geq  + \frac{4}{\pi} \cdot \frac{a_n}{2^n}\cdot \Big(1 - \frac{1}{N_n}\Big)</script>
</p>

<p>Si se define, por ejemplo, $a_n = 1/n$ y $N_n = n^2 2^n$, entonces $\lVert T_\epsilon f - f\rVert_1 = \Omega(\sqrt{\epsilon})$ según esta cota!</p>

<p>Todavía me quedan algunas preguntas no contestadas. ¿Es posible que $\lVert T_\epsilon f - f\rVert_1$ ni disminuya a $0$ mientras que $\epsilon\to 0$, siendo $f$ una aplicación continua? Aunque no es cierto para toda función integrable $f$ que $\lVert T_\epsilon f - f\rVert\to 0$ mientras que $\epsilon\to 0$, ¿tiene que ser $0$ un púnto límite de esta cantidad mientras $\epsilon\to 0$?</p>

    <br>
<a href="/">go to homepage</a>
<hr>
<div id="license-statement">The posts on this website are licensed under <a href="https://creativecommons.org/licenses/by-nc/4.0/">CC-by-NC 4.0</a>.</div>
<div id="notbyai"><a href="https://notbyai.fyi/"><img src="/img/written-by-human.png"/><img src="/img/illustrated-by-human.png"/></a></div>
]]></content:encoded>
    </item>
    
</channel>
</rss>