我是 tikz/pgfplots 的新手...如果有人问我这个问题,我很抱歉...
我正在尝试使用 pgplots 绘制 tanh 函数,然后添加一组 N 点并绘制通过这些点的 (n-1) 次多项式......
以下是我目前所做的工作:
tanh 应该在 -1 和 1 之间变化,但是当我尝试绘制高次多项式时,y 轴会重新缩放...如果我尝试减小域值,我会收到来自 pdflatex 的错误消息...
\begin{tikzpicture}
\begin{axis}[
clip=true,
width = 10cm, height= 8cm,
xlabel = {$x$},
ylabel = {$f(x)$},
ymin=-2, ymax=2, xmin=-10, xmax=10]
\addplot[domain=-10:10,smooth] gnuplot[id=tanh]{tanh(x)};
\foreach \data in {-3,-2,-1,0,1, 2, 3}{
\addplot[only marks, black] coordinates {(\data, {tanh(\data)})};
}
\addplot[domain=-10:10, samples=25, smooth] gnuplot[id=poly]{(x^7+x^6+x^5+x^4+x^3+x^2+x)};
\end{axis}
\end{tikzpicture}%
任何想法都会有帮助的!
我试图重现这个数字:
tanh 拟合了 14 阶拉格朗日多项式......
以下是我更新后的代码:
\begin{tikzpicture}
\begin{axis}[
width = 10cm, height= 8cm,
xlabel = {$x$},
ylabel = {$f(x)$},
]
\addplot[smooth] gnuplot[id=tanh]{tanh(x)};
\addplot[only marks, samples at={-10,-8.57,...,10}]{tanh(x)};
\addplot[samples=25, smooth, red, thick] gnuplot[id=poly]
{(0.000000000138483*x^13-0.000000039937808*x^11+0.000004411606097*x^9-0.000237588565393*x^7+
0.006610739962583*x^5-0.094756895881911*x^3+0.791753916669373*x)};
\end{axis}
\end{tikzpicture}%
答案1
我不知道你想展示什么,但你可以为每个产生可比结果的函数选择特定的域。
\documentclass[border=2pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
clip=true,
width = 10cm, height= 8cm,
xlabel = {$x$},
ylabel = {$f(x)$},
% ymin=-2, ymax=2
]
\addplot[smooth] gnuplot[id=tanh]{tanh(x)};
\foreach \data in {-3,-2,-1,0,1, 2, 3}{
\addplot[only marks, black] coordinates {(\data, {tanh(\data)})};
}
\addplot[domain=-1.1:0.5,samples=25, smooth] gnuplot[id=poly]{(x^7+x^6+x^5+x^4+x^3+x^2+x)};
\end{axis}
\end{tikzpicture}
\end{document}
答案2
这只用到了泰勒展开式中的一些项tanh(x)
。
(它是蓝线)
\documentclass[border=2pt]{standalone}
\usepackage{pgfplots}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
clip=true,
width = 10cm, height= 8cm,
xlabel = {$x$},
ylabel = {$f(x)$},
ymin=-2, ymax=2, xmin=-10, xmax=10]
\addplot[domain=-10:10,smooth] gnuplot[id=tanh]{tanh(x)};
\foreach \data in {-3,-2,-1,0,1, 2, 3}{
\addplot[only marks, black] coordinates {(\data, {tanh(\data)})};
}
\addplot[domain=-1:1, samples=501, smooth] gnuplot[id=poly]{(x^7+x^6+x^5+x^4+x^3+x^2+x)}; % Nope!
\addplot[blue,thick,domain=-1:1, samples=101, smooth]{x - (1.0/3) * x^3+2.0/15*x^5-17/315*x^7-62.0/2835*x^9};
\end{axis}
\end{tikzpicture}%
\end{document}