具有自定义网格的分段线性图

具有自定义网格的分段线性图

我尝试使用 tikz 在网格 \xn={x1,x2,...,xN} 上绘制函数 w 的分段线性插值。我尝试使用 foreach 循环并将网格存储为向量来执行此操作,但似乎不起作用。有人可以帮忙吗?

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows, calc}
\begin{document}
\begin{tikzpicture}[scale=1.8] 
\pgfkeys{ /pgf/declare function={
   w(\x)=-.5+\x*\x*\x-\x+\x*\x;} 
}
\def \xn {-1.8,-1,-.5,.1,.9,1}; %% grid
\foreach \i in {1,2,...,5}{
   \draw({\xn(\i)},{w(\xn(\i))})--({\xn({\i+1})},{w(\xn({\i+1}))});
}
\end{tikzpicture}
\end{document}

输出看起来应该是这样的(没有轴)。

在此处输入图片描述

答案1

一种方法是直接访问\xn数组而不是对其进行索引:

在此处输入图片描述

笔记:

  • 我建议在函数计算中习惯使用(\x)而不是,\x因为它有时会产生影响。

代码:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows, calc}
\begin{document}
\begin{tikzpicture}[scale=1.8] 
\pgfkeys{ /pgf/declare function={
   w(\x)=-.5+(\x)*(\x)*(\x)-(\x)+(\x)*(\x);} 
}
\def \xn {-1.8,-1,-.5,.1,.9,1}; %% grid
\draw [ultra thick, blue] (-1.8,{w(-1.8)})
    \foreach \i in \xn {
       --(\i,{w(\i)})
    };
\end{tikzpicture}
\end{document}

答案2

pgfplots可以帮助。

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=middle,
          ytick=\empty,xtick=\empty,
          ylabel=$I(w)x$,xlabel=$x$]
\addplot[samples at={-1.8,-1,-.5,.1,.9,1}] {.5+x^3-x+x^2};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容