Wie zeichnet man mit PStricks Tangenten beliebiger Funktionen y=f(x) an einem gegebenen Punkt (x,y) von f(x)?

Wie zeichnet man mit PStricks Tangenten beliebiger Funktionen y=f(x) an einem gegebenen Punkt (x,y) von f(x)?

Ich bin relativ neu bei der Verwendung von PStricks und weiß nicht genau, wie man an einem bestimmten Punkt der Kurve einen Tangens von y=f(x) zeichnet. Ich weiß, dass dies mit einfacher Mathematik möglich ist, indem man das zugehörige Differentialdreieck am Punkt [(x,y), dx, dy] konstruiert. Aber ich denke, dass PStricks eine „einfache Möglichkeit“ haben sollte, dies automatisch zu tun. Können Sie mir bitte helfen?

Antwort1

Pstricks bestehen aus mehreren Paketen. Das Basispaket ist pstricks.

Eine vollständige Liste aller verfügbaren Pakete mit einer kurzen Beschreibung finden Sie untertug.org/PStricks

Zum Plotten einer Funktion pst-plotwird das Paket empfohlen. Es stellt den Befehl bereit \psplot.

\psplotTangentDas Zeichnen einer Tangente einer gegebenen Funktion ist mit dem im Paket bereitgestellten Befehl problemlos möglich pstricks-add.

Hier ein Beispiel der Dokumentation:

\documentclass[pstricks]{standalone}
\usepackage{pstricks,pst-plot,pstricks-add}

\begin{document}
\def\F{x RadtoDeg dup dup cos exch 2 mul cos add exch 3 mul cos add}
\def\Fp{x RadtoDeg dup dup sin exch 2 mul sin 2 mul add exch 3 mul sin 3 mul add neg}
\psset{plotpoints=1001}
\begin{pspicture}(-7.5,-2.5)(7.5,4)%X\psgrid
\psaxes{->}(0,0)(-7.5,-2)(7.5,3.5)
\psplot[linewidth=3\pslinewidth]{-7}{7}{\F}
\psset{linecolor=red, arrows=<->, arrowscale=2}
\multido{\n=-7+1}{8}{\psplotTangent{\n}{1}{\F}}
\psset{linecolor=magenta, arrows=<->, arrowscale=2}%
\multido{\n=0+1}{8}{\psplotTangent[linecolor=blue, Derive=\Fp]{\n}{1}{\F}}
\end{pspicture}

\end{document}

Bildbeschreibung hier eingeben

Antwort2

Meine Antwort unten fügt der Antwort von Marco Daniel die Infix-Version hinzu und bietet einige leicht anzupassende Einstellungen als Vorlage.

\documentclass[pstricks,border=0bp,12pt,dvipsnames]{standalone}
\usepackage{pstricks-add}

\usepackage[nomessages]{fp}

\FPset\TrigLabelBase{4}
\FPeval\XMin{0-pi}
\FPeval\XMax{2*pi}
\FPset\YMin{-3}
\FPset\YMax{3}

\FPeval\DeltaX{pi/TrigLabelBase}
\FPeval\DeltaY{1}

\FPeval\Left{XMin-DeltaX/2}
\FPeval\Right{XMax+DeltaX/2}
\FPeval\Bottom{YMin-DeltaY/4}
\FPeval\Top{YMax+DeltaY/4}

\newlength\Width\Width=12cm
\newlength\Height\Height=6cm

\newlength\urx\urx=15pt
\newlength\ury\ury=15pt
\newlength\llx\llx=-5pt
\newlength\lly\lly=-5pt



\psset
{
    algebraic,
    urx=\urx,
    ury=\ury,
    llx=\llx,
    lly=\lly,
    plotpoints=1000,
    trigLabels,
    trigLabelBase=\TrigLabelBase,
    xAxisLabel=$x$,
    yAxisLabel=$y$,
    tickcolor=gray,
    ticksize=0 -4pt,
    labelFontSize=\scriptstyle,
}



% the same as \sum_{i=1}^{3} \frac{\cos(i x)}{i},
% the third arg represent increment step,
\def\f{Sum(i,1,1,3,cos(i*x)/i)}% is the same as \def\f{cos(x)+cos(2*x)/2+cos(3*x)/3}


% the first derivative of \f
\def\fp{Derive(1,\f)}



\begin{document}

\begin{psgraph}[dx=\DeltaX,dy=\DeltaY,linecolor=gray]{->}(0,0)(\Left,\Bottom)(\Right,\Top){\dimexpr\Width-\urx+\llx}{!}%{\dimexpr\Height-\ury+\lly}
    \psplot[linecolor=NavyBlue]{\XMin}{\XMax}{\f}
    \pstVerb{/xxx {Pi 4 div} def}%
    \psset{arrows=<->}
    \psplotTangent[linecolor=ForestGreen]{xxx}{3}{\f}% tangent line
    \psplotTangent[linecolor=Maroon,Derive={-1/\fp}]{xxx}{3}{\f}% normal line
\end{psgraph}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen