不使用包的 PostScript 计算fp

不使用包的 PostScript 计算fp

有没有办法将“负”数与multido和 一起使用fp?在下面的代码中,它可以与 一起使用\Nx=4+0.5,但不能与 一起使用\Nx=4+-0.5

附加问题:有没有不使用包就可以做到这一点的方法fp?我认为使用 PostScript 进行计算是可能的,但我不知道如何做到这一点。

谢谢。

\documentclass[a4paper,10pt]{article}

\usepackage{multido}
\usepackage{fp}
\usepackage{pstricks}

\begin{document}

\begin{pspicture}(-5,5)(-5,5)
\multido{\Nx=4+-0.5}{12}{
  \FPeval{\moncalcul}{\Nx^2/4+1} 
  \psdots(\Nx,\moncalcul)
  }
\end{pspicture}

\end{document}

答案1

负数的幂似乎是个问题。使用absaround\Nx来计算平方可以得到:

\documentclass[a4paper,10pt]{article}

\usepackage{multido}
\usepackage{fp}
\usepackage{pstricks}

\begin{document}

\begin{pspicture}(-5,5)(-5,5)
\multido{\Nx=4+-0.5}{12}{
  \FPeval{\moncalcul}{abs(\Nx)^2/4+1}
  \psdots(\Nx,\moncalcul)
  }
\end{pspicture}

\end{document}

结果

其他工作变体不abs

  • 功能pow而不是中缀运算符^

    \FPeval{\moncalcul}{pow(\Nx, 2)/4+1}
    
  • 用一个乘法

    \FPeval{\moncalcul}{(\Nx*\Nx)/4 + 1}
    
  • 逆波兰表示法

    \FPupn\moncalcul{\Nx{} 2 pow 4 div 1 add}
    

不使用包的 PostScript 计算fp

\psdots(! \Nx\space dup 2 exp 4 div 1 add)

或简单的乘法:

\psdots(! \Nx\space dup dup mul 4 div 1 add)

必须有堆栈上的值X坐标。由于 TeX 跳过命令名称后的空格,因此插入所需的空格以将数字与后面的运算符分开。该函数\space的名称采用PostScript 格式。powexp

完整示例:

\documentclass[a4paper,10pt]{article}
\usepackage{multido}
\usepackage{pstricks}

\begin{document}
  \begin{pspicture}(-5,5)(-5,5)
    \multido{\Nx=4+-0.5}{12}{
      \psdots(! \Nx\space dup 2 exp 4 div 1 add)
    }
  \end{pspicture}
\end{document}

相关内容