PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sinuskurven addieren mit Tikz



Fretschi
05-10-2014, 23:46
Hallo zusammen,

zuerst das Minimalbeispiel:


\documentclass{scrartcl}
\usepackage{scrpage2}
\pagestyle{scrheadings}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}

\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{calc,decorations.pathmorphing,deco rations.pathreplacing,decorations.shapes,decoratio ns.markings}
\tikzset{
%Define standard arrow tip
>=latex,
%Define style for boxes
beschriftung/.style={
rectangle,
fill=white,
%minimum height=1em,
text centered},
%% Define arrow style
%pil/.style={
%->,
%thick,
%shorten <=2pt,
%shorten >=2pt,}
}
\begin{document}
\begin{tikzpicture}
\draw [->] (0,-2.5)--(0,2.5) node[at end, anchor=east,font=\tiny] {$\frac{s}{mm}$};
\draw [->] (0,0)--(6,0) node[at end,anchor=north,font=\tiny] {$\frac{t}{ms}$};

\foreach \x in {1,...,5}
\draw (\x,-0.1) -- (\x,0.1);

\draw[domain=0:1800,samples=201,rotate=0] plot (\x/360,{0.5*sin(\x)});
\draw[domain=0:900,samples=201,rotate=0] plot (\x/180,{sin(\x)});

\end{tikzpicture}
\end{document}


Im PDF sind 2 Sinuskurven mit unterschiedlicher Frequenz und Amplitute.

Gibt es eine Möglichkeit dass Tikz mir diese beiden Kurven irgendwie aufaddiert, damit ein neues periodisches Signal entsteht?
Falls ja kann man das ganze vielleicht noch mit einer 3. Frequenz erweitern?

Leider ist es mit meinen mathematischen Kenntnissen nicht sonderlich weit her :(

Schon mal besten Dank!

klops
06-10-2014, 06:51
Damit Du zwei Funktionen addieren kannst, müssen sie zunächst auf derselben Variablen basieren (derzeit hat Dein zweiter Plot ja aufgrund der anderen domain eine anderes x als Dein erster). Dann geht es ganz einfach:
\documentclass{scrartcl}
\usepackage{scrpage2}
\pagestyle{scrheadings}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{
adieresis={ä},
germandbls={ß},
}


\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{calc,decorations.pathmorphing,deco rations.pathreplacing,decorations.shapes,decoratio ns.markings}
\tikzset{
%Define standard arrow tip
>=latex,
%Define style for boxes
beschriftung/.style={
rectangle,
fill=white,
%minimum height=1em,
text centered},
%% Define arrow style
%pil/.style={
%->,
%thick,
%shorten <=2pt,
%shorten >=2pt,}
}
\begin{document}
\begin{tikzpicture}
\draw [->] (0,-2.5)--(0,2.5) node[at end, anchor=east,font=\tiny] {$\frac{s}{mm}$};
\draw [->] (0,0)--(6,0) node[at end,anchor=north,font=\tiny] {$\frac{t}{ms}$};

\foreach \x in {1,...,5}
\draw (\x,-0.1) -- (\x,0.1);

\draw[domain=0:1800,samples=2001,rotate=0] plot (\x/360,{0.5*sin(\x)});
\draw[domain=0:1800,samples=2001,rotate=0,color=red] plot (\x/360,{sin((\x/2))});
\draw[domain=0:1800,samples=2001,rotate=0,color=blue] plot (\x/360,{(0.5*sin(\x)+sin((\x/2)))});

\end{tikzpicture}
\end{document}
Ich habe die drei Plots mal in unterschiedlicher Farbe erzeugt, damit man etwas mehr erkennen kann.

BTW: Ich empfehle die Verwendung eines modernen Editors, der auch utf8 kann, statt sich bei der Eingabe auf ansinew beschränken zu müssen.

Fretschi
06-10-2014, 19:07
Hallo Klops,

schon mal Danke für die Hilfe und die Zeit die Du investiert hast.

Ich erhalte zwar jetzt eine Kurve, aber die entspricht leider nicht meinen Erwartungen :(

Ich habe jetzt mal eine schlampige Skizze erstellt, die verdeutlichen soll, was ich gerne hätte.
Kurven blau und grün sollen Sinussignale darstellen. Die rote Kurve ist die Addition der Auslenkungen der blauen und grünen Kurven.

Falls das irgendwie mit LaTeX realisierbar ist, wäre ich dankbar :)

6084

Ein weiteres Stichwort wäre glaube ich noch Fouriersynthese... hab mal gegoogelt, kann aber mit den Formeln absolut nichts anfangen.

klops
06-10-2014, 21:57
Wenn Du zwei andere Frequenzen addieren willst, dann mach das doch einfach. Ich sehe nicht, wo das Problem ist:
\documentclass{scrartcl}
\usepackage{scrpage2}
\pagestyle{scrheadings}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{
adieresis={ä},
germandbls={ß},
}


\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{calc,decorations.pathmorphing,deco rations.pathreplacing,decorations.shapes,decoratio ns.markings}
\tikzset{
%Define standard arrow tip
>=latex,
%Define style for boxes
beschriftung/.style={
rectangle,
fill=white,
%minimum height=1em,
text centered},
%% Define arrow style
%pil/.style={
%->,
%thick,
%shorten <=2pt,
%shorten >=2pt,}
}
\begin{document}
\begin{tikzpicture}
\draw [->] (0,-2.5)--(0,2.5) node[at end, anchor=east,font=\tiny] {$\frac{s}{mm}$};
\draw [->] (0,0)--(6,0) node[at end,anchor=north,font=\tiny] {$\frac{t}{ms}$};

\foreach \x in {1,...,5}
\draw (\x,-0.1) -- (\x,0.1);

\draw[domain=0:1800,samples=2001,rotate=0] plot (\x/360,{0.5*sin(\x)});
\draw[domain=0:1800,samples=2001,rotate=0,color=red] plot (\x/360,{sin((\x/4))});
\draw[domain=0:1800,samples=2001,rotate=0,color=blue] plot (\x/360,{(0.5*sin(\x)+sin((\x/4)))});

\end{tikzpicture}
\end{document}
Wenn Du die Mathematik dahinter nicht verstanden hast, solltest Du vielleicht in einem Matheforum danach fragen. Ein TeX-Problem ist das jedenfalls nicht mehr. Den TeX-Teil der Lösung habe ich Dir bereits in meiner ersten Antwort gezeigt.

Fretschi
07-10-2014, 22:59
UPS... es tut mir leid, ich habe mich geirrt.

TeX arbeitet wie erwartet.

Habe jetzt nochmal mit den Formeln etwas gespielt und das Ergebnis passt.

Nochmal besten dank.

Fretschi
07-10-2014, 23:39
Deinen Rat mit dem Matheforum habe ich ebenfalls befolgt und weiß jetzt, dass ich mit PI/y (z.B. Sin(x+PI/2) ) die Phase verschieben kann.

Wenn ich jetzt folgende Zeilen einfüge,



\draw[domain=0:1800,samples=2001,rotate=0] plot (\x/360,{sin(\x+(3.1415/2))}); % mit Phasenverschiebung
\draw[domain=0:1800,samples=2001,rotate=0,color=orange] plot (\x/360,{sin(\x)}); % ohne Phasenverschiebung


liegen die beiden Kurven allerdings weiter übereinander. Was mache ich Falsch?

klops
08-10-2014, 06:29
Das Problem ist, dass Deine Werte nicht in rad (aka im Bogenmaß), sondern in ° (also im Winkelmaß Grad, englisch: degree, Kurzform: deg) sind. Also musst Du nicht pi, sondern 360/2=180 für eine halbe Periode bzw. 90 für eine Viertelperiode addieren.

Siehe dazu auch trig format plots in der pgfplots-Anleitung und zum Verständnis ggf. Winkelmaß auf Wikipedia (https://de.wikipedia.org/wiki/Winkelma%C3%9F).

BTW: pgfplots kennt pi. Man muss da also keine eigene Näherung für angeben, wenn man es denn einmal braucht, was hier jedoch nicht der Fall ist.