Zeichnen einer Sägezahnwellenform über einer Sinuswelle PGF-Diagramme

Zeichnen einer Sägezahnwellenform über einer Sinuswelle PGF-Diagramme

Ich habe eine vollständig gleichgerichtete Sinuswelle, auf die ich eine Sägezahnwellenform legen möchte, wie im Bild unten zu sehen.

Bildbeschreibung hier eingeben

Ich hatte ursprünglich eine chaotische Lösung, aber die war nicht sehr gut. Ich habe eine Tex-Sinuswelle und versuche, sie unten zu platzieren.

\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}

Antwort1

Sie können es verwenden 1 - 1/(3*180)*mod(x+90,180), um eine Sägezahnwelle zu zeichnen. mod(x,180)wiederholt alle 180Einheiten, 1/(3*180)skaliert die Werte ( 1/180würde zu einer Sägezahnwelle führen, die von 0bis verläuft 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}

Antwort2

Dies ist eine mögliche Lösung, bei der foreacheine Schleife mit einer Liniennäherung mit Sägezahnwellenform verwendet wird.

Wenn man möchte, dass die Linie die Kurve berührt, ohne in die Sinuswelle einzudringen, dann entfernt man die vertikale Linie und ändert \archdie Definition auf 60

Bildbeschreibung hier eingeben

Code

\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}

verwandte Informationen