有没有办法将“负”数与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
负数的幂似乎是个问题。使用abs
around\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 格式。pow
exp
完整示例:
\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}