Appearance
Mathematik für Physiker 2
- Dozent: Geschke
- Semester: Sommer 2012
Übungszettel
Cantormenge
Das Programm für die Cantormenge aus Übungsblatt 9, Aufgabe 1, ist hier:
python
import pprint
def main():
printer = pprint.PrettyPrinter(indent=4)
# Maximalwert für die Iterationen: $n_\mathrm{max}:=19$
nmax = 19
# Die gegebene Anfangsmenge $M_0=\left\lbrace[0,1]\right\rbrace$. Das
# ganze wird hier als Tupel in einer Liste dargestellt. Die Menge $M$
# (hier als Liste implementiert) enthält dann die Intervalle $I$ (hier als
# Tupel implementiert).
M = [(0.0, 1.0)]
# Gehe nun die $n=1,...,n_\mathrm{max}$ durch.
for n in range(1, nmax + 1):
# Wende die Iterationsvorschrift für $M_n$ mit $M_{n-1}$ an.
M = schritt(M, n)
# Gebe $n$ und $|M_n|$ aus.
print "n: {n:2d}, Inhalt {inhalt:.10f}".format(n=n, inhalt=inhalt(M))
# Gebe für $n\leq4$ die $I\in{}M_n$ aus.
if n <= 4:
printer.pprint(M)
# Wende die Formel $T_n(I)$ für jedes $I\in{}M$ an.
# $M:=\bigcup_{I\in{}M}T_n(I)$
def schritt(M, n):
return [item for sublist in (T(n, I) for I in M) for item in sublist]
# Berechne ein $\epsilon$ aus dem $n$ und schneide dieses aus $I$ heraus.
def T(n, I):
a = I[0]
b = I[1]
# $\epsilon := 2^{2-n-1}$
epsilon = 2.0**(-2.0*n -1)
# $\left[a,\frac{a+b}2-\frac{\epsilon}{2}\right]\cup\left[\frac{a+b}2+\frac{\epsilon}{2},b\right]$
return [(a, (a+b)/2-epsilon/2), ((a+b)/2+epsilon/2, b)]
# Berechne den Inhalt von $I$, indem der Durchmesser der einzelnen Teile
# addiert wird.
def inhalt(M):
# Sei $I$ gegeben durch $[a,b]$. Dann ist die Summe:
# $\sum_{I\in{}M}|I|=\sum_{I\in{}M}\left(b-a\right)$
return sum([I[1]-I[0] for I in M])
if __name__ == '__main__':
main()