Category Archives: 2D

Polynome mal anders

Gerade habe ich mich mit Tschebyschow-Polynomen beschäftigt. Das sind spezielle orthogonale Polynome, die in Mathematik und Physik für die Lösung gewisser Differentialgleichungen nützlich sind. Trockene Mathematik braucht hier nicht zu sein, ich möchte nur einmal gewonnene schöne Darstellungen zeigen.

Die Serie der Polynome ist:

Tschebyschow-Polynome in 3DT0(x) = 1             T1(x) = x
T2(x) = 2x2 – 1    T3(x) = 4x3 – 3x
T4(x) = 8x4 – 8x2 + 1
T5(x) = 16x5 – 20x3 + 5x
T6(x) = 32x6 – 48x4 + 18x2 – 1
T7(x) = 64x7 − 112x5 + 56x3 − 7x

Soweit, so unverdächtig. Schauen wir uns nun verschiedene Darstellungsmöglichkeiten an.

Weiterlesen

Schreibe einen Kommentar

Farbverlauf auf einem Text

TikZ_farbig1Nach dem ich letztens zweifarbige Buchstaben erzeugt habe, folgt nun eine weitere Farbspielerei. Sie basiert auf der TeX.sx Frage How to shade a single character?  Dort sollte ein Zeichen so mit einem Farbverlauf versehen werden, dass es trotzdem im normalen Text verwendet werden kann. Es darf also keinen zusätzlichen Rand haben und muss sich an der Grundlinie des umgebenden Textes ausrichten.

Damit man unterschiedliche Zeichen oder Texte verschieden färben kann, bietet es sich an, einen Befehl \fadingtext[<farboptionen>]{<text>} zu definieren. Zusätzlich wird noch ein neue Stil fading text eingeführt, über den sich die Farben voreinstellen lassen. Weiterlesen

Kommentare: 3

Viereck mit Winkeln, Strecken und Beschriftung

Heute erstellen wir ein simples Viereck, nach dem hier ein Nutzer fragte.

Namenlos-11a

 

Weiterlesen

Schreibe einen Kommentar

Trigonometrische Substitution

Folgender Plot zeigt eine Übersicht der sogen. Generalsubstitution, zum Lösen von Integralen des Typs    ∫f(sin(x), cos(x), tan(x))dx

Die Winkelbezeichnungen habe ich dabei, um rasch ein TikZ-Bild zu erstellen,  nach Augenmaß gesetzt.

Wer es professionell machen möchte, kann hier schauen:

Wie setze ich am besten die Winkelbeschriftung bei selbstgezeichneten Winkeln?

Namenlos-11a

(Klicke auf das Bild)

Weiterlesen

Kommentare: 4

Baum von Wahrscheinlichkeiten

Der folgende Graph zeigt ein einfaches Baumdiagramm, für die Wahrscheinlichkeiten beim Münzwurf.

Häufige auftretenden Styles wurden dabei allgemein definiert. Der Knackpunkt war hier ein wenig die Färbung der Wurzel, des ‘circle split’ mit der background-Bibliothek.

 

\documentclass[varwidth, margin=5pt]{standalone}
\usepackage[ngerman]{babel}
\usepackage{selinput}
\SelectInputMappings{adieresis={ä},  germandbls={ß}}
\usepackage{tikz}
\usetikzlibrary{calc, shapes, backgrounds}
\usepackage{amsmath, amssymb}
 \pagecolor{olive!50!yellow!50!white
}
%===========
\begin{document}
%===========
\tikzset{
zahl/.style={fill=blue!70!yellow, text=black, label=center:\textsf{\Large Z}},
kopf/.style={fill=orange!90!blue, label=center:\textsf{\Large K}}
}
\begin{tikzpicture}
[scale=1.5, transform shape,
thick,
every node/.style={draw, circle, minimum size=10mm
},
grow=down,  %Zeichenrichtung
level 1/.style={sibling distance=3cm},
level 2/.style={sibling distance=4cm},
level 3/.style={sibling distance=2cm},
level distance=1.25cm]

\node[fill=gray!40, shape=rectangle, rounded corners, minimum width = 6cm] {Münzwurf}
child{ node[shape=circle split,draw,line width=1pt,minimum size=10mm,inner sep=0mm, font=\sffamily\large, rotate=30]  (Start) { \rotatebox{-30}{K} \nodepart{lower}  \rotatebox{-30}{Z}}
 child {node[kopf] (A) {}
         child {node[kopf] (B) {}}
        child {node[zahl] (C) {}}
}
 child {node[zahl] (D) {}
          child {node[kopf] (E) {}}
          child {node[zahl] (F) {}}
 }
};

%Füllung der Wurzel = "Start"
\begin{scope}[on background layer, rotate=30]
    \fill[kopf] (Start.base) ([xshift=0mm]Start.east) arc (0:180:5mm)--cycle;
    \fill[zahl] (Start.base) ([xshift= 0pt]Start.west) arc (180:360:5mm)--cycle;  
\end{scope
}

%Beschriftung
\path (Start) -- (A) node [draw=none,  near start, left] {$0.5$};
\path (A) -- (B) node [draw=none,  near start, left] {$0.5$};
\path (A) -- (C) node [draw=none,  near start, right] {$0.5$};
\path (Start) -- (D) node [draw=none,  near start, right] {$0.5$};
\path (D) -- (E) node [draw=none,  near start, left] {$0.5$};
\path (D) -- (F) node [draw=none,  near start, right] {$0.5$
};
%
\node[below=11pt, draw=none, name=X] at (B) {$0.25$};
\node[below=11pt, draw=none] at (C) {$0.25$};
\node[below=11pt, draw=none, name=Y] at (E) {$0.25$};
\node[below=11pt, draw=none] at (F) {$0.25$
};
%
\draw[densely dashed, rounded corners, thin] (X.south west) rectangle (Y.north east);

\end{tikzpicture}
%===========
\end{document}
%===========
Namenlos-11a
Ein Kommentar

Zweifarbige Buchstaben

ZweifarbigesBMitunter werden in Foren lustige Sachen gewünscht: einmal brauchte jemand ein zweifarbiges Zeichen, die linke Seite sollte grün und die rechte rot sein.

Für das zweifarbige Zeichen wird ein Befehl \bicolorletter mit einem optionalen Argument für die Farben und einem obligatorischen für den Buchstaben definiert.

Der Befehl reserviert zunächst mit \phantom den benötigten Platz und fügt dann mit Hilfe von \clip die beiden farbigen Buchstabenhälften ein. Die beiden Farben können dabei über Stile festgelegt und geändert werden.

\documentclass[margin=5mm,varwidth]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\tikzset{
   bclleft/.style={.},
   letter left/.style={bclleft/.append style={#1}},
   bclright/.style={.},
   letter right/.style={bclright/.append style={#1}},
}
\newcommand\bicolorletter[2][]{%
   \tikz[baseline=(n.base),inner sep=0pt,outer xsep=0pt,#1]{
     \node(n){\phantom{#2}};
     \foreach \a/\c in {west/bclleft,east/bclright}{
       \begin{scope}
         \clip(n.south)rectangle(n.north \a);
         \node[\c]at(n){#2};
       \end{scope}
     }}}
\begin{document}
\tikzset{letter left=green,letter right=red}
Erst ein grün-roter Buchstabe: \bicolorletter{B}
\par
und dann ein orange-brauner:
\bicolorletter[letter left=orange,letter right=brown]{B}
\par
und wieder ein grün-roter: \bicolorletter{M}
\end{document
}

 

ZweifarbigeBuchstaben

Wie man in dem Code sieht, kann zum einen die Farbkombination grün-rot mit
Weiterlesen

Kommentare: 3

Dynamische Füllhöhe eines Glases

Meine ersten Schritte in Foren habe ich vor ungefähr 5 1/2 Jahren auf dem Matheplaneten gemacht. In einer meiner ersten Antworten sollte damals ein Befehl definiert werden, mit dem ein unterschiedlich hoch gefülltes Wasserglas gezeichnet werden kann und der deshalb die relative Füllhöhe, also einen Wert zwischen 0 und 1, als Argument erwartet:

\Glas{<relative fuellhoehe>}

Der Pfad für das leere Glas war bereits vorgegeben:

\draw[very thick] (0,2) -- (0.25,0) -- (1.5,0) -- (1.75,2);

glasleer

Zur besseren Übersicht habe ich hier ein Gitternetz (Linienabstand: 0.25 cm) darunter gelegt und den Koordinatenursprung markiert.

Damaliger Lösungsvorschlag:
Weiterlesen

Kommentare: 2

Iterierte Fraktale

Im Anschluss an die L-Systeme befasste ich mich mit Iterierten Funktionen-Systemen, kurz IFS. Auch hier haben wir wiederholte Transformationen: der Raum wird immer wieder in sich selbst abgebildet. Hierbei kann es verschiedene Abbildungsvorschriften geben. Das tun wir am besten unendlich oft :-) und betrachten die Menge im Raum, die bei alledem invariant bleibt. Diese kann nun fraktal sein!

Genug der Theorie, die man auf Wikipedia einstiegshalber und tiefer in tollen Büchern nachlesen kann. Wie produzieren wir sowas nun? Der einfachste Ansatz ist das sogenannte “Chaosspiel”: wie nehmen einen Punkt her, und wenden eine der Transformationen an. Da es um Punktmengen geht, die invariant sind unter den Transformationen, muss der Zielpunkt wieder in der Menge landen. Mit diesem neuen Punkt wiederholen wir das, abertausendfach, bis sich ein Bild abzeichnet.

Dann tun wir das doch mit dem berühmten Barnsley-Farn!

Doch wie? Wir brauchen Schleifen, und die Möglichkeit zur Berechnung affiner Transformationen. Mit pgfmath ist das machbar, aber meiner Ansicht nach gar nicht gut leserlich. Ich nehme dafür Lua her, um einmal zu nutzen, dass ich eine Programmiersprache im üblichen Sinn integrieren kann. Damit ist das einfach geschrieben. Die Parameter schreibe ich in eine Matrix, also Transformations-Parmeter und Wahrscheinlichkeiten der Transformations-Auswahl im Chaos-Spiel – lassen wir den Punkt rennen!

Wir benötigen zum Übersetzen LuaTeX und Geduld. Beim Ausprobieren oder Parameter-Spielen am besten erstmal geringe Iterations-Anzahl nehmen.

\documentclass[tikz,border=10pt]{standalone}
\usepackage{luacode}
\begin{luacode*}
  function barnsley(iterations,options)
    local x = math.random()
    local y = math.random()
    local m = {
        0.0,   0.0,   0.0, 0.16, 0.0,  0.0, 0.01,
       0.85,  0.04, -0.04, 0.85, 0.0,  1.6, 0.85,
        0.2, -0.26,  0.23, 0.22, 0.0,  1.6, 0.07,
      -0.15,  0.28,  0.26, 0.24, 0.0, 0.44, 0.07
    }
    local pm = { m[7], m[7] + m[14], m[7] + m[14] + m[21] }
    if options ~= [[]] then
      tex.sprint("\\draw[" .. options .. "] ")
    else
      tex.sprint("\\addplot coordinates{")
    end
    for i=1, iterations do
      p = math.random()
      if     p < pm[1] then
        case = 0
      elseif p < pm[2] then
        case = 1
      elseif p < pm[3] then
        case = 2
      else
        case = 3
      end
      newx = (m[7*case+1] * x) + (m[7*case+2] * y) + m[7*case+5]
         y = (m[7*case+3] * x) + (m[7*case+4] * y) + m[7*case+6]
         x = newx
      tex.sprint("("..x..","..y..") circle (0.05pt)")
    end
    tex.sprint(";")
  end
\end{luacode*}
\begin{document}
\begin{tikzpicture}
  \directlua{barnsley(100000, [[color=green!50!black,fill]])}
\end{tikzpicture}
\end{document
}
Barnsley-Farn

Auf TeXwelt habe ich noch Variationen erzeugt, dort einmal mittels pgfplots ausgegeben.

Farn-Variation Farn-Variation

Und auch das berühmte Sierpinski-Dreieck kann man, statt als L-System, auch als IFS-Fraktal im Chaos-Spiel erzeugen, der ganz analoge Quellcode steht auch wie oben verlinkt auf TeXwelt.de:

Sierpinski-Dreieck

Nun das ganze noch in drei Dimensionen, oder? :-) Kein Scherz – analog zum obigen Dreieck gibt es den quadratischen Sierpinski-Teppich, der in drei Dimensionen zum Menger-Schwamm wird.

 

Ein Kommentar