2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 аппроксимация в LaTeX+gnuplot
Сообщение17.05.2017, 20:23 
Всем привет. Возникала потребность построить график который должен аппроксимироваться функцией
$$f(x)=\frac{\sin{ax}}{ax}$$
Пример кода
код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
\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 не умеет аппроксимировать такие функции. Что делать?

 
 
 
 Re: аппроксимация в LaTeX+gnuplot
Сообщение19.05.2017, 17:06 
Во-первых,
guitar15 в сообщении #1217013 писал(а):
begin{tikzpicture}

А у вас в преамбуле и не пахнет этим пакетом или вы читали, что так можно? А во-вторых, вы компилировали с ключом или нет? И с терминала или нет?

 
 
 
 Re: аппроксимация в LaTeX+gnuplot
Сообщение19.05.2017, 21:22 
Аватара пользователя
Sinoid в сообщении #1217335 писал(а):
А у вас в преамбуле и не пахнет этим пакетом

pgfplots.sty содержит \RequirePackage{tikz}
т.е. "этот" пакет загружается автоматически

 
 
 
 Re: аппроксимация в LaTeX+gnuplot
Сообщение19.05.2017, 21:50 
Все получилось. Нужно было немного исправить код
код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
\documentclass{report}
\usepackage{siunitx}
\usepackage{pgfplots}
\usepackage{filecontents}
\begin{filecontents}{data.csv}
56799.03792           0.003571429
88354.05899           0.003571429
-7239.093069      1
-50673.65148      0.02
-79630.02376      0.001111111
43434.55841           0.025555556
72390.93069           0.003333333
42436.06282           0.028
76384.91307           0.004
110333.7633           0.001
-50923.27538      0.019
-84872.12563      0.001
51276.90924           0.029090909
82043.05478           0.004545455
112809.2003               0.000909091
-41021.52739      0.020909091
-82043.05478      0.002727273
38862.49963           0.032307692
77724.99926           0.006923077
116587.4989           0.001538462
129541.6654           0.000384615
-38862.49963      0.022307692
-77724.99926      0.001538462
-129541.6654      0.00038461
35161.30919           0.03
70322.61838           0.006666667
105483.9276           0.001333333
123064.5822           0.000666667
%-52741.96379     0.064666667
17580.6546            0.003333333
-17580.6546           0.000333333
27347.68493           0.0375
54695.36985           0.0075
109390.7397           0.0015
136738.4246           0.0005
-54695.36985      0.022
-82043.05478      0.003
273476.8493           0.001
\end{filecontents}

\begin{document}
        \begin{tikzpicture}
        \pgfplotsset{
                width=14cm,
                height = 15cm,
                compat=newest,
                legend style={font=\footnotesize}}
        \begin{axis}[
        /pgf/number format/set thousands separator = {},
        xlabel = U/b,
        ylabel = I/I0,
        ]
        \addplot [only marks, black] table[x index=0,y index=1,header=false] {data.csv};
        \addplot [no markers, red] gnuplot [raw gnuplot] { % "raw gnuplot" allows us to use arbitrary gnuplot commands
                f(x) = (sin(a*x)/(a*x))**2; % Define the function to fit
                a=0.0001; % Set reasonable starting values here
                fit f(x) 'data.csv' u 1:2 via a; % Select the file, the columns (indexing starts at 1) and the variables
                plot [x=-100000:100000] f(x) % Specify the range to plot
        };
        %\legend{$\sigma_{\text{MC}}$}
        \end{axis}
        \end{tikzpicture}
\end{document}
 

 
 
 
 Re: аппроксимация в LaTeX+gnuplot
Сообщение19.05.2017, 22:33 
guitar15 в сообщении #1217403 писал(а):
Все получилось. Нужно было немного исправить код

у меня выдает ошибку
Используется синтаксис LaTeX
Package pgfplots Error: Sorry, the gnuplot-result file 'gnuplot+latex.pgf-plo
t.table' could not be found. Maybe you need to enable the shell-escape feature?
 For pdflatex, this is '>> pdflatex -shell-escape'. You can also invoke '>> gnu
plot <file>.gnuplot' manually on the respective gnuplot file..
 

конечно, ее пропускаешь и все получается, но все же. Оно, конечно, вот прям сейчас мне ни к чему, 3 минуты ушло на пробы. Просто на будущее хотелось бы уметь.

 
 
 
 Re: аппроксимация в LaTeX+gnuplot
Сообщение20.05.2017, 00:30 
Sinoid в сообщении #1217416 писал(а):
Просто на будущее хотелось бы уметь.

Уметь что? Редактор настроить?
Вот так TexStudioИзображение
Или, может, с командной строкой разобраться?
Или английский подучить (или translate.google.ru)?
В ошибке всё написано.

 
 
 
 Re: аппроксимация в LaTeX+gnuplot
Сообщение20.05.2017, 21:32 
Lenchik в сообщении #1217449 писал(а):
Вот так TexStudioИзображение

Или, может, с командной строкой разобраться?


Ошибка в texworks при компиляции pdflatex'ом:
Используется синтаксис LaTeX
Package pgfplots Error: Sorry, the gnuplot-result file '1.pgf-plot.table' cou
ld not be found. Maybe you need to enable the shell-escape feature? For pdflate
x, this is '>> pdflatex -shell-escape'. You can also invoke '>> gnuplot <file>.
gnuplot' manually on the respective gnuplot file..

Вот примерный перевод:
Цитата:
Пакет pgfplots ошибка: Извините, gnuplot результирующий файл ' 1.pgf-plot.table' cou ld не найден. Возможно вам нужно включить функцию оболочки бежать? Pdflate x, это является ' >> помощью pdflatex-оболочка-побег '. Вы можете также вызвать ' >> gnuplot <file>. gnuplot' вручную на соответствующих gnuplot файл...

из этого я делаю вывод, что не хватает ключа --shell-escape. Вот реакция на компиляцию в texworks с этой добавленной опцией:
Используется синтаксис LaTeX
! Package pgfplots Error: Sorry, the gnuplot-result file '1.pgf-plot.table' cou
ld not be found. Maybe you need to enable the shell-escape feature? For pdflate
x, this is '>> pdflatex -shell-escape'. You can also invoke '>> gnuplot <file>.
gnuplot' manually on the respective gnuplot file..

See the pgfplots package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                 
l.64          };
               
?

можно сказать, ничего не изменилось. А вот окончание вывода работы при компиляции, произведенной из командной строки, вызванной из папки с файлом:
код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
ABD: EveryShipout initializing macros
("C:\Program Files\MiKTeX 2.9\tex\context\base\supp-pdf.mkii"
[Loading MPS to PDF converter (version 2006.09.02).]
)

Package pgfplots Warning: running in backwards compatibility mode (unsuitable t
ick labels; missing features). Consider writing \pgfplotsset{compat=1.12} into
your preamble.
 on input line 46.

"gnuplot" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

! Package pgfplots Error: Sorry, the gnuplot-result file '1.pgf-plot.table' cou
ld not be found. Maybe you need to enable the shell-escape feature? For pdflate
x, this is '>> pdflatex -shell-escape'. You can also invoke '>> gnuplot <file>.
gnuplot' manually on the respective gnuplot file..

See the pgfplots package documentation for explanation.
Type  H <return>  for immediate help.
 ...

l.64          };

?
 

 
 
 
 Re: аппроксимация в LaTeX+gnuplot
Сообщение21.05.2017, 08:56 
:facepalm:
Код:
"gnuplot" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

С точки зрения командной строки gnuplot не может быть вызван, поскольку либо не установлен, либо не прописан в переменную среды PATH.

 
 
 
 Re: аппроксимация в LaTeX+gnuplot
Сообщение21.05.2017, 14:18 
Lenchik в сообщении #1217738 писал(а):
С точки зрения командной строки gnuplot не может быть вызван, поскольку либо не установлен, либо не прописан в переменную среды PATH.

Дык а я-то думал, что это все включено в пакет.

-- 21.05.2017, 15:27 --

gnuplot в PATH не добавлен, это правда, но почему тогда pdf выдает?

 
 
 
 Re: аппроксимация в LaTeX+gnuplot
Сообщение21.05.2017, 16:12 
Sinoid в сообщении #1217647 писал(а):
--shell-escape

Эта опция при добавлении к Pdflatex+Makeindex+Bibtex вызывают такую реакцию:
Используется синтаксис LaTeX
texify: --shell-escape: unknown option
 

(получается, что такие вещи называются опции, а не ключи или как?). Зато при добавлении этой опции к pdflatex все проходит без сучка и задоринки.

 
 
 [ Сообщений: 10 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group