
在繪製我的圖表時最後一個問題我發現我從 PGFplots 得到的圖並不完全正確。我試圖繪製(4.9/(w^2))*(cosh(w*x)-cos(w*x))
的多個值w
。在用戶 1010011010 和熱情的學生的幫助下,我能夠得到好看的圖表——直到我檢查了我應該用 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
。
作為參考,以下是 WolframAlpha 為我提供的w
上面繪製的 (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 或更高版本中,新鍵trig format plots
允許我們更改鍵設定1\addplot
範圍內的所有命令的角度格式。在這裡,我在頂層使用來更改整個文件的行為,但它也可以應用於每個軸或每個圖。請注意,這只會影響'命令,而不影響任何普通 Titrig format plots=rad
pgfplots
\addplot
k具有三角函數的 Z 程式碼。此外,該鍵在某種程度上是實驗性的,可能無法與更奇特的軸類型(例如polar
和 )一起正常工作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
本人在評論中向我指出了這種新方法。