%20%E3%81%AE%E6%8C%87%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%9F%E7%82%B9%20(x%2Cy)%20%E3%81%A7%E4%BB%BB%E6%84%8F%E3%81%AE%E9%96%A2%E6%95%B0%20y%3Df(x)%20%E3%81%AE%E6%AD%A3%E6%8E%A5%E3%82%92%E6%8F%8F%E3%81%8F%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F.png)
私は PStricks を使い始めたばかりで、曲線の特定のポイントで y=f(x) の接線を描く方法が正確にわかりません。簡単な数学で、ポイント [(x,y), dx, dy] で関連する微分三角形を作成することで実行できることは知っています。しかし、PStricks にはそれを自動的に実行する「簡単な方法」があるべきだと思います。どうか、助けていただけませんか?
答え1
Pstricks はいくつかのパッケージで構成されています。 の基本は ですpstricks
。
利用可能なすべてのパッケージの完全なリストと簡単な説明は、tug.org/PStricks
関数をプロットするには、パッケージの使用pst-plot
をお勧めします。パッケージにはコマンドが用意されています\psplot
。
\psplotTangent
与えられた関数の接線をプロットすることは、パッケージによって提供されるコマンドで簡単に行うことができますpstricks-add
。
ドキュメントの例を以下に示します。
\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}
答え2
以下の私の回答は、Marco Daniel の回答にインフィックス バージョンを追加し、簡単にカスタマイズできる設定をテンプレートとしていくつか提供します。
\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}