
私のグラフをプロットすると最後の質問PGFplots から取得したプロットが完全に正確ではないことがわかりました。(4.9/(w^2))*(cosh(w*x)-cos(w*x))
の複数の値をプロットしようとしていましw
た。 ユーザー 1010011010 と Enthusiastic Student の助けを借りて、見栄えの良いプロットを取得できました。ただし、WolframAlpha で取得するべきものを確認するまではそうでした。
w
上の式が に近づくように0
、関数は4.9*x^2
上から に漸近するはずです。しかし、データはそうではありません。このコード(基本的には上のリンクの 1010011010 です)を使用すると、
\documentclass{standalone}
\usepackage{pgfplots}
\def\mycolone{yellow}
\def\mycoltwo{green}
\pgfplotsset{every axis legend/.append style={at={(.5,-.2)}, anchor=north}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=-10,xmax=10,ymin=-0.5,ymax=100,no markers, grid=both, samples=100, restrict y to domain=0:1000]
\foreach \w in {5,10,...,100} {\edef\tmp{\noexpand\addplot[\mycolone!\w!\mycoltwo, domain=-10:10]}
\pgfmathparse{\w/100}
\edef\x{\pgfmathresult}
\tmp{(4.9/((\w/100)^2))*(cosh(\w*x/100)-cos(\w*x/100))};
\edef\legendentry{\noexpand\addlegendentry{$\omega = \noexpand\pgfmathprintnumber[fixed,fixed zerofill, precision=2]{\x}$}};
\legendentry}
\addplot[draw=red, domain=-10:10] {4.9*x^2};
\end{axis}
\end{tikzpicture}
\end{document}
次のようなプロットが得られます。
ここで赤いプロットは です
(4.9)*x^2
。
w
参考までに、WolframAlpha が上にプロットした の最高値と最低値 (w=0.05
およびw=1
) と のプロットを示します(4.9)*x^2
。
分かりにくいですが、プロットを削除すると、プロットがほぼ正確に追従している4.9*x^2
ことがわかります。w=0.05
これは、上記の最初の画像とは非常に異なる動作です。そこで私の質問は、PGFplots はexp
、、、などのものをどのように計算するのかcosh
、cos
そして将来的にどうすればより良い近似値を得ることができるのかということです。
答え1
三角関数は、pgf
度の入力を想定します。角度をラジアンで入力するには、特殊r
演算子 を使用します。cos(\w*x/100)
を に置き換えますcos(\w*x/100 r)
。
\documentclass{standalone}
\usepackage{pgfplots}
\def\mycolone{yellow}
\def\mycoltwo{green}
\pgfplotsset{compat=1.12,every axis legend/.append style={at={(.5,-.2)}, anchor=north}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=-10,xmax=10,ymin=-0.5,ymax=100,no markers, grid=both, samples=100, restrict y to domain=0:1000]
\foreach \w in {5,10,...,100} {\edef\tmp{\noexpand\addplot[\mycolone!\w!\mycoltwo, domain=-10:10]}
\pgfmathparse{\w/100}
\edef\x{\pgfmathresult}
\tmp{(4.9/((\w/100)^2))*(cosh(\w*x/100)-cos(\w*x/100 r))};
\edef\legendentry{\noexpand\addlegendentry{$\omega = \noexpand\pgfmathprintnumber[fixed,fixed zerofill, precision=2]{\x}$}};
\legendentry}
\addplot[draw=red, domain=-10:10] {4.9*x^2};
\end{axis}
\end{tikzpicture}
\end{document}
あるいは、pgfplots
v1.11以降では、新しいキーを使用して、キー設定1の範囲内のtrig format plots
すべてのコマンドの角度フォーマットを変更できます。ここでは、ドキュメント全体の動作を変更するためにトップレベルで使用していますが、軸ごとまたはプロットごとに適用することもできます。これは、 'コマンドにのみ影響し、単純なTiには影響しないことに注意してください。\addplot
trig format plots=rad
pgfplots
\addplot
けpolar
三角関数を使用した Z コード。また、このキーは多少実験的なもので、やなどの特殊な軸タイプでは正しく動作しない可能性がありますsmithchart
。パッケージ マニュアルには、デフォルトの軸に対してのみテスト済みであると記載されています。
\documentclass{standalone}
\usepackage{pgfplots}
\def\mycolone{yellow}
\def\mycoltwo{green}
\pgfplotsset{
compat=1.12,
every axis legend/.append style={at={(.5,-.2)}, anchor=north},
trig format plots=rad,
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=-10,xmax=10,ymin=-0.5,ymax=100,no markers, grid=both, samples=100, restrict y to domain=0:1000]
\foreach \w in {5,10,...,100} {\edef\tmp{\noexpand\addplot[\mycolone!\w!\mycoltwo, domain=-10:10]}
\pgfmathparse{\w/100}
\edef\x{\pgfmathresult}
\tmp{(4.9/((\w/100)^2))*(cosh(\w*x/100)-cos(\w*x/100))};
\edef\legendentry{\noexpand\addlegendentry{$\omega = \noexpand\pgfmathprintnumber[fixed,fixed zerofill, precision=2]{\x}$}};
\legendentry}
\addplot[draw=red, domain=-10:10] {4.9*x^2};
\end{axis}
\end{tikzpicture}
\end{document}
どちらの方法でも正しい結果が得られます。
1感謝クリスティアン・フォイアザンガーpgfplots
コメントでこの新しい方法を指摘してくださった著者本人に感謝します。