pgfplots/gnuplot:如何找到通过某些点的曲线拟合函数并绘制它?

pgfplots/gnuplot:如何找到通过某些点的曲线拟合函数并绘制它?

考虑到这个代码,我想知道如何找到通过前四个点(即X=[0,3])的曲线拟合函数并绘制该函数(例如下面所需输出中的红色虚线)。

\RequirePackage{luatex85}
\documentclass{standalone}
\usepackage{pgfplots, pgfplotstable}
\pgfplotstableread{%
X Y
0 0
1 1
2 4
3 9
4 12
5 15
}\datatable

\begin{document}
    \begin{tikzpicture}
    \begin{axis}[xmin=0,xmax=5,ymin=0,ymax=20]
    \addplot [only marks, mark = *] table {\datatable};
    \end{axis}
    \end{tikzpicture}
\end{document}

期望输出

在此处输入图片描述

答案1

您可以\addplot gnuplot使用 gnuplot 后端进行曲线拟合,它允许您使用不同的域来拟合和绘制函数。它还允许您拟合非线性函数,例如本例中的二次函数:

\documentclass{standalone}
\usepackage{pgfplots, pgfplotstable}
\usepackage{filecontents}
\begin{filecontents}{data.dat}
X Y
0 0
1 1
2 4
3 9
4 12
5 15
\end{filecontents}

\begin{document}
    \begin{tikzpicture}
    \begin{axis}[xmin=0,xmax=5,ymin=0,ymax=20]
    \addplot [only marks, mark = *] table {data.dat};
    \addplot [no markers, red] gnuplot [raw gnuplot] { % "raw gnuplot" allows us to use arbitrary gnuplot commands
            f(x) = a*x^2 + b;  % Define the function to fit
            a=1; b=1;          % Set reasonable starting values here
            % Select the x-range, the file, the columns (indexing starts at 1) and the variables for fitting
            fit [0:3] f(x) 'data.dat' u 1:2 via a,b; 
            plot [x=0:5] f(x); % Specify the range to plot
    };
    \end{axis}
    \end{tikzpicture}
\end{document}

相关内容