\documentclass[border=10pt,pstricks]{standalone}
\usepackage{amsmath,pst-func}
\begin{document}
\pstVerb{
/SINC { dup 0 eq { pop 1 } { dup SIN exch div } ifelse } bind def %% in pst-math.pro
/COSC { dup 0 eq { pop 1 } { dup COS exch div } ifelse } bind def %% based on \SINC
}
\psset{xunit=.5,yunit=2}
\begin{pspicture}(-15,-2)(15,2)
\psplot[plotpoints=500]{-15}{15}{x RadToDeg cos x div}
\uput[0](1,1){$y=\dfrac{cos(x)}{x}$}
\end{pspicture}
\begin{pspicture}(-15,-2)(15,2)
\psplot[plotpoints=500]{-15}{15}{x COSC}
\uput[0](1,1){$y=\dfrac{cos(x)}{x}$}
\end{pspicture}
\end{document}
问题:
有什么区别x RadToDeg cos x div和瑞士官方天文台;股利和div?
答案1
COSC
状态的定义dup COS exch div
。查看 PostScript 堆栈命令参考 (http://www.ugrad.math.ubc.ca/Flat/stack-ref.html) 这意味着:
将堆栈顶部对象的副本添加到堆栈中
COS
交换堆栈顶部两个元素的位置
划分
在pst-math
`COS函数中定义为弧度的余弦。从手动的在第 4 页:
pst-math 引入了自然三角 PostScript 运算符 COS、SIN 和 TAN,由以下函数定义
余弦:ℝ → [−1,1],x → cos(x)
因此x COSC
变成:
x dup COS exch div
→x x COS exch div
→x COS x div
→ x radian_cos x div
,
IE,x RadToDeg cos x div
。
答案2
3 4 div
有效,但3 0 div
会抛出错误。使用
3 0 DIV
有效,但只会返回。这就是和3
之间的区别div
DIV
答案3
为了了解幕后发生了什么DIV
以及COSC
做了什么,最好只使用pst-plot
下面的方法重新创建它们。
\documentclass[border=10pt,pstricks]{standalone}
\usepackage{pst-plot}
\pstVerb{
/DIV {dup 0 eq {pop 1}{} ifelse div} bind def
/COSC {dup RadtoDeg cos exch DIV} bind def
}
\psset{xunit=.5,yunit=2}
\begin{document}
\begin{pspicture}(-15,-5)(15,5)
\psplot[plotpoints=500]{-15}{15}{x COSC}
\end{pspicture}
\end{document}
笔记:
DIV
只是一个接受两个操作数的运算符x
,如果不是 则y
返回。否则,它返回。x/y
y
0
x/1=x
让我们一步一步地追踪非零值
y
。x y DIV x y dup 0 eq {pop 1}{} ifelse div x y y 0 eq {pop 1}{} ifelse div
当
y 0 eq
返回 false 时,继续跳转到{}
空的位置。x y div
让我们一步一步地追踪一下
y=0
。x 0 DIV x 0 dup 0 eq {pop 1}{} ifelse div x 0 0 0 eq {pop 1}{} ifelse div
当
0 0 eq
返回 true 时则继续跳转到{pop 1}
。x 0 pop 1 div
pop
删除顶部操作数,即0
。x 1 div x
COSC
也只是一个接受一个操作数x
(以弧度为单位)并返回cos(x)/x
非零x
并返回cos(x)
的运算符x=0
。x COSC x dup RadtoDeg cos exch DIV x x RadtoDeg cos exch DIV x x_deg cos exch DIV x cos(x_deg) exch DIV cos(x_deg) x DIV
最终结果
cos(x_deg)/x
非零x
但cos(x_deg)
。x=0