Hallo! Ich habe jetzt kürzlich einen TikZ-Graphen für die Gleichung sin(x) = a erstellt.

alt text

Die Berechnungsformel lautet: alt text

Link zum Artikel mit Herleitung: Lösung der Gleichung sin(x) = a für a ∈ [-1,1].

Mir geht es um den Teil der Schnittpunkte:

Open in Online-Editor
%Schnittpunkte
\foreach \k in {-2,...,3}{%%
% x-Wert berechnen und abspeichern
\pgfmathparse{((-1)^\k) * 3.14159265359*asin(\a)/180 + \k*3.14159265359}
\let\myresult\pgfmathresult
\pgfmathparse{\myresult}
\let\myresult\pgfmathresult
\draw[color=red, fill=white] plot[mark=*,mark size=2.75pt] 
coordinates{ 
( {\myresult},  {\a} ) 
};
%\node[] at (\myresult,\a) {\myresult};
}%%

Hier konnte ich die Arkussinusfunktion asin(...) nicht direkt anwenden. Nach etwas rumsuchen konnte ich mir eine "mathparse-Lösung" zusammenreimen, die auch tat.

Nun die Frage: Wäre der Graph bzw. die Rechnung ggf. auch einfacher gegangen?

Am Rande: Auch hab ich es nicht geschafft die Zahl pi als Platzhalter reinzuschreiben - pgfmathpi (Seite 939, Tikz-Handbuch) wollte er nicht. :(

Hinweis: Ich nehme ganz gerne die plotmarks-Bibliothek, weil man da viele Optionen hat.

Vollständiges Bsp.:

Open in Online-Editor
\documentclass[varwidth, margin=2.5pt]{standalone}
\usepackage[ngerman]{babel}
\usepackage{tikz}
    \usetikzlibrary{plotmarks}
\usepackage{amsmath, amssymb}

%===========
\begin{document}
%===========

\def\a{0.74}
\begin{tikzpicture}[x = 1cm, y=1.5cm, scale=0.45,
font=\footnotesize,
>=latex   %Voreinstellung für Pfeilspitzen
]

% 
% Funktionen     y = sin(x),  y = a
\draw[] plot[samples=300, domain=-9:9]
(\x,{sin(\x r)}) node[above=15pt] {$f(x)=\sin\left(x\right)$};

\draw[] (9,\a) -- (-9,\a) node[above, xshift=5mm] {$a = \a$};

%Schnittpunkte
\foreach \k in {-2,...,3}{%%
% x-Wert berechnen und abspeichern
\pgfmathparse{((-1)^\k) * 3.14159265359*asin(\a)/180 + \k*3.14159265359}
\let\myresult\pgfmathresult
\pgfmathparse{\myresult}
\let\myresult\pgfmathresult
\draw[color=red, fill=white] plot[mark=*,mark size=2.75pt] 
coordinates{ 
( {\myresult},  {\a} ) 
};
%\node[] at (\myresult,\a) {\myresult};
}%%

% Koordinatensystem
% x-Achse
\draw[->] (-9.9,0) -- (9.9,0) node[below] {$x$}; 
%Zahlen auf x-Achse
\foreach \x/\xtext in {
-.5*pi/-\frac{\pi}{2}, -pi/-\pi, -1.5*pi/-\frac{3\pi}{2}, -2*pi/-2\pi, -2.5*pi/-\frac{5\pi}{2},
.5*pi/\frac{\pi}{2}, pi/\pi, 1.5*pi/\frac{3\pi}{2}, 2*pi/2\pi, 2.5*pi/\frac{5\pi}{2}
}
\draw (\x,2pt) -- (\x,-2pt) node[below] {$\xtext$};

% y-Achse 
\draw[->] (0,-1.75) -- (0,1.75) node[left] {$y$};
%Zahlen auf y-Achse
\foreach \y in {-1,-0.5,0.5,1}
\draw[] (2pt,\y) -- (-2pt,\y) node[left] {\tiny $\y$};

%Ursprung
\draw[] (0pt,-5pt) node[below right] {$0$};

\end{tikzpicture}

%===========
\end{document}
%===========

gefragt 05 Feb '15, 12:31

cis's gravatar image

cis
9.5k93459491
Akzeptiert-Rate: 29%

bearbeitet 06 Feb '15, 12:18


Da Du die Gleichung für die Berechnung der Schnittpunkte kennst, kannst Du diese direkt einsetzen. Das einzige, was man dabei beachten muss, ist, dass das Ergebnis von asin(\a) in Grad angegeben wird und mit rad() umgerechnet werden muss.

Open in Online-Editor
% Schnittpunkte
\foreach \k in {-2,...,3}
  \draw[color=red, fill=white] plot[mark=*,mark size=2.75pt] 
    coordinates{( {((-1)^\k) * rad(asin(\a)) + \k*pi}, {\a} )};

In dem Code siehst Du auch gleich, wie Du pi in der Rechnung verwenden kannst.

Wenn Du den Wert als \myresult zwischenspeichern möchtest, dann kannst Du \pgfmathsetmacro nutzen.

Open in Online-Editor
%Schnittpunkte
\foreach \k in {-2,...,3}{
  \pgfmathsetmacro\myresult{((-1)^\k) * rad(asin(\a)) + \k*pi}
  \draw[color=blue, fill=white] plot[mark=*,mark size=2.75pt] 
    coordinates{( {\myresult},  {\a} )};
}

Zum Ermitteln der Schnittpunkte kann man auch die Bibliothek intersections verwenden. Dann brauchst Du nur jeder der beiden Kurven mit der Option name path einen Namen geben und kannst anschließend die Schnittpunkte ermitteln und markieren lassen:

Open in Online-Editor
% y = sin(x), sin(x) = a  
\def\a{0.74}
% Funktionen
\draw[name path=plot] plot[samples=300, domain=-9:9]
  (\x,{sin(\x r)}) node[above=15pt] {$f(x)=\sin\left(x\right)$};
\draw[name path=a] (9,\a) -- (-9,\a) node[above, xshift=5mm] {$a = \a$};
% Schnittpunkte
\draw[red,fill=white,name intersections={of=plot and a,name=i, total=\i}]
  \foreach\s in {1,...,\i}{plot[mark=*,mark size=2.75pt] coordinates{(i-\s)}};

alt text

Code:

Open in Online-Editor
\documentclass[varwidth, margin=2.5pt]{standalone}
\usepackage[ngerman]{babel}
\usepackage{tikz}
    \usetikzlibrary{plotmarks}
    \usetikzlibrary{intersections}
\usepackage{amsmath, amssymb}

\begin{document}
\begin{tikzpicture}[x = 1cm, y=1.5cm, scale=0.45,font=\footnotesize,>=latex]

% y = sin(x), sin(x) = a  
\def\a{0.74}
% Funktionen
\draw[name path=plot] plot[samples=300, domain=-9:9]
  (\x,{sin(\x r)}) node[above=15pt] {$f(x)=\sin\left(x\right)$};
\draw[name path=a] (9,\a) -- (-9,\a) node[above, xshift=5mm] {$a = \a$};
% Schnittpunkte
\draw[red,fill=white,name intersections={of=plot and a,name=i, total=\i}]
  \foreach\s in {1,...,\i}{plot[mark=*,mark size=2.75pt] coordinates{(i-\s)}};

% x-Achse
\draw[->] (-9.9,0) -- (9.9,0) node[below] {$x$}; 
%Zahlen auf x-Achse
\foreach \x/\xtext in {%
  -.5*pi/-\frac{\pi}{2}, -pi/-\pi, -1.5*pi/-\frac{3\pi}{2}, -2*pi/-2\pi, -2.5*pi/-\frac{5\pi}{2},
  .5*pi/\frac{\pi}{2}, pi/\pi, 1.5*pi/\frac{3\pi}{2}, 2*pi/2\pi, 2.5*pi/\frac{5\pi}{2}%
}\draw (\x,2pt) -- (\x,-2pt) node[below] {$\xtext$};
% y-Achse 
\draw[->] (0,-1.75) -- (0,1.75) node[left] {$y$};
%Zahlen auf y-Achse
\foreach \y in {-1,-0.5,0.5,1}\draw (2pt,\y) -- (-2pt,\y) node[left] {\tiny $\y$};
%Ursprung
\draw(0pt,-5pt) node[below right] {$0$};
\end{tikzpicture}
\end{document}
Permanenter link

beantwortet 05 Feb '15, 12:56

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

bearbeitet 05 Feb '15, 13:45

Ah ok, inzwischen kann intersections glaub sowas auch mit beliebigen Kurven, früher glaub noch nicht. Jetzt hätte mich nur noch interessiert, ob solche Rechnungen immer so kompliziert sein müssen; vermutlich schon.

(05 Feb '15, 13:02) cis

@cis Das mit der Rechnung habe ich jetzt noch ergänzt. Das geht wesentlich einfacher als in Deinem MWE ;-)

(05 Feb '15, 13:29) esdd

Ahja, sehr gut! Solche Rechnungen kann man an anderer Stelle sicher auch oft brauchen! ;)

(05 Feb '15, 13:47) cis
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×730
×2

gestellte Frage: 05 Feb '15, 12:31

Frage wurde gesehen: 6,812 Mal

zuletzt geändert: 06 Feb '15, 12:18