Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Sinuskurven addieren mit Tikz

  1. #1
    Registrierter Benutzer
    Registriert seit
    27.11.2005
    Beiträge
    90

    Sinuskurven addieren mit Tikz

    Hallo zusammen,

    zuerst das Minimalbeispiel:

    Code:
    \documentclass{scrartcl}
    \usepackage{scrpage2} 
    \pagestyle{scrheadings}
    \usepackage[ngerman]{babel}
    \usepackage[T1]{fontenc}
    \usepackage[ansinew]{inputenc}
    
    \usepackage{xcolor} 
    \usepackage{tikz}
    \usetikzlibrary{calc,decorations.pathmorphing,decorations.pathreplacing,decorations.shapes,decorations.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!

  2. #2
    Registrierter Benutzer
    Registriert seit
    09.12.2005
    Beiträge
    1.326
    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:
    Code:
    \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,decorations.pathreplacing,decorations.shapes,decorations.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.

  3. #3
    Registrierter Benutzer
    Registriert seit
    27.11.2005
    Beiträge
    90
    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

    kurvenaddition.png

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

  4. #4
    Registrierter Benutzer
    Registriert seit
    09.12.2005
    Beiträge
    1.326
    Wenn Du zwei andere Frequenzen addieren willst, dann mach das doch einfach. Ich sehe nicht, wo das Problem ist:
    Code:
    \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,decorations.pathreplacing,decorations.shapes,decorations.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.

  5. #5
    Registrierter Benutzer
    Registriert seit
    27.11.2005
    Beiträge
    90
    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.

  6. #6
    Registrierter Benutzer
    Registriert seit
    27.11.2005
    Beiträge
    90
    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,

    Code:
    	\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?

  7. #7
    Registrierter Benutzer
    Registriert seit
    09.12.2005
    Beiträge
    1.326
    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.

    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.
    Geändert von klops (08-10-2014 um 08:29 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •