2014 dxdy logo

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

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





Начать новую тему Ответить на тему
 
 аппроксимация в LaTeX+gnuplot
Сообщение17.05.2017, 20:23 


17/03/17
176
Всем привет. Возникала потребность построить график который должен аппроксимироваться функцией
$$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 


03/06/12
1440
Во-первых,
guitar15 в сообщении #1217013 писал(а):
begin{tikzpicture}

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

 Профиль  
                  
 
 Re: аппроксимация в LaTeX+gnuplot
Сообщение19.05.2017, 21:22 
Заслуженный участник
Аватара пользователя


31/01/14
6870
Hogtown
Sinoid в сообщении #1217335 писал(а):
А у вас в преамбуле и не пахнет этим пакетом

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

 Профиль  
                  
 
 Re: аппроксимация в LaTeX+gnuplot
Сообщение19.05.2017, 21:50 


17/03/17
176
Все получилось. Нужно было немного исправить код
код: [ скачать ] [ спрятать ]
Используется синтаксис 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 


03/06/12
1440
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 


13/07/14
209
Sinoid в сообщении #1217416 писал(а):
Просто на будущее хотелось бы уметь.

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

 Профиль  
                  
 
 Re: аппроксимация в LaTeX+gnuplot
Сообщение20.05.2017, 21:32 


03/06/12
1440
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 


13/07/14
209
:facepalm:
Код:
"gnuplot" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

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

 Профиль  
                  
 
 Re: аппроксимация в LaTeX+gnuplot
Сообщение21.05.2017, 14:18 


03/06/12
1440
Lenchik в сообщении #1217738 писал(а):
С точки зрения командной строки gnuplot не может быть вызван, поскольку либо не установлен, либо не прописан в переменную среды PATH.

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

-- 21.05.2017, 15:27 --

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

 Профиль  
                  
 
 Re: аппроксимация в LaTeX+gnuplot
Сообщение21.05.2017, 16:12 


03/06/12
1440
Sinoid в сообщении #1217647 писал(а):
--shell-escape

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

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Модераторы: Toucan, maxal, Karan, PAV, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group