Pgfplots: いくつかの一般的な数学関数をプロットできない

Pgfplots: いくつかの一般的な数学関数をプロットできない

私は 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))};

少しでもお手伝いいただければ幸いです。


ご回答ありがとうございます。本当に助かります。最後にもう 1 つ: 3 次根関数には、表示できない負の部分が定義域内にあります。その理由をご存知ですか?

\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

プロットの負の部分と正の部分を分離しておくには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 は Computer Algebra System (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}

ここに画像の説明を入力してください

関連情報