LINUX.ORG.RU

аппроксимация в LaTeX+gnuplot

 ,


0

1

Всем привет. Возникала потребность построить график который должен аппроксимироваться функцией f(x)=\sin(ax)(ax)

\documentclass{report}
\usepackage{siunitx}
\usepackage{pgfplots}
\usepackage{filecontents}

\begin{filecontents*}{data.dat}
0.02        -286806.36
0.02            -211384.38
0.05            -128364.83
1                0
0.06            120815.48
0.02            203839.23
0.02            286806.36
\end{filecontents*}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[
   /pgf/number format/set thousands separator = {},
    xlabel = Mass $\Omega$,
    ylabel = $\sigma*\mathcal{A}(\si{\pico\barn})$,
    ]
    \addplot [only marks, black] table[y index=0,x index=1,header=false] {data.dat};
    \addplot [no markers, blue] gnuplot [raw gnuplot] { % "raw gnuplot" allows us to use arbitrary gnuplot commands
            f(x) =(sin(a*x))/(x*a); % Define the function to fit
             % Set reasonable starting values here
           fit f(x) 'data.dat' u 0:1 via a; % Select the file, the columns (indexing starts at 1) and the variables
            plot f(x); % Specify the range to plot
   };
    \legend{$\sigma_{\text{MC}}$}
  \end{axis}
\end{tikzpicture}
\end{document}
После компиляции возникает ошибка «document.pgf-plot.gnuplot», line 2: unknown type in real() Я думаю, что проблема связана с замечательным пределом. Наверное, gnuplot не умеет аппроксимировать такие функции. Что делать?

Посчитать через программу точки, засунуть их в файл, потом через pgfplot/tikz построить график, указав файл. Когда-то именно так и делал.

kachsheev ★★★ ()

проблема связана с замечательным пределом

Что интересно, отдельно график sin(x)/x Гнуплот строит правильно.

DarthVadimius ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.