Почему \psplot нужны более высокие точки построения при построении графика функции слева от асимптоты функции?

Почему \psplot нужны более высокие точки построения при построении графика функции слева от асимптоты функции?

Следующая анимация наглядно демонстрирует поведение. \psplotкажется, работает асимметрично. Он может построить правую часть с помощью значения по умолчанию plotpoints, но это не так, когда он строит левую часть. Нам нужно увеличить , plotpointsчтобы получить полный график в левой части.

введите описание изображения здесь

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-plot}

\pstVerb{/myDiv {dup 0 eq {pop 0 lt {-1e30} {1e30} ifelse} {div} ifelse} def}

\def\f#1{1 #1 myDiv}
\def\g#1{\f{#1 neg}}


\psset{yMinValue=-4,yMaxValue=4}

\begin{document}
\multido{\i=7+12}{20}{%
\psset{plotpoints=\i}
\begin{pspicture}[showgrid=bottom](-2,-4)(2,4)
\psclip{\psframe[linestyle=none,dimen=middle](-2,-4)(2,4)}
    \psplot[linecolor=red]{-2}{2}{\f{x}}
    \psplot[linecolor=blue]{-2}{2}{\g{x}}
    \rput(0,0){\textcolor{red}{plotpoints: \i}}
\endpsclip
\end{pspicture}}
\end{document}

Почему при построении функции слева от асимптоты функции \psplotнужно больше ? Это ошибка?plotpoints

решение1

для четного числа точек графика значения x равнынетсимметрично относительно оси y, причина, по которой вы не достигли недопустимого деления на ноль 1/0, но не имеете одинакового расстояния точек от оси y. Выбор нечетного числа точек построения, например 13, создает симметричные значения x, но также имеет x=0 в наборе. Однако 1/0 может быть пойман собственным оператором деления и plotpoints=6*n+1при n=1,2,... даст симметричное поведение для этого вида функции.

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-plot}

\begin{document}
\pstVerb{ % control the division, y x is on the stack
  /myDiv { dup 0 eq { pop 0 lt { -1e30 }
                               {  1e30 } ifelse } 
       { div } ifelse } def
}

\psset{plotpoints=24,plotstyle=dots}
\begin{pspicture}[showgrid=bottom](-2,-5)(4,5)
    \psplot[linecolor=red]{-2}{4}{1 x myDiv}
    \psplot[linecolor=blue]{-2}{4}{-1 x myDiv}
\end{pspicture}

\psset{plotpoints=25,plotstyle=dots}
\begin{pspicture}[showgrid=bottom](-2,-5)(4,5)
    \psplot[linecolor=red]{-2}{4}{1 x myDiv}
    \psplot[linecolor=blue]{-2}{4}{-1 x myDiv}
\end{pspicture}

\psset{plotpoints=241,plotstyle=line,yMaxValue=5}
\begin{pspicture}[showgrid=bottom](-2,-5)(4,5)
    \psplot[linecolor=red]{-2}{4}{1 x myDiv}
    \psplot[linecolor=blue]{-2}{4}{-1 x myDiv}
\end{pspicture}

\end{document}

введите описание изображения здесь

Связанный контент