我開始學習 pgfplots,我想繪製一些函數:立方根、反函數和一些三角函數。
問題是,對於 y=1/x 函數,它將域的負部分和正部分之間的點連接起來:我們看不到漸近線。
\documentclass{minimal}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[]
\addplot [domain=-10:10, samples=100]{x^(-1)};
\end{axis}
\end{tikzpicture}
\end{document}
使用函數 y=x^{1/3},它不會顯示域的負數部分。對於三角函數,它只是沒有做任何正確的事情...
\addplot[domain=-27:27]{x^(1/3)};
\addplot[domain=-2*pi:2*pi]{cos(rad(x))};
如果你能幫我一點忙的話,非常感謝。
非常感謝您的回答,這真的很有幫助。最後一件事:立方根函數在其定義域中有一個負數部分無法顯示。你知道為什麼嗎?
\begin{tikzpicture}
\begin{axis}[
width=8cm,xlabel={$x$},
ylabel={$y$},grid=both, axis x line=middle, axis y line=middle,
title={$f(x)=x^{1/3}$}]
\addplot[blue,domain=-27:27, no markers,samples=100] {x^(1/3)};
\end{axis}
\end{tikzpicture}
注意:是的,三次根函數有一個部分負域,不,沒有虛部。注意:很抱歉,我堅持在這條評論中提出我的第一個問題,這應該是一個“答案”,我只是新來的,因為我還沒有註冊,所以我不知道我如何在新的“問題評論」中提出與該主題相關的問題
答案1
為了將圖的負數和正數部分1/x
分開,您需要確保在 處計算函數x=0
。如果您的領域是對稱的,則只需指定奇數個樣本(samples=101
例如 )。您還必須確保非實數值不僅會被默默丟棄,還會導致情節跳躍。為此,請指定unbounded coords=jump
(而不是預設行為discard
)。
PGF 中的三角函數需要度數,因此您必須使用將弧度轉換為度數deg(x)
(不是rad(x)
,它用於將度數轉換為弧度)。
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[enlargelimits=false]
\addplot [domain=-10:10, samples=101,unbounded coords=jump]{x^(-1)};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[enlargelimits=false]
\addplot[domain=-2*pi:2*pi, samples=100]{cos(deg(x))};
\end{axis}
\end{tikzpicture}
\end{document}
答案2
其他答案提供了很好的繪圖方法1/x
,但沒有人介紹如何繪圖x^(1/3)
這個問題出現在許多不同的繪圖程式/計算器中。立方根通常使用對數計算,這就是為什麼它們有時似乎沒有為負數定義。當然,我們知道我們可以計算任何實數的立方根,所以我們必須欺騙程式/計算器。
一種方法是繪製
x/|x| * (|x|)^(1/3)
它繪製了立方根函數,並偷偷地適當地切換了符號。當然,這個函數沒有在 處定義0
,所以它實際上並不是平等的立方根函數,但它對我們有用:)
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[blue,domain=-10:10, samples=200]{x/abs(x)*abs(x)^(1/3)};
\end{axis}
\end{tikzpicture}
\end{document}
答案3
我認為你的期望太大了,因為 pgfplots 不是電腦代數系統(CAS)。所以你需要透過調整數據來幫助它。此外,samples
選項也會產生很大的差異,因為圖實際上連接了點,並且要查看一個值是否無界,它必須在該點進行評估,否則結果將是有限的,它將連接這些點。
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[restrict y to domain=-9.9:9.9]
\addplot [domain=-10:10, samples=200]{x^(-1)};
\addplot[blue,domain=-10:10, samples=200]{x^(1/3)};
\addplot[red,domain=-2*pi:2*pi, samples=200]{sin(deg(x))};
\end{axis}
\end{tikzpicture}
\end{document}