Ich habe Funktionen mit TikZ gezeichnet, die sich schneiden. In den Schnittpunkten möchte ich jeweils einen dicken Punkt setzten, damit man diese besser erkennt. Neben den Schnittpunkt soll dann direkt etwas stehen.

Open in writeLaTeX
\documentclass[margin=5mm, tikz]{standalone}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usepackage{amsmath, amssymb}
\begin{document}
\begin{tikzpicture}[
x=1cm, y=1cm,  scale=1.0, 
font=\footnotesize,
>=latex
]
\draw[->] (-4.5,0) -- (4.5,0) node[below] {$x$};

\foreach \x in {-4,...,4}
\draw[shift={(\x,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[below] {\footnotesize $\x$};

\draw[->] (0,-3.5) -- (0,3.5) node[left] {$y$};

\foreach \y in {-3,...,3}
\draw[shift={(0,\y)},color=black] (2pt,0pt) -- (-2pt,0pt) node[left] {\footnotesize $\y$};
\draw[color=black] (0pt,-5pt) node[right] {\footnotesize $0$};

\draw[thick,color=red] plot[samples=200, domain=1:2.3] 
(\x,{sqrt((\x^3-\x))}) node[] {};

\draw[thick,color=red] plot[samples=200, domain=1:2.3] 
(\x,{-sqrt((\x^3-\x))}) node[] {};

\draw[thick,color=red] plot[samples=200, domain=0:-1] 
(\x,{sqrt((\x^3-\x))}) node[] {};

\draw[thick,color=red] plot[samples=200, domain=0:-1] 
(\x,{-sqrt((\x^3-\x))}) node[] {};

\draw[thick, color=blue] plot[samples=200, domain=-3:3] 
(\x,{\x+0.5}) node[] {};

\draw[thick, color=blue, dashed] (2.039, -3) -- (2.039,3);
\end{tikzpicture}
\end{document}

gefragt 15 Apr '14, 11:00

lalaland's gravatar image

lalaland
119568
Akzeptiert-Rate: 0%

bearbeitet 15 Apr '14, 20:01

esdd's gravatar image

esdd
17.8k284257


Eine Möglichkeit wäre das von Hand zu machen:

Open in writeLaTeX
%....
%Schnittpunkt
\draw [red, fill=yellow]  (2.039,2.539) circle (2pt) node[right] {$S$};

\end{tikzpicture}

Rest wie gehabt.

Eine Lösung mit der Bibliothek 'intersections' bekomme ich für diese Kurven im Moment nicht hin.

Permanenter link

beantwortet 15 Apr '14, 12:59

cis's gravatar image

cis
9.5k94459491
Akzeptiert-Rate: 29%

Habe es nun so gelöst.

(15 Apr '14, 14:49) lalaland

Eine Lösung mit automatischer Bestimmung der Schnittpunkte:

  • TikZ-Bibliothek intersections laden
  • Schnittpunktstil definieren
  • Funktionen und Linie benennen
  • Schnitt bestimmen, node zeichnen und labeln

Relevante Ausschnitte hierfür:

Open in writeLaTeX
\usetikzlibrary{intersections}
\tikzset{schnittpunkt/.style={circle, inner sep = 2pt, draw, fill = white}}
...
\draw[name path=funktion4, thick,color=red] plot[samples=200, domain=-1:0] 
(\x,{-sqrt((\x^3-\x))}) node[] {};
\draw[name path=linie, thick, color=blue] plot[samples=200, domain=-3:3] 
(\x,{\x+0.5}) node[] {};
\path[name intersections={of=linie and funktion4}]
  node at (intersection-1) [schnittpunkt,label=below:{$P_2$}] {};

Gesamtes Codebeispiel:

Open in writeLaTeX
\documentclass[margin=5mm, tikz]{standalone}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{intersections}
\tikzset{schnittpunkt/.style={circle, inner sep = 2pt, draw, fill=white}}
\usepackage{amsmath, amssymb}
\begin{document}
\begin{tikzpicture}[
x=1cm, y=1cm,  scale=1.0, 
font=\footnotesize,
>=latex
]
\draw[->] (-4.5,0) -- (4.5,0) node[below] {$x$};

\foreach \x in {-4,...,4}
\draw[shift={(\x,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[below] {\footnotesize $\x$};

\draw[->] (0,-3.5) -- (0,3.5) node[left] {$y$};

\foreach \y in {-3,...,3}
\draw[shift={(0,\y)},color=black] (2pt,0pt) -- (-2pt,0pt) node[left] {\footnotesize $\y$};
\draw[color=black] (0pt,-5pt) node[right] {\footnotesize $0$};

\draw[name path=funktion1, thick,color=red] plot[samples=200, domain=1:2.3] 
(\x,{sqrt((\x^3-\x))}) node[] {};

\draw[name path=funktion2, thick,color=red] plot[samples=200, domain=1:2.3] 
(\x,{-sqrt((\x^3-\x))}) node[] {};

\draw[name path=funktion3, thick,color=red] plot[samples=200, domain=-1:0] 
(\x,{sqrt((\x^3-\x))}) node[] {};

\draw[name path=funktion4, thick,color=red] plot[samples=200, domain=-1:0] 
(\x,{-sqrt((\x^3-\x))}) node[] {};

\draw[name path=linie, thick, color=blue] plot[samples=200, domain=-3:3] 
(\x,{\x+0.5}) node[] {};

\draw[thick, color=blue, dashed] (2.039, -3) -- (2.039,3);

\path[name intersections={of=linie and funktion1}]
  node at (intersection-1) [schnittpunkt,label=below right:{$P_1$}] {};
\path[name intersections={of=linie and funktion4}]
  node at (intersection-1) [schnittpunkt,label=below:{$P_2$}] {};
\end{tikzpicture}
\end{document}

Schnittpunkte Linie und Kurven

Den anderen Schnittpunkt, analog Schnitt von linie und funktion3, hab ich noch nicht hingekriegt, hier kam nur der gleiche Schnittpunkt P1 heraus. Evtl. findet jemand die Ursache oder Du kriegst es damit noch hin.

Permanenter link

beantwortet 15 Apr '14, 13:44

stefan's gravatar image

stefan ♦♦
18.3k163148
Akzeptiert-Rate: 50%

Das Prinzip habe ich verstanden. Hätte aeigentlich gedacht, dass der dritte Schnittpunkt durch den Schnittpunkt von "funktion4" und "linie" ebenfalls angezeigt wird...

(15 Apr '14, 14:49) lalaland

@Stefan Den Schnittpunkt mit funktion3 findet er (aus welchem Grund auch immer) nur mit niedrigerer sample Anzahl. Das der nicht gefundene Schnittpunkt dann einfach beim schon ermittelten P1 eingezeichnet wird, liegt daran, dass du für alle Schnittpunkte den gleichen Koordinatennamen (intersection-1) nutzt. Wenn also kein neuer Schnittpunkt gefunden wird, wird einfach der vorhergehende gleichen Namens weiter benutzt.

(15 Apr '14, 16:40) esdd

Hier ist noch ein Vorschlag, bei dem alle Schnittpunkte von TikZ ermittelt werden. Falls die gestrichelte Linie eine Senkrechte zur x-Achse durch den Schnittpunkt sein soll, dann kann man auch diese einzeichnen lassen, ohne den Punkt zu berechnen.

alt text

Open in writeLaTeX
\documentclass[margin=5mm, tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}[
  font=\footnotesize,
  >=latex,
  kurve/.style={thick,red,samples=100,domain=#1},
  gerade/.style={thick,blue,samples=2,domain=#1},
  punkt/.style={circle,inner sep=2pt,fill=white,draw},
]
%Koordinatensystem
\draw[->] (-4.5,0) -- (4.5,0) node[below] {$x$};
\foreach \i in {1,...,4}{\foreach \x in {-\i,\i}
  \draw[shift={(\x,0)}] (0pt,2pt) -- (0pt,-2pt) node[below] {$\x$};}
\draw[->] (0,-3.5) -- (0,3.5) node[left] {$y$};
\foreach \i in {1,...,3}{\foreach\y in {-\i,\i}
  \draw[shift={(0,\y)}] (2pt,0pt) -- (-2pt,0pt) node[left] {$\y$};}
\node[below left] {$0$};
%Kurve
\foreach[count=\i] \d/\v in {1:2.3/,1:2.3/-,0:-1/,0:-1/-}
  \draw[kurve=\d,name path=k\i]plot(\x,{\v sqrt((\x^3-\x))});
%Beseitigen der Lücke bei x=-1
  \foreach \v in {,-}
    \draw[thick,red,samples at={-1,-.99}]plot(\x,{\v sqrt((\x^3-\x))});
%Gerade
\draw[gerade=-3:3,name path=g] plot(\x,{\x+0.5});
%%% ----
%Schnittpunkte ermitteln und beschriften
\foreach[count=\i] \m/\o in {1/right,3/right,4/below}
  \node[name intersections={of={k\m} and g,name=s\i},label=\o:$S_\i$]at(s\i-1){};
%gestrichelte Senkrechte durch 1.Schnittpunkt
\draw[thick,blue,dashed](s1-1|- 0,-3)--(s1-1|-0,3);
%Schnittpunkte einzeichnen
\foreach\i in {1,2,3}\node[punkt]at(s\i-1){};
\end{tikzpicture}
\end{document}

Außerdem kann man auch noch den zweiten Schnittpunkt der gestrichelten Linie mit der Kurve einzeichnen lassen. Dazu ist es notwendig, die gestrichelte Linie mittels name ebenfalls zu bezeichnen:

Open in writeLaTeX
\documentclass[margin=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}[
  font=\footnotesize,
  >=latex,
  kurve/.style={thick,red,samples=100,domain=#1},
  gerade/.style={thick,blue,samples=2,domain=#1},
  punkt/.style={circle,inner sep=2pt,fill=white,draw},
]
%Koordinatensystem
  \draw[->] (-4.5,0) -- (4.5,0) node[below] {$x$};
  \foreach \i in {1,...,4}{\foreach \x in {-\i,\i}
    \draw[shift={(\x,0)}] (0pt,2pt) -- (0pt,-2pt) node[below] {$\x$};}
  \draw[->] (0,-3.5) -- (0,3.5) node[left] {$y$};
  \foreach \i in {1,...,3}{\foreach \y in {-\i,\i}
    \draw[shift={(0,\y)}] (2pt,0pt) -- (-2pt,0pt) node[left] {$\y$};}
  \node[below left] {$0$};
%Kurve
  \foreach[count=\i] \d/\v in {1:2.3/,1:2.3/-,0:-1/,0:-1/-}
    \draw[kurve=\d,name path=k\i]plot(\x,{\v sqrt((\x^3-\x))});
%Beseitigen der Lücke bei x=-1:
  \foreach \v in {,-}
    \draw[thick,red,samples at={-1,-.999,...,-.99}]plot(\x,{\v sqrt((\x^3-\x))});
%Gerade
  \draw[gerade=-3:3,name path=g] plot(\x,{\x+0.5});
%%% ----
%Schnittpunkte ermitteln und beschriften
  \foreach[count=\i] \m/\o in {1/right,3/right,4/below}
    \node[name intersections={of={k\m} and g,name=s\i},label=\o:$S_\i$]at(s\i-1){};
%gestrichelte Senkrechte durch 1.Schnittpunkt
  \draw[thick,blue,dashed,name path=gestrichelt](s1-1|- 0,-3)--(s1-1|-0,3);
%Schnittpunkte einzeichnen
  \foreach\i in {1,2,3}\node[punkt]at(s\i-1){};
%%% ----
%weiterer Schnittpunkt gestrichelte Linie
  \node[name intersections={of=gestrichelt and k2},
    label=right:Extrapunkt,punkt,fill=yellow]at(intersection-1){};
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 15 Apr '14, 16:31

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

bearbeitet 15 Apr '14, 18:29

Ziemlich krass zusammengefaßt. Den letzten Schnittpunkt unten rechts, falls man den auch noch braucht, muß man dann vermutlich manuell ermitteln lassen.

(15 Apr '14, 16:52) cis

@cis Meinst du den zweiten mit der gestrichelten Linie? Den könnte man auch einzeichnen lassen.

(15 Apr '14, 16:55) esdd

Ja genau, den einzigen unmarkierten. Das könntest Du als Beispiel für eine intersection ohne Schleifen usw. dazuschreiben.

(15 Apr '14, 17:19) 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
×50
×28
×6

gestellte Frage: 15 Apr '14, 11:00

Frage wurde gesehen: 23,666 Mal

zuletzt geändert: 15 Apr '14, 21:06