Ich möchte eine sich wiederholende Funktion zeichnen, die einer Sägezahnfunktion ähnelt. Bisher begann ich mitDasStift und manuell definierte drei Zähne:
% 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}
Hier sind meine Fragen:
1. Frage (die wichtigste)
Gibt es eine clevere Möglichkeit, die Funktion für eine beliebige Anzahl von Zähnen zu definieren, ohne jeden Zahn manuell zu definieren?
Ich bekomme keine modulo
Sachen reinJake's AntwortHier- vielleicht ist das der Schlüssel.
2. Frage (schön zu haben)
Die steigende Steigung beträgt +1 und die fallende Steigung -3. Die Periode im Beispiel beträgt +4 und die Amplitude +3. Können das irgendwie Parameter der Funktion sein? Natürlich hängen die vier Parameter zusammen.
3. Frage (auch schön zu haben)
Ich würde gerne die Maxima und Minima wie im Bild nummerieren. Aber das ist wirklich ein „First World Problem“.
Aktualisieren
Bis ich eine LaTeX-Lösung habe, muss ich mit Excel eine Arme-Leute-Lösung erstellen.
Der Text ist deutsch und bedeutet so viel wie Drehmoment-Winkel-Diagramm.
Zusätzliche Informationen zur Antwort von Percusse
- MitAalsZeitraumUndBals dieBruchteil der steigenden Flanke(0,1 --> 10 %).
- Ich habe ein deutsches System, daher dieDezimaltrennzeichenist einKomma(,) in den folgenden Bildern.
Antwort1
Hier ist eine Möglichkeit, die Funktion zu implementieren. Die Parameter sind die Frequenzperiode der Zähne und der Prozentsatz, der definiert, wie viel des Zahns zum Aufsteigen benötigt wird.
Die Funktion ist als Abbildung in definiert, [0,1]
sodass Sie sie durch Addition verschieben und durch Multiplikation skalieren können.
\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}