dlinyj: (Default)
[personal profile] dlinyj
К своей статье Калькуляторы с обратной польской нотацией мне хотелось сделать красивую иллюстрацию с графиками аппроксимирующего полинома синуса. При этом мне было мало одного gnuplot, так как в подписи осей мне хотелось добавить живую формулу.



Попутно мне нужна была красивая таблица расчёта тригонометрических функций и их десятичные значения. Такую таблицу тоже пришлось делать самому.



Чтобы это реализовать мне пришлось разобраться с Latex. Много раз пытался освоить эту систему вёрстки, и постоянно не хватало мотивации. Как я понял, лучший способ что-то освоить - это иметь конкретную задачу и в рамках неё уже производить освоение.

В общем рассказываю о своём вливании в тему.

1. График синуса и аппроксимирующего полинома
Первое с чего я начал - это с графика синуса. Мне нужно было, чтобы в легендах была формула того, что отображается. И начал я с того что начал искать готовый пример. И нашел его тут. Смысл в том, что часть функционала брал на себя gnuplot, который генерировал tex-файл, который компилировался уже pdflatex



Там достаточно много символов в строке Makefile. Самое сложное было это установить корректно LATEX и заставить его работать. Это прям отдельный квест, я гуглил каждую ошибку и доустанавливал недостающие пакеты. Это единственная программа с которой у меня было столько проблем и танцев с бубном, чтобы просто заставить её работать. Сейчас уже не вспомню всех телодвижений, но даже повторить этот make у меня ушло часа два гуглежа. Сейчас попробовал на другой системе, и второй раз этот путь пройти не готов. Но приведу пример файла test.plt, который содержал график.

set grid
set yrange [-5:5]
set xrange [-3*pi:3*pi] 

plot sin(x) title "$\\sin(x)$", \
x * ( 1 + x**2 * (0.00761 * x**2 - 0.16605)) title "$sin(x) = x \\cdot (1+x^{2}\\cdot(0,00761\\cdot x^{2}-0,16605))$"


Но мне показалось, что как-то муторно иметь два файла, и фактически всё равно вызывается LATEX. Плюс, мне хотелось получить точки -π/2 и π/2, что показать место где полином расходится с синусом и показать подписи на графике функций. Поэтому я решил немного почитать матчасть "Набор и вёрстка в системе
LATEX
" и сделал следующий скрипт.

\documentclass[8pt,a4paper,dvipsnames]{article}
\usepackage[utf8]{inputenc}
\usepackage[left=2cm,right=2cm,top=1.5cm,bottom=1.5cm]{geometry}

\usepackage{graphicx,gnuplottex,amsmath}
\usepackage{xcolor}

\begin{document}
\begin{figure}[htp]
    \centering
    \begin{gnuplot}[scale=1.3, terminal=epslatex, terminaloptions=color dashed]
		set grid
		set yrange [-5:5]
		set xrange [-3*pi:3*pi] 

		set xtics ("-2$\\pi$" -2*pi, "-$\\pi$" -pi, "-$\\dfrac{\\pi}{2}$" -pi/2, 0, "$\\dfrac{\\pi}{2}$" pi/2,"$\\pi$" pi, "2$\\pi$" 2*pi)
		plot sin(x) title "$\\sin(x)$", \
		x * ( 1 + x**2 * (0.00761 * x**2 - 0.16605)) title "$sin(x) = x \\cdot (1+x^{2}\\cdot(0,00761\\cdot x^{2}-0,16605))$"
    \end{gnuplot}
\end{figure}
\end{document}


И всё успешно получилось.

2. Таблица
С таблицей синусов всё было проще и сложнее одновременно. Таблицу синусов я нашёл сразу готовой. Надо было только в начале и в конце добавить:


% Automatically added code
\documentclass{article}
\usepackage{amsmath}


...
\end{document}
% End of automatically added code


И получился такой вот чудесный результат.



Как можно видеть, что таблица готовая. Но сложности начались тогда, когда мне захотелось изменить размеры ячеек по высоте, ширине и выравнивание в ячейке. Чтение мануалов мне мало помогло, а погружаться в глубины латеха мне не хотелось. Поэтому решил, что и так сойдёт, и вышел у меня такой вот скрипт.

% Automatically added code
\documentclass{article}
\usepackage{amsmath}

\begin{document}
% End of automatically added code

\subsubsection*{Values of sine functions for common angles.} 
%\begin{tabular*}{\linewidth}[b]{*{6}{|c @{\extracolsep\fill}}|}
\begin{tabular*}{\linewidth}[b]{*{6}{|c @{\extracolsep\fill}}|}
\hline  Angle in Degrees   &0$^\circ$& 30$^\circ$ & 45$^\circ$ & 60$^\circ$ & 90$^\circ$\\ 
\hline  Angle in Radians &0$^c$ & $\dfrac{\pi}{6}$& $\dfrac{\pi}{4}$ & $\dfrac{\pi}{3}$ & $\dfrac{\pi}{2}$\\ 
\hline $\sin \theta$ & 0 & $\dfrac{1}{2}$ &$\dfrac{1}{\sqrt{2}}$ & $\dfrac{\sqrt{3}}{2}$& 1\\[15pt]
\hline $\sin \theta$, Calculated values & 0 & 0,5 & 0,7071.. & 0,8660.. & 1\\ 
\hline
\end{tabular*}

% Automatically added code
\end{document}
% End of automatically added code


В общем, вёрстка LATEX у меня вызвала противоречивые чувства. После подхода linux, что всё скриптовое - это намного более удобного того же MS Word. Но, куча проблем с совместимостями, непонимание что же происходит, отсутствие мгновенного просмотра результата сильно ограничивают применение инструмента. Но мне понравилось, что можно делать крутые научные статьи, крутую вёрстку, прям как в даташитных пдфках.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

January 2026

S M T W T F S
    123
456 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 23rd, 2026 01:32 am
Powered by Dreamwidth Studios