鋸歯状関数に似た繰り返し関数を描きたいのですが、これまではこれポストと手動で定義された3つの歯:
% 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}
私の質問は次のとおりです:
1番目の質問(最も重要な質問)
すべての歯を手動で定義せずに、任意の数の歯の機能を定義する賢い方法はありますか?
modulo
物が入らないジェイクの答えここ- おそらくこれが鍵です。
2番目の質問(あれば便利です)
上昇勾配は +1、下降勾配は -3 です。この例の周期は +4、振幅は +3 です。これらは関数のパラメータになるのでしょうか? もちろん、4 つのパラメータは接続されています。
3番目の質問(これもあれば便利です)
図のように最大値と最小値に番号を付けたいのですが、これは実際には「先進国の問題」です。
アップデート
LaTeX ソリューションが得られるまで、私は Excel を使用して貧乏人のソリューションを作成しました。
テキストはドイツ語で、トルク角度図のような意味です。
percusseの回答に関する追加情報
- と1つのとして期間そしてbとして立ち上がりエッジの割合(0.1 --> 10%)。
- 私はドイツのシステムを持っているので、小数点はコンマ次の図の(、)を参照してください。
答え1
これは、関数を実装する 1 つの方法です。パラメータは、歯の周波数周期と、歯の上昇に費やされる割合を定義するパーセンテージです。
この関数はマップするように定義されている[0,1]
ため、加算によってシフトしたり、乗算によってスケールしたりできます。
\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}