
Ich brauche Hilfe, um die folgende Abbildung in TikZ nachzubilden, die schematisch den Unterschied zwischen (a) einer Quer- und (b) einer Längswelle beschreibt, die durch eine Feder läuft. Ich habe versucht, eine mathematische Funktion zu finden, um die vibrierende Feder zu beschreiben, was im Querfall recht einfach ist, aber ich kann keine geeignete Funktion für den Längsfall finden. Irgendwelche Hinweise? Vielleicht ist es besser, Pathmorphing zu verwenden?
Vielen Dank im Voraus! Grüße.
Hier ist der Code, mit dem ich als MWE arbeite:
\documentclass{article}
\usepackage{tikz,pgfplots,pgf,pgfplotstable}
\usetikzlibrary{arrows,positioning,calc}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}[scale=0.9]
\begin{scope}[shift={(0,0)}]
\begin{axis}[
xscale=1.2,
yscale=0.8,
xmin=-1,
xmax=11,
ymin=-2,
ymax=2.2,
xlabel=$x$,
ylabel=$f$,
xmajorticks=false,
ymajorticks=false,
axis y line=middle,
axis x line=middle,
x label style={at={(axis description cs:0.875,0.595)},anchor=east},
y label style={at={(axis description cs:0.08,1.4)},anchor=north},
no markers,
every axis plot/.append style={thick}
]
\addplot[blue,thick,samples=400,domain=0:10.5] (\x,
{1.2*sin(deg(x))+0.3*sin(20*deg(x))});
\draw[latex-latex,line width=3pt,purple] (-0.5,-0.8) -- (-0.5,0.8);
\draw[densely dashed] (1.57,1.5) -- (1.57,2);
\draw[densely dashed] (7.85,1.5) -- (7.85,2);
\draw[latex-latex] (1.57,1.8) -- (7.85,1.8) node[midway,above] {$\lambda$};
\draw[-latex,thick] (1.07,-0.75) -- (2.07,-0.75) node[midway,above] {$v$};
\end{axis}
\node at (-0.5,5) {(a)};
\end{scope}
\begin{scope}[shift={(0,-5.5)}]
% the second graph here
\end{scope}
\end{tikzpicture}
\end{document}
Antwort1
Angenommen, Ihre Frage ist, wie man eine Welle mit variierender Frequenz darstellen kann, hier ist ein Vorschlag. Die Idee besteht darin, die „Geschwindigkeit“ in -Richtung entlang des Diagramms zu erhöhen x
. In diesem MWE wird dies erreicht, indem der Koordinate einige Gauß-Verteilungen hinzugefügt werden x
.
\documentclass{article}
\usepackage{tikz}
\begin{document}
\tikzset{declare function={f(\x)=sin(540*\x);}}
\begin{tikzpicture}
\draw[thick,-latex] (0,-2) -- (0,5)node[right] {$\varphi$};
\draw[thick,-latex] (-1,0) -- (10,0)node[below] {$x$};
\draw[domain=0.1:9.5,variable=\x,samples=500] plot
({\x-0.4*exp(-(\x-2)*(\x-2))-0.4*exp(-(\x-8)*(\x-8))},{f(\x)});
\draw[latex-latex] (1,2) -- (7,2) node[midway,above]{$\lambda$};
\end{tikzpicture}
\end{document}
Ich habe das Beispiel absichtlich minimal gehalten, aber Sie können offensichtlich dasselbe mit pgfplots darstellen, und ich sehe, dass Sie keine Probleme damit haben, Dinge mit pgfplots darzustellen.
BEARBEITEN: Sampling erhöht, Danke an Christian Hupfer!
Antwort2
Ja (in Übereinstimmung mitMurmeltier), sollten Sie wahrscheinlich Diagramme verwenden. Siehe diesBeispiel. Die entsprechende Zeile/der entsprechende Befehl wäre dieser/diese:
\draw[smooth,samples=200,color=blue] plot function{(\cA)* (cos((\cC)*x+(\cD))) + \cB}
node[right] {$f(x) = \cA{} . cos(\cC{} . x + \cD{}) + \cB{}$};
EDIT: Wahrscheinlich besseres Beispiel mitpgfplots
Dassieht nach einem besseren Beispiel aus. Es hat \usepackage{pgfplots}
. Die relevanten Zeilen:
\draw[smooth,samples=1000,domain=0.0:2.2]
plot(\x,{8*\x-32.4*\x^2+53.48*\x^3-42.11*\x^4+17.594*\x^5
-3.99*\x^6+0.465713*\x^7-0.0217374*\x^8});
Ich denke, mein erster Vorschlag erfordert externe Programme (GNU Plot) und ein bisschen Hacking, beim zweiten hoffentlich nicht.
Anregung:
Ändern Sie den Titel Ihrer Frage (wenn möglich) in etwas aussagekräftigeres als „diese Zahl“, z. B. „eine Zahl über Frequenzen“ oder etwas in der Art.