Quiero dibujar una función repetitiva que sea similar a una función de diente de sierra. Hasta ahora comencé conesteposte y tres dientes definidos manualmente:
% starting https://tex.stackexchange.com/questions/132476/piecewise-function-using-pgfplots
\documentclass[tikz,border=3mm]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[
declare function={
func(\x) =
% 1st tooth
% shifted by 0
(\x<=1) * (3*(\x-0)) +
% shifted by 1
and(\x>1, \x<=4) * (-1*(\x-1)+3) +
% 2nd tooth
% shifted by 4
and(\x>4, \x<=5) * (3*(\x-4)) +
% shifted by 5
and(\x>5, \x<=8) * (-1*(\x-5)+3) +
% 3rd tooth
% shifted by 8
and(\x>8, \x<=9) * (3*(\x-8)) +
% shifted by 9
and(\x>9, \x<=12) * (-1*(\x-9)+3);
}
]
\begin{axis}[
axis x line = middle,
axis y line = middle,
samples = 1200, % I need sharp edges
grid,
]
\addplot[red,
thick,
domain=0:12,
mark=none,
sharp plot
]
{func(x)-1}; % y shift by -1
\end{axis}
\end{tikzpicture}
\end{document}
Aquí están mis preguntas:
Primera pregunta (la más importante)
¿Existe una forma inteligente de definir la función para un número arbitrario de dientes sin definir manualmente cada diente?
no consigo modulo
cosasjakela respuestaaquí- Quizás esta sea la clave.
Segunda pregunta (es bueno tenerla)
La pendiente ascendente es +1 y la pendiente descendente es -3. El período en el ejemplo es +4 y la amplitud es +3. ¿Pueden ser de alguna manera esos parámetros de la función? Por supuesto, los cuatro parámetros están conectados.
Tercera pregunta (también es bueno tenerla)
Me gustaría numerar los máximos y mínimos como en la imagen. Pero esto es realmente un "problema del primer mundo".
Actualizar
Hasta que tenga una solución LaTeX, he creado una solución para pobres usando Excel.
El texto es alemán y significa algo así como diagrama de ángulo de torsión.
Información adicional sobre la respuesta de percusión.
- Conacomoperíodoybcomo elfracción del flanco ascendente(0,1 --> 10 %).
- Tengo un sistema alemán por lo tanto elseparador decimales uncoma(,) en las siguientes imágenes.
Respuesta1
Aquí hay una forma de implementar la función. Los parámetros son el período de frecuencia de los dientes y el porcentaje que define cuánto del diente se gasta en levantarse.
La función está definida para asignarse, [0,1]
de modo que pueda desplazarla sumándola y escalarla mediante multiplicación.
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}[
declare function={func(\x,\a,\b) = (mod(\x,\a)/\a<\b? % If
mod(\x,\a)/\b/\a: % Yes
(\a-mod(\x,\a))/(\a-\b*\a));} % No
]
\begin{axis}[axis x line = middle,axis y line = middle,
samples = 301,grid,ymax=1.1,ymin=0,domain=0:4, no marks,thick]
\addplot {func(x,1,0.75)};
\addplot {func(x,2,0.1)};
\end{axis}
\end{tikzpicture}
\end{document}