Wie zeichne ich mit der TikZ-Datenvisualisierung eine Hystereseschleife?

Wie zeichne ich mit der TikZ-Datenvisualisierung eine Hystereseschleife?

Entschuldigen Sie mein falsches Englisch.

Ich habe den Code von geändertHierum es für anzupassen TikZ datavisualization. Hier ist der angepasste Code:

\documentclass{scrartcl}
\usepackage{tikz}
\usepackage[per-mode = fraction]{siunitx}
\usetikzlibrary{datavisualization.formats.functions}
\begin{document}
  \begin{tikzpicture}
    \datavisualization[
                       scientific axes = {clean, end labels},
                       all axes = {ticks and grid = {major at = 0}},
                       x axis = {label = $\frac{H}{\si{\A\per\m}}$},
                       y axis = {label = $\frac{B(H)}{\si{\tesla}}$},
                       data/format = function,
                       visualize as smooth line/.list = {left, right}
                      ]
    data[set = left] {
      var x : interval [-7 : 7];
      func y = 5 / (1 + exp(-1.7 * \value x - 1.5)) - 2.5;
    }
    data[set = right] {
      var x : interval [-7 : 7];
      func y = 5 / (1 + exp(-1.7 * \value x + 1.5)) - 2.5;
    }
    %accents important points
    info {
      \draw (visualization cs:x = {(-1.5 / 1.7)}, y = 0) circle [radius = 1pt]
        node [left, font = \footnotesize] {$H_C$};
    }
    info {
      \draw (visualization cs:x = 0, y = 1.59) circle [radius = 1pt]
        node [left, font=\footnotesize] {$B_R$};
    }
    info {
      \draw (visualization cs:x = 7, y = 2.5) circle [radius = 1pt]
        node [above, font=\footnotesize] {$B_S$};
    };
  \end{tikzpicture}
\end{document}

Aber ich bekomme viele dieser Fehler:

! Dimension zu groß. \pgfmath@iterate...\pgfmath@xa \ifdim \pgfmath@x

Man kann das TikZ fpugleiche verwenden wieHier,HierUndHier. Hier ist mein Code:

\documentclass{scrartcl}
\usepackage{tikz}
\usepackage[per-mode = fraction]{siunitx}
\usetikzlibrary{datavisualization.formats.functions,fpu}
\begin{document}
  \begin{tikzpicture}
    \datavisualization[
                       scientific axes = {clean, end labels},
                       all axes = {ticks and grid = {major at = 0}},
                       x axis = {label = $\frac{H}{\si{\A\per\m}}$},
                       y axis = {label = $\frac{B(H)}{\si{\tesla}}$},
                       data/format = function,
                       visualize as smooth line/.list = {left, right}
                      ]
    data[set = left] {
      var x : interval [-7 : 7];
      \pgfkey{/pgf/fpu, /pgf/fpu/output format=fixed}
      func y = 5 / (1 + exp(-1.7 * \value x - 1.5)) - 2.5;
      \pgfkeys{/pgf/fpu=false}
    }
    data[set = right] {
      var x : interval [-7 : 7];
      \pgfkey{/pgf/fpu, /pgf/fpu/output format=fixed}
      func y = 5 / (1 + exp(-1.7 * \value x + 1.5)) - 2.5;
      \pgfkeys{/pgf/fpu=false}
    }
    %accents important points
    info {
      \draw (visualization cs:x = {(-1.5 / 1.7)}, y = 0) circle [radius = 1pt]
        node [left, font = \footnotesize] {$H_C$};
    }
    info {
      \draw (visualization cs:x = 0, y = 1.59) circle [radius = 1pt]
        node [left, font=\footnotesize] {$B_R$};
    }
    info {
      \draw (visualization cs:x = 7, y = 2.5) circle [radius = 1pt]
        node [above, font=\footnotesize] {$B_S$};
    };
  \end{tikzpicture}
\end{document}

Aber dann gerät mein pdfLaTeXCompiler TeXnicCenterin eine Endlosschleife. Was mache ich falsch?

Übrigens: Die Dekorationslinien oben sehen schon gleich aus (nur Koordinaten, Ausrichtung und Text ändern sich). Gibt es eine Möglichkeit, sie zu kombinieren/optimieren?

Danke im Voraus für Ihre Hilfe!

Antwort1

Es scheint, dass es zusammenbricht, wenn der x-Wert eine „große“ negative Zahl wird. Wenn Sie die untere Grenze der leftKurve auf -6,5 und die der rightKurve auf -4,5 ändern, funktioniert die Kompilierung hier einwandfrei.

Bildbeschreibung hier eingeben

\documentclass{scrartcl}
\usepackage{tikz}
\usepackage[per-mode = fraction]{siunitx}
\usetikzlibrary{datavisualization.formats.functions}
\begin{document}
  \begin{tikzpicture}
    \datavisualization[
                       scientific axes = {clean, end labels},
                       all axes = {ticks and grid = {major at = 0}},
                       x axis = {label = $\frac{H}{\si{\A\per\m}}$},
                       y axis = {label = $\frac{B(H)}{\si{\tesla}}$},
                       data/format = function,
                       visualize as smooth line/.list = {left, right}
                      ]
    data[set = left] {
      var x : interval [-6.5 : 7];
      func y = 5 / (1 + exp(-1.7 * \value x - 1.5)) - 2.5;
    }
    data[set = right] {
      var x : interval [-4.5 : 7];
      func y = 5 / (1 + exp(-1.7 * \value x + 1.5)) - 2.5;
    }
    %accents important points
    info {
      \draw (visualization cs:x = {(-1.5 / 1.7)}, y = 0) circle [radius = 1pt]
        node [left, font = \footnotesize] {$H_C$};
    }
    info {
      \draw (visualization cs:x = 0, y = 1.59) circle [radius = 1pt]
        node [left, font=\footnotesize] {$B_R$};
    }
    info {
      \draw (visualization cs:x = 7, y = 2.5) circle [radius = 1pt]
        node [above, font=\footnotesize] {$B_S$};
    };
  \end{tikzpicture}
\end{document}

verwandte Informationen