EDITAR: Probablemente mejor ejemplo conpgfplots

EDITAR: Probablemente mejor ejemplo conpgfplots

Necesito ayuda para replicar la siguiente figura en TikZ, que describe esquemáticamente la diferencia entre (a) una onda transversal y (b) una longitudinal que viaja a través de un resorte. Intenté encontrar una función matemática para describir el resorte vibratorio, que es bastante simple en el caso transversal pero no encuentro una función adecuada para el longitudinal. ¿Alguna pista? ¿Quizás sea mejor utilizar pathmorphing?

¡Gracias de antemano! Saludos.

ingrese la descripción de la imagen aquí

Aquí está el código con el que estoy trabajando, como MWE:

    \documentclass{article}
    \usepackage{tikz,pgfplots,pgf,pgfplotstable}
    \usetikzlibrary{arrows,positioning,calc}
    \pgfplotsset{compat=newest}

    \begin{document}
    \begin{tikzpicture}[scale=0.9]
    \begin{scope}[shift={(0,0)}]
    \begin{axis}[
    xscale=1.2,
    yscale=0.8,
    xmin=-1,
    xmax=11,
    ymin=-2,
    ymax=2.2,
    xlabel=$x$,
    ylabel=$f$,
    xmajorticks=false,
    ymajorticks=false,
    axis y line=middle,
    axis x line=middle,
    x label style={at={(axis description cs:0.875,0.595)},anchor=east},
    y label style={at={(axis description cs:0.08,1.4)},anchor=north},
    no markers,
    every axis plot/.append style={thick}
    ]
    \addplot[blue,thick,samples=400,domain=0:10.5] (\x,
    {1.2*sin(deg(x))+0.3*sin(20*deg(x))});
    \draw[latex-latex,line width=3pt,purple] (-0.5,-0.8) -- (-0.5,0.8);
    \draw[densely dashed] (1.57,1.5) -- (1.57,2);
    \draw[densely dashed] (7.85,1.5) -- (7.85,2);
    \draw[latex-latex] (1.57,1.8) -- (7.85,1.8) node[midway,above] {$\lambda$};
    \draw[-latex,thick] (1.07,-0.75) -- (2.07,-0.75) node[midway,above] {$v$};
    \end{axis}
    \node at (-0.5,5) {(a)};
    \end{scope}

    \begin{scope}[shift={(0,-5.5)}]
        % the second graph here
    \end{scope}
    \end{tikzpicture}
    \end{document}

Respuesta1

Suponiendo que su pregunta es cómo se puede trazar una onda con frecuencia variable, aquí tiene una propuesta. La idea es aumentar la "velocidad" en la xdirección a lo largo de la trama. En este MWE, esto se logra agregando algunas gaussianas a la xcoordenada.

\documentclass{article}
\usepackage{tikz}
\begin{document}
\tikzset{declare function={f(\x)=sin(540*\x);}}
\begin{tikzpicture}
 \draw[thick,-latex] (0,-2) -- (0,5)node[right] {$\varphi$};
 \draw[thick,-latex] (-1,0) -- (10,0)node[below] {$x$};
 \draw[domain=0.1:9.5,variable=\x,samples=500] plot
 ({\x-0.4*exp(-(\x-2)*(\x-2))-0.4*exp(-(\x-8)*(\x-8))},{f(\x)});
 \draw[latex-latex] (1,2) -- (7,2) node[midway,above]{$\lambda$};
\end{tikzpicture} 
\end{document}

ingrese la descripción de la imagen aquí

Deliberadamente mantuve el ejemplo al mínimo, pero claramente puedes trazar lo mismo con pgfplots, y puedo ver que no tienes ningún problema con trazar cosas usando pgfplots.

EDITAR: ¡Aumentado el muestreo, gracias a Christian Hupfer!

Respuesta2

Sí (de acuerdo conmarmota), probablemente deberías usar gráficos. Mira estoejemplo. La línea/comando relevante sería esta:

    \draw[smooth,samples=200,color=blue] plot function{(\cA)* (cos((\cC)*x+(\cD))) + \cB} 
    node[right] {$f(x) = \cA{} . cos(\cC{} . x + \cD{}) + \cB{}$};

EDITAR: Probablemente mejor ejemplo conpgfplots

EsteParece un mejor ejemplo. Tiene \usepackage{pgfplots}. Las líneas relevantes:

  \draw[smooth,samples=1000,domain=0.0:2.2]
     plot(\x,{8*\x-32.4*\x^2+53.48*\x^3-42.11*\x^4+17.594*\x^5
     -3.99*\x^6+0.465713*\x^7-0.0217374*\x^8});

Creo que mis primeras sugerencias necesitan programas externos (trama GNU) y un poco de piratería, y espero que la segunda no.

Sugerencia:

Cambie el título de su pregunta (si es posible) por algo más descriptivo que "esta figura", por ejemplo, "una figura sobre frecuencias" o algo así.

información relacionada