使用 newcommand 和 gnuplot 绘制参数函数的总和

使用 newcommand 和 gnuplot 绘制参数函数的总和

我想将一堆参数图添加(或减去)在一起,如下所示:

\documentclass{report}
\usepackage{tikz}
\newcommand{\myPlota}[1]{
    (#1>0?(t<#1?0:1):(t<-#1?-1:0))
}
\newcommand{\myPlotb}[1]{
    (#1>0?(t<#1?1:2):(t<-#1?-2:-3))
}
\newcommand{\myGraph}[3]{
    \draw [domain=#1:#2] plot[parametric,] function{t,#3};
}
\begin{document}
    \begin{tikzpicture}
        \myGraph{-1}{4}{\myPlotb{2}-\myPlota{1}}
    \end{tikzpicture}
\end{document}

如果我使用以下任一方法,我都会得到正确的答案

\myGraph{-1}{4}{\myPlotb{2}-\myPlota{1}}

或者

\myGraph{-1}{4}{0-\myPlota{1}+\myPlotb{2}}

但是,如果我删除零,也就是说,我只需使用

\myGraph{-1}{4}{-\myPlota{1}+\myPlotb{2}}

然后负号被忽略gnuplot,我得到了错误的答案。有什么想法吗?

答案1

我认为这是 Gnuplot 中的一个错误。我期望0-(1?5:42)-(1?5:42)都计算为,-5但在 gnuplot 中却不是这样:

gnuplot 5.4 patchlevel 2

gnuplot> plot[-1:1] [-10:10] 0-(1?5:42) , -(1?5:42)

带有 5 和 -5 图的 Gnuplot 输出窗口

编辑:使用printgnuplot 中的函数更简单

gnuplot> print 0-(1?5:42)
-5
gnuplot> print -(1?5:42)
5
gnuplot> 

编辑:

我不知道使用 Gnuplot 进行这些非常简单的计算的原因,因此这里有一个 TikZ 解决方案:

\documentclass{report}
\usepackage{tikz}
\newcommand{\myPlota}[1]{
    (#1>0?(\t<#1?0:1):(\t<-#1?-1:0))
}
\newcommand{\myPlotb}[1]{
    (#1>0?(\t<#1?1:2):(\t<-#1?-2:-3))
}
\newcommand{\myGraph}[3]{
    \draw [domain=#1:#2] plot[variable=\t] (\t,{#3});
}
\begin{document}
\begin{tikzpicture}
\myGraph{-1}{4}{0-\myPlota{1}+\myPlotb{2}}
\begin{scope}[yshift=2 cm]
\myGraph{-1}{4}{-\myPlota{1}+\myPlotb{2}}
\end{scope}
\end{tikzpicture}
\end{document}

两条相同的线图,中间有倾角

相关内容