tikz를 사용하여 쌍곡선 함수를 그리는 방법

tikz를 사용하여 쌍곡선 함수를 그리는 방법

tikz를 사용하여 Ewan 웹스터 함수를 플롯하려고 합니다.

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

위 이미지는 numpy 함수를 사용하여 Python에서 생성됩니다.

import numpy as np
import matplotlib.pyplot as plt
 
a = 0
b = 2
x = np.linspace(a,b,points)
y = np.exp(x)* np.sin(100*np.cosh(x)) 
plt.plot(x,y)

하지만 내 음모는 예상대로 나오지 않습니다. 내 코드는 다음과 같습니다.

\documentclass[tikz]{standalone}
\usepackage{tikz}

\begin{document}    
\begin{tikzpicture}[domain=0:2]

  \draw[->] (-0.2,0) -- (3,0) node[right] {$x$};
  \draw[->] (0,-1.2) -- (0,4) node[above] {$f(x)$};

  \draw[color=red]    plot (\x,\x)             node[right] {$f(x) =x$};
  \draw[color=orange] plot (\x,{exp(\x)*sin(100*cosh(\x))}) node[right] {$f(x) = \frac{1}{20} \mathrm e^x$};
\end{tikzpicture}
\end{document}

답변1

귀하의 코드를 수정했습니다.

부비동 인수에 라디안을 사용하도록 지정해야 합니다( 와 함께 있음 r).

x-척도와 y-척도를 수정했습니다(지수가 빠르게 증가하기 때문입니다).

키를 추가했기 smooth때문에 점 사이에 직선이 그려지지 않고 곡선이 부드러워졌습니다.

샘플을 500포인트(기본적으로 25포인트)로 늘렸습니다.

0:1.7하지만 플로팅 도메인을 다음 으로 제한해야 합니다. 0:2그렇지 않으면 Ti케이Z는 불평한다크기가 너무 큼오류.

\documentclass[tikz]{standalone}

\begin{document}    
\begin{tikzpicture}[domain=0:1.70,samples=500,smooth,xscale=3,yscale=0.5]

  \draw[->] (-0.2,0) -- (2.5,0) node[right] {$x$};
  \draw[->] (0,-5) -- (0,5) node[above] {$f(x)$};

  \draw[color=orange] plot (\x,{exp(\x)*sin(100*cosh(\x) r)}) node[right] 
      {$f(x) = \mathrm e^x\sin\left(100\cosh\left(x\right)\right)$};
\end{tikzpicture}
\end{document}

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

에 대한크기가 너무 큼오류, Ti를 사용하는 대신케이Z, 우리는 사용할 수 있습니다pgfplots.

첫 번째 시도는 다음과 같습니다.

\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}

\begin{tikzpicture}
\begin{axis}[samples=500,domain=0:2]
\addplot[orange]plot (\x, {exp(\x)*sin(100*cosh(\x) r)});
\end{axis}
\end{tikzpicture}

\end{document}

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

보시다시피 결국 완벽하지는 않습니다.

우리는 추첨을 두 개의 도메인으로 나눌 수 있으며, x에 대한 후자의 도메인은 더 조밀한 샘플링을 사용하여 1.2와 2 사이입니다.

\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}

\begin{tikzpicture}
\begin{axis}
\addplot[orange,samples=500,domain=0:1.5]plot (\x, {exp(\x)*sin(100*cosh(\x) r)});
\addplot[orange,samples=1000,domain=1.5:2]plot (\x, {exp(\x)*sin(100*cosh(\x) r)});
\end{axis}
\end{tikzpicture}

\end{document}

우리는 더 나은 플롯을 얻습니다.

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

프레젠테이션을 사용자 정의할 수 있습니다.

\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}

\begin{tikzpicture}
\begin{axis}[axis x line=middle,axis y line=left,xlabel=$x$,legend pos=north west]
\addplot[orange,samples=500,domain=0:1.5]plot (\x, {exp(\x)*sin(100*cosh(\x) r)});
\addplot[orange,samples=1000,domain=1.5:2]plot (\x, {exp(\x)*sin(100*cosh(\x) r)});
\legend{\textcolor{orange}{$\mathrm e^x\sin\left(100\cosh\left(x\right)\right)$}}
\end{axis}
\end{tikzpicture}

\end{document}

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

답변2

점근선에는 수학적 그래프에 대한 더 많은 제어 기능이 있습니다. 이 경우 샘플 포인트 수 n=1000와 조인 유형이 Hermite매우 잘 작동합니다.

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

// http://asymptote.ualberta.ca/
import graph;
unitsize(5cm,4mm);
real a=0,b=2;
real y(real x) {return exp(x)*sin(100*cosh(x));}
path gr=graph(y,a,b,n=1000,Hermite);
draw(gr,magenta);
axes();

shipout(bbox(5mm,invisible));

관련 정보