TikZ 데이터 시각화로 히스테리시스 루프를 그리는 방법은 무엇입니까?

TikZ 데이터 시각화로 히스테리시스 루프를 그리는 방법은 무엇입니까?

잘못된 영어로 죄송합니다.

코드를 다음에서 수정했습니다.여기에 맞게 조정합니다 TikZ datavisualization. 적응된 코드는 다음과 같습니다.

\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}

하지만 다음과 같은 오류가 많이 발생합니다.

! 측정기준이 너무 큽니다. \pgfmath@iterate...\pgfmath@xa \ifdim \pgfmath@x

하나는TikZ fpu같은 것을여기,여기그리고여기. 내 코드는 다음과 같습니다.

\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}

하지만 내 pdfLaTeX컴파일러 보다 TeXnicCenter무한 루프가 발생합니다. 내가 뭘 잘못했나요?

그런데 위의 장식 선은 이미 동일해 보입니다(좌표, 정렬 및 텍스트만 변경됨). 결합/최적화하는 방법이 있나요?

미리 도움을 주셔서 감사합니다!

답변1

x 값이 "큰" 음수가 되면 분해되는 것 같습니다. 곡선 의 하한을 left-6.5로 변경하고 right곡선의 경우 -4.5로 변경하면 여기서는 제대로 컴파일됩니다.

여기에 이미지 설명을 입력하세요

\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}

관련 정보