<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Python on Klaus K. Holst</title>
    <link>https://holst.it/tags/python/</link>
    <description>Recent content in Python on Klaus K. Holst</description>
    <generator>Hugo -- 0.148.2</generator>
    <language>en</language>
    <lastBuildDate>Fri, 16 Oct 2020 18:56:00 +0200</lastBuildDate>
    <atom:link href="https://holst.it/tags/python/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Cantor set</title>
      <link>https://holst.it/posts/cantor/</link>
      <pubDate>Fri, 16 Oct 2020 18:56:00 +0200</pubDate>
      <guid>https://holst.it/posts/cantor/</guid>
      <description>&lt;p&gt;The &lt;strong&gt;Cantor ternary set&lt;/strong&gt; is a remarkable subset of the real numbers
named after German mathematician Georg Cantor who described the set
in 1883. It has the same cardinality as \(\mathbb{R}\), yet it
has zero Lebesgue measure.&lt;/p&gt;
&lt;p&gt;The set can be constructed recursively by first considering the unit
interval \(C_{0}=[0,1]\). In the next step, we divide the set into
three equal parts and discard the open middle set. This leads to the
new set \(C_{1}=[0,\tfrac{1}{3}]\cup[\tfrac{2}{3},1]\). This procedure
is repeated on the two remaining subintervals \([0,\tfrac{1}{3}]\) and
\([\tfrac{2}{3},1]\), and iteratively on all remaining subsets such
that \(C_n = \tfrac{1}{3}C_{n-1} \cup (\tfrac{2}{3} +
\tfrac{1}{3}C_{n-1})\). The &lt;strong&gt;Cantor set&lt;/strong&gt; is defined by the limit as
\(n\to\infty\), i.e., \(\mathcal{C} = \cap_{n=0}^{\infty} C_{n}\).&lt;/p&gt;
&lt;p&gt;The recursion can be illustrated in python in the following way&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00a&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#0aa;text-decoration:underline&#34;&gt;numpy&lt;/span&gt; &lt;span style=&#34;color:#00a&#34;&gt;as&lt;/span&gt; &lt;span style=&#34;color:#0aa;text-decoration:underline&#34;&gt;np&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00a&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#0a0&#34;&gt;transform_interval&lt;/span&gt;(x, scale=&lt;span style=&#34;color:#099&#34;&gt;1.0&lt;/span&gt;, translation=&lt;span style=&#34;color:#099&#34;&gt;0.0&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00a&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0aa&#34;&gt;tuple&lt;/span&gt;(&lt;span style=&#34;color:#0aa&#34;&gt;map&lt;/span&gt;(&lt;span style=&#34;color:#00a&#34;&gt;lambda&lt;/span&gt; z: z * scale + translation, x))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00a&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#0a0&#34;&gt;Cantor&lt;/span&gt;(n):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00a&#34;&gt;if&lt;/span&gt; n==&lt;span style=&#34;color:#099&#34;&gt;0&lt;/span&gt;: &lt;span style=&#34;color:#00a&#34;&gt;return&lt;/span&gt; {(&lt;span style=&#34;color:#099&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#099&#34;&gt;1&lt;/span&gt;)}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      Cleft = &lt;span style=&#34;color:#0aa&#34;&gt;set&lt;/span&gt;(&lt;span style=&#34;color:#0aa&#34;&gt;map&lt;/span&gt;(&lt;span style=&#34;color:#00a&#34;&gt;lambda&lt;/span&gt; x: transform_interval(x, scale=&lt;span style=&#34;color:#099&#34;&gt;1&lt;/span&gt;/&lt;span style=&#34;color:#099&#34;&gt;3&lt;/span&gt;), Cantor(n-&lt;span style=&#34;color:#099&#34;&gt;1&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      Cright = &lt;span style=&#34;color:#0aa&#34;&gt;set&lt;/span&gt;(&lt;span style=&#34;color:#0aa&#34;&gt;map&lt;/span&gt;(&lt;span style=&#34;color:#00a&#34;&gt;lambda&lt;/span&gt; x: transform_interval(x, translation=&lt;span style=&#34;color:#099&#34;&gt;2&lt;/span&gt;/&lt;span style=&#34;color:#099&#34;&gt;3&lt;/span&gt;), Cleft))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00a&#34;&gt;return&lt;/span&gt; Cleft.union(Cright)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
  </channel>
</rss>
