我尝试使用 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}