5
1

Mit pgfplots habe ich eine Funktion dargestellt, deren Ableitung leicht zu bestimmen war. Nun sollen an zwei Stellen a und b (zum Beispiel 1.5 und 3) die Tangenten eingezeichnet werden. Außerdem müssen die Berührungspunkte von Kurve und Tangente auf den Achsen mit a und f(a) bzw. b und f(b) beschriftet werden. Dabei möchte ich weder die Funktionswerte noch die Anstiege in den Punkten selbst berechnen und explizit angeben müssen. Gibt es dafür eine Möglichkeit?

\documentclass[margin=5mm]{standalone} 
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}

\begin{document} 
\begin{tikzpicture} 
  \newcommand\funktion{2*sin(0.5*deg(\x)) + 1.5}% dargestellte Funktion
  \newcommand\ableitung{cos(0.5*deg(\x))}% Ableitung der Funktion
%
  \begin{axis}[axis lines=middle,enlargelimits,
    xlabel=$x$,xlabel style={anchor=north},xtick=\empty,
    ylabel=$y$,ylabel style={anchor=east},ytick=\empty
  ]
  \addplot[domain=0:10,samples=200]{\funktion};
  \end{axis}
\end{tikzpicture}
\end{document}

alt text

gefragt 08 Dez '13, 11:04

welle's gravatar image

welle
10642431
Akzeptiert: 100%

bearbeitet 08 Dez '13, 12:09


Eine Tangente an (u|f(u)) ist ja gegeben durch

t(x) = f'(u)(x-u) + f(u)

Mit Deinen beiden Makros bist Du also schon fast am Ziel für den Automatismus:

\documentclass[margin=5mm]{standalone} 
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}

\begin{document} 
\begin{tikzpicture} 
  \newcommand*\funktion[1]{2*sin(0.5*deg(#1)) + 1.5}% dargestellte Funktion
  \newcommand*\ableitung[1]{cos(0.5*deg(#1))}% Ableitung der Funktion
  \newcommand*\tangente[2]{\ableitung{#2}*(#1-#2)+\funktion{#2}}

  \begin{axis}[axis lines=middle,,enlargelimits,
    xlabel=$x$,xlabel style={anchor=north},xtick=\empty,
    ylabel=$y$,ylabel style={anchor=east},ytick=\empty
  ]
  \addplot[domain=-1:10,samples=200]{\funktion{\x}};
  \addplot[domain=4:8]{\tangente{\x}{6}};
  \coordinate (P) at (axis cs:6,{\funktion{6}}) ;
  \coordinate (Q) at (axis cs:0,{\funktion{6}}) ;
  \coordinate (R) at (axis cs:6,0) ;
  \node[coordinate,pin=30:{$(u,f(u))$}] at (P) {};
  \draw[red,dotted] (P) -- (Q) node[left] {$f(u)$} ;
  \draw[red,dotted] (P) -- (R) node[below] {$u$} ;
  \end{axis}
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 08 Dez '13, 11:50

Clemens's gravatar image

Clemens
19.0k112960

bearbeitet 08 Dez '13, 12:14

Hier ist noch ein anderer Ansatz, bei dem zunächst ein Befehl für das Zeichnen einer Geraden durch einen Punkt definiert wird, der sich auch für das Zeichnen einer Tangente bei gegebener Funktion und Ableitung eignet. Außerdem wird für das Beschriften den Punkte ebenfalls ein eigener Befehl definiert.

\documentclass[margin=5mm]{standalone} 
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}

% Syntax für das Zeichnen einer Gerade durch einen vorgegebenen Punkt:
%  #1 Optionen für die Gerade, z.B. Farbe und Plotbereich (optional)
%  #2 x-Koordinate des Punktes
%  #3 y-Koordinate des Punktes, kann auch eine Formel in Abhängigkeit von \x sein
%  #4 Anstieg der Geraden, kann auch eine Formel in Abhängigkeit von \x sein
%  #5 Nodenname für den Punkt
\newcommand\Gerade[5][]{% 
   \pgfmathsetmacro\x{#2}
   \expandafter\pgfmathsetmacro\csname#5x\endcsname{#2}%
   \expandafter\pgfmathsetmacro\csname#5y\endcsname{#3}%
   \pgfmathsetmacro\m{#4}
   \pgfmathsetmacro\n{\csname#5y\endcsname-\m*\csname#5x\endcsname} 
   \addplot[#1] {\m*(\x-\csname#5x\endcsname)+\csname#5y\endcsname};
   \coordinate (#5) at (axis cs:{\csname#5x\endcsname,\csname#5y\endcsname});
}

% Syntax für das Beschriftung eines Punktes:
%  #1 Optionen für die Beschriftung (optional)
%  #2 kommaseparierte Liste mit Nodennamen/Beschriftung an x-Achse/Beschriftung an y-Achse
%  die Koordinate O muss innerhalb der axis Umgebung definiert wurden sein
\newcommand\Beschriftung[2][]{%
  \foreach \name/\beschrx/\beschry in {#2}
    \path[#1](O-|\name)node[below]{\strut\beschrx}--(\name)node[punkt]{}--(\name-|O)node[left]{\beschry};%
}
\tikzset{punkt/.style={circle,minimum width=4\pgflinewidth,inner sep=0pt,fill}}

\begin{document} 
\begin{tikzpicture} 
  \newcommand\funktion{2*sin(0.5*deg(\x)) + 1.5}
  \newcommand\ableitung{cos(0.5*deg(\x))}
  %
  \begin{axis}[axis lines=middle,enlargelimits,
      xlabel=$x$,xlabel style={anchor=north},xtick=\empty,
      ylabel=$y$,ylabel style={anchor=east},ytick=\empty
    ]
    \addplot[domain=0:10,samples=200]{\funktion};
    \coordinate (O) at (axis cs:0,0); % wird für Beschriftung benötigt
    \Gerade[green!80!black,domain=0.2:3]{1.5}{\funktion}{\ableitung}{eins}
    \Gerade[blue,dashed,domain=1:5]{3}{\funktion}{\ableitung}{zwei}
    \Gerade[brown,domain=4:8]{6}{\funktion}{\ableitung}{drei}
  \end{axis}
  \Beschriftung[red,draw,thin,dotted,text=gray]{eins/$a$/$f(a)$,zwei/$b$/$f(b)$,drei/$c$/$f(c)$}
\end{tikzpicture}

\end{document}

alt text

Permanenter link

beantwortet 08 Dez '13, 14:30

esdd's gravatar image

esdd
14.2k53251

bearbeitet 08 Dez '13, 16:14

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×160

Frage gestellt: 08 Dez '13, 11:04

Frage wurde angeschaut: 3,712 Mal

Zuletzt aktualisiert: 08 Dez '13, 16:14