英語が間違っていて申し訳ありません。
私はコードをこここれを に適合させます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}