Dibujar una forma de onda en diente de sierra sobre un gráfico PGF de onda sinusoidal

Dibujar una forma de onda en diente de sierra sobre un gráfico PGF de onda sinusoidal

Tengo una onda sinusoidal completamente rectificada sobre la que estoy tratando de colocar una forma de onda en forma de diente de sierra, como se muestra a continuación:

ingrese la descripción de la imagen aquí

Originalmente tenía una solución complicada pero no era muy buena. Tengo una onda sinusoidal tex y estoy tratando de colocarla debajo.

\documentclass[border=5mm]{standalone}

\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    domain=0:1.5*360,
    samples=4*360,
    xtick=\empty,
    width=10cm, height=4cm,
    ymin=0,
    enlarge x limits=false
]
\addplot [densely dashed] {abs(sin(x))};

\end{axis}
\end{tikzpicture}
\end{document}

Respuesta1

Puedes utilizarlo 1 - 1/(3*180)*mod(x+90,180)para trazar una onda en dientes de sierra. mod(x,180)repite cada 180unidad, 1/(3*180)escala los valores ( 1/180daría como resultado una onda de diente de sierra que va de 0a 1).

\documentclass[border=5mm]{standalone}

\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    domain=0:1.5*360,
    samples=4*360,
    xtick=\empty,
    width=10cm, height=4cm,
    ymin=0,
    enlarge x limits=false
]
\addplot [densely dashed] {abs(sin(x))};
\addplot [very thick] {1-1/(3*180)*mod(x+90,180)};
\end{axis}
\end{tikzpicture}
\end{document}

Respuesta2

Esta es una posible solución cuando foreachse utiliza un bucle con una aproximación de línea con forma de onda de diente de sierra.

Si uno quiere que la línea toque la curva sin penetrar en la onda sinusoidal, entonces elimine la línea vertical y cambie \archla definición a 60.

ingrese la descripción de la imagen aquí

Código

\documentclass[border=5mm]{standalone}

\usepackage{pgfplots}

\begin{document}
\def\arch{90}
\begin{tikzpicture}
\begin{axis}[
    domain=0:1.5*360,
    samples=360,
    xtick={0,90,180,270,360,450,540},
    width=10cm, height=5cm,
    ymin=0, ymax=1.5, xmin=0,
    enlarge x limits=false
]
\addplot [densely dashed] {abs(sin(x))};
% draw the rectified line approximation via foreach skill
\foreach \i/\j in {-1/0,1/2,3/4}{
\addplot [thick,domain=\i*90:{\j*90+\arch}] 
{1-0.001*(x-\i*90)};
\addplot[thick] coordinates{(\i*90,1)(\i*90,{1-0.001*(\j*90+\arch-\i*90)})}; % remove this line if the vertical line is undesired  and change arch to 90
}
\node[coordinate, pin =above:{\parbox{2cm}{\tiny Voltage Simplified by Approximation}}] at (axis cs: 180,0.9) {};
\end{axis}

\end{tikzpicture}
\end{document}

información relacionada