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

조금이라도 도와주시면 정말 감사하겠습니다.


귀하의 답변에 진심으로 감사드립니다. 정말 도움이 됩니다. 마지막으로, 삼차근 함수의 정의역에는 표시할 수 없는 음수 부분이 있습니다. 이유를 아시나요?

\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}

NB: 예, 세제곱근 함수는 부분적으로 음의 영역을 가지며, 아니요, 허수부는 없습니다. NB: 죄송합니다. 이 댓글에서 "대답"이 되어야 할 첫 번째 질문 중 하나를 고집해서 죄송합니다. 저는 여기에 처음 온 사람이고 아직 등록하지 않았기 때문에 잘 모르겠습니다. 새로운 "질문 댓글"에서 주제와 관련된 내용을 질문하려면 어떻게 해야 하나요?

답변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(Computer Algebra System)가 아니기 때문에 귀하의 기대가 너무 크다고 생각합니다. 따라서 데이터를 마사지하여 이를 도와야 합니다. 또한 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}

여기에 이미지 설명을 입력하세요

관련 정보