Quero desenhar uma função de repetição semelhante a uma função dente de serra. Até agora comecei comessepostar e definir manualmente três dentes:
% 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}
Aqui estão minhas perguntas:
1ª pergunta (a mais importante)
Existe uma maneira inteligente de definir a função para um número arbitrário de dentes sem definir manualmente cada dente?
Eu não entro modulo
nas coisasJakea respostaaqui- talvez esta seja a chave.
2ª pergunta (é bom ter)
A inclinação ascendente é +1 e a inclinação descendente é -3. O período no exemplo é +4 e a amplitude é +3. Esses podem de alguma forma ser parâmetros da função? Claro, os quatro parâmetros estão conectados.
3ª pergunta (também é bom ter)
Gostaria de numerar os máximos e mínimos como na imagem. Mas este é realmente um “problema de primeiro mundo”.
Atualizar
Até ter uma solução LaTeX, criei uma solução pobre usando o Excel.
O texto é alemão e significa algo como diagrama de ângulo de torque.
Informações adicionais sobre a resposta da percussão
- ComacomoperíodoebEnquanto ofração da borda ascendente(0,1 --> 10%).
- Eu tenho um sistema alemão, portanto oseparador decimalé umvírgula(,) nas fotos a seguir.
Responder1
Aqui está uma maneira de implementar a função. Os parâmetros são o período de frequência dos dentes e a porcentagem que define quanto do dente é gasto na subida.
A função é definida para ser mapeada [0,1]
para que você possa deslocá-la adicionando e dimensionando-a por multiplicação.
\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}