Dibujar la gráfica de una función complicada.

Dibujar la gráfica de una función complicada.

Soy muy nuevo en dibujar gráficos usando tikz. Quiero dibujar la gráfica de la siguiente función $f(x)=x^a\sin(x^{-b})$ para $x>0$. El resultado debería ser exactamente el mismo que el de la imagen de la página 118 del libro "Análisis Real" de Stein & Shakarchi.

ingrese la descripción de la imagen aquí

Aquí no pretendo violar los derechos de autor del libro pero supongo que es más conveniente incluir la imagen aquí. Si violo los derechos de autor, hágamelo saber y estaré encantado de eliminar la imagen.

Sin embargo, obtuve la siguiente imagen en su lugar.

La gráfica de $f(x)=x^a\sin(x^{-b})$ para $a=1/2$ y $b=1$

Yo uso el siguiente código

\begin{center}

\begin{tikzpicture}

\draw[smooth, thick, domain=1/100:2*pi] plot (\x, {\x^(0.5)*sin(deg(\x^(-1)))});

\end{tikzpicture}

\end{center}

Probé diferentes valores de a y b como se describe en el libro, pero no funciona. ¿El dominio es incorrecto o debería usar otros comandos?

Gracias por tu ayuda.

Respuesta1

Usando LuaLaTeX y el paquete PGFPlots podrías hacer lo siguiente, que es casi lo que quieres creo...

% used PGFPlots v1.14
\RequirePackage{luatex85}
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
    \usepgfplotslibrary{
        groupplots,
    }
    \pgfplotsset{
        compat=1.12,
        /pgf/declare function={
            f(\a,\b,\x) = \x^(\a)*sin(deg(\x^(-1*\b)));
        },
    }
\begin{document}
    \begin{tikzpicture}
        \begin{groupplot}[
            group style={
                group size=1 by 3,
                vertical sep=2mm,
            },
            height=3cm,
            width=6cm,
            xtick=\empty,
            ytick=\empty,
            ymin=-0.5,
            ymax=0.5,
            axis lines=center,
            domain=0:0.4,
            samples=1001,
            no markers,
            /tikz/smooth,
        ]
        \nextgroupplot
            \addplot {f(2,1,x)};
            \node [anchor=north] at (axis description cs:0.5,1) {$a=2$, $b=1$};
        \nextgroupplot
            \addplot {f(1,1,x)};
            \node [anchor=north] at (axis description cs:0.5,1) {$a=1$, $b=1$};
        \nextgroupplot
            \addplot {f(0.5,1,x)};
            \node [anchor=north] at (axis description cs:0.5,1) {$a=1/2$, $b=1$};
        \end{groupplot}
    \end{tikzpicture}
\end{document}

imagen que muestra el resultado del código anterior

Respuesta2

Podemos parametrizar el x valuespara concentrar los puntos de datos donde se necesitan: cerca de 0.

Luego agregamos una tapa llena a la izquierda.

Producción

ingrese la descripción de la imagen aquí

Código

\documentclass[tikz, border=10pt]{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
  [
    declare function=
    {
      t(\x) = 1/\x ;
    }
  ]
  \begin{axis}
    [
      samples=2000,
      axis lines=center,
      xtick=\empty,
      ytick=\empty,
      extra y ticks={0},
    ]
    \addplot[domain=1:60,semithick] ({t(\x)},{sqrt(t(x))*sin(deg(1/t(x)))});
    \addplot[domain=-.14:.14,semithick,samples=100, area style, fill=black] ({x^2},{x}) \closedcycle;
  \end{axis}
\end{tikzpicture}

\end{document}

información relacionada