psplot:负数的平方根

psplot:负数的平方根

是否有可能psplot自动忽略无效范围?

例子:

x 2 sub sqrt

这无法通过请求来绘制\psplot{0}{10},但只能在使用时绘制\psplot{2}{10}

当然,我的公式比这更复杂,而且可能存在几个区间的情况(negative number) sqrt

除此之外,我还在使用\multido,所以如果我必须找到每个出现这种情况的点,那将会非常烦人-1 sqrt......

我希望它应该如何表现:它应该只绘制函数的真实值并跳过虚数。

编辑:MWE(由于负平方根而不起作用):

\documentclass[pstricks]{standalone}
\standaloneconfig{border=1cm}
\usepackage{pstricks,multido,pst-func}

\begin{document}
\begin{pspicture}(10,6)

\psaxes[labels=none]{->}(0,0)(10,6)
\multido{\n=1.1+.1}{20}{%
\psplot[linecolor=red,linewidth=.5mm]{0}{9}{5 2 3.1416 mul div \n\space 2 exp x 10 mul sin 2 exp mul 1 sub sqrt mul}
}

\end{pspicture}
\end{document}

答案1

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-plot}
\pstVerb{/mySQRT { dup 0 lt { 0 }{ sqrt } ifelse } bind def }%

\begin{document}
\begin{pspicture}(10,6)
    \psaxes[labels=none]{->}(0,0)(10,6)
    \multido{\n=1.1+.3}{20}{%
    \psplot[linecolor=red]{0}{9}{5 2 Pi mul div \n\space 2 exp x 10 mul sin 2 exp mul 1 sub mySQRT mul}}
\end{pspicture}
\end{document}

在此处输入图片描述

编辑:

我刚刚得到了以下启示。

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-plot}
\pstVerb{/mySQRT { dup 0 lt { neg sqrt neg }{ sqrt } ifelse } bind def }%
\psset{plotpoints=200}
\begin{document}
\begin{pspicture}(10,6)
    \psclip{\psframe[linestyle=none,linewidth=0](9,6)}
        \multido{\n=1.1+.3}{20}{%
        \psplot[linecolor=red]{0}{9}{5 2 Pi mul div \n\space 2 exp x 10 mul sin 2 exp mul 1 sub mySQRT mul}}
    \endpsclip
    \psaxes[labels=none]{->}(0,0)(10,6)
\end{pspicture}
\end{document}

在此处输入图片描述

请注意,也可以按以下形式mySQRT调用。algebraic

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-plot}
\pstVerb{/mySQRT { dup 0 lt { neg sqrt neg }{ sqrt } ifelse } bind def }%
\psset{plotpoints=200,algebraic}
\begin{document}
\begin{pspicture}(10,6)
    \psclip{\psframe[linestyle=none,linewidth=0](9,6)}
        \multido{\n=1.1+.3}{20}{%
        \psplot[linecolor=red]{0}{9}{5*mySQRT((\n*sin(10*x/180*Pi))^2-1)/(2*Pi)}}
    \endpsclip
    \psaxes[labels=none]{->}(0,0)(10,6)
\end{pspicture}
\end{document}

但不要忘记将度数转换为弧度。

答案2

\documentclass[pstricks]{standalone}
\standaloneconfig{border=1cm}
\usepackage{pst-plot,multido}

\begin{document}
\psset{yunit=2}
\begin{pspicture}(10,3)
\psaxes[labels=none]{->}(0,0)(10,3)
  \multido{\n=1.1+.1}{20}{%
  \psplot[linecolor=red,linewidth=.5mm,plotpoints=500]{0}{9}{5 2 3.1416 mul div \n\space 2 exp x 10 mul sin 2 exp mul 1 sub 
  dup 0 lt % negative value??
    { pop pop 0 /L /moveto load def } % if yes then use moveto
    { sqrt mul /L /lineto load def }  % if not then go on
  ifelse }%
}
\end{pspicture}
\end{document}

在此处输入图片描述

相关内容