diff options
Diffstat (limited to 'report/lab13')
| -rw-r--r-- | report/lab13/images/test13.png | bin | 0 -> 450345 bytes | |||
| -rw-r--r-- | report/lab13/lab13.pdf | bin | 0 -> 501731 bytes | |||
| -rw-r--r-- | report/lab13/lab13.tex | 75 | ||||
| -rwxr-xr-x | report/lab13/maker.sh | 35 |
4 files changed, 110 insertions, 0 deletions
diff --git a/report/lab13/images/test13.png b/report/lab13/images/test13.png Binary files differnew file mode 100644 index 0000000..97c5351 --- /dev/null +++ b/report/lab13/images/test13.png diff --git a/report/lab13/lab13.pdf b/report/lab13/lab13.pdf Binary files differnew file mode 100644 index 0000000..db6cbfa --- /dev/null +++ b/report/lab13/lab13.pdf diff --git a/report/lab13/lab13.tex b/report/lab13/lab13.tex new file mode 100644 index 0000000..61101c7 --- /dev/null +++ b/report/lab13/lab13.tex @@ -0,0 +1,75 @@ +\documentclass[a4paper,oneside]{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T2A]{fontenc}
+\usepackage[english,russian]{babel}
+
+\usepackage{amsmath}
+\usepackage{mathtools}
+\usepackage{amsfonts}
+\usepackage{enumitem}
+\usepackage{amsthm}
+\usepackage{minted}
+\setminted{fontsize=\small, breaklines=true, style=emacs, linenos}
+\usepackage{graphicx}
+\graphicspath{ {./images/} }
+\usepackage{float}
+
+\newtheorem{theorem}{Теорема}[subsection]
+\newtheorem*{theorem*}{Теорема}
+
+% --- Определение --- %
+\theoremstyle{definition}
+\newtheorem{definition}{Определение}[subsection]
+\newtheorem*{definition*}{Определение}
+% ------------------- %
+
+\title{{Алгоритмы алгебры и теории чисел}\\{Лабораторная работа №13}}
+\author{Гущин Андрей, 431 группа, 1 подгруппа}
+\date{\the\year{} г.}
+
+\begin{document}
+
+\maketitle
+
+\section{Задача}
+
+Реализация алгоритма полиномиального деления (PDF).
+
+
+\section{Алгоритм}
+
+На вход алгоритма подаются многочлены $p_1(x) = \sum_0^m c_i x^i$ и $p_2(x) =
+\sum_0^n d_i x^i$ над полем $m \geq n \geq 0$ и $d_n \neq 0$. Этот алгоритм
+будет работать и над областью целостности $J$ при условии, что $d_n$ обратим в
+$J$.
+
+В результате получаем частное $q(x) = \sum_0^{m - n} q_i x^i$ и остаток $r(x) =
+\sum_0^{n - 1} r_i x^i$, обладающие свойством евклидовости.
+
+В общем виде алгоритм можно представить следующим образом:
+\begin{enumerate}
+ \item
+ Основной цикл: для $k$ от $m - n$ до $0$ выполнять $q_k = c_{n + k}
+ \cdot d_n^{-1}$, для $j$ от $n + k - 1$ до $k$ выполнять $c_j = c_j -
+ q_k \cdot d_{j - k}$.
+ \item
+ Выход: вернуть $q_i$, где $i = 0, 1, \dots, m - n$, и коэффициенты
+ полинома $q(x)$, вычисленного на шаге $1$, и $r_j$, где $i = 0, 1,
+ \dots, n - 1$, коэффициенты полинома $r(x)$, где $r_j = c_j$ (где $c_j$
+ также вычислены на шаге $1$).
+\end{enumerate}
+
+
+\section{Реализация}
+\inputminted{python}{../../lab13/lab13.py}
+
+
+\section{Тестирование}
+\begin{figure}[H]
+ \centering
+ \includegraphics[width=0.8\textwidth]{test13.png}
+\end{figure}
+
+
+\end{document}
diff --git a/report/lab13/maker.sh b/report/lab13/maker.sh new file mode 100755 index 0000000..e847acf --- /dev/null +++ b/report/lab13/maker.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +watch() { + [ -z "$1" ] && echo "Необходимо указать название основного документа" && help + set -o xtrace + latexmk -pdf -f -shell-escape -interaction=nonstopmode -pvc $1 +} + +doc() { + [ -z "$1" ] && echo "Необходимо указать название основного документа" && help + set -o xtrace + latexmk -pdf -f -shell-escape -interaction=nonstopmode $1 +} + +clean() { + set -o xtrace + rm -rf _minted-* + find . -name "*.aux" -exec rm {} \; + rm -f *.dvi *.fdb_latexmk *.fls *.log *.out *.toc +} + +help() { + echo "Использование:" + echo "./maker.sh watch <main-doc>.tex -> Запуск процесса, пересобирающего документ при изменениях" + echo "./maker.sh doc <main-doc>.tex -> Пересобрать документ" + echo "./maker.sh clean -> Удаление сгенерированных файлов" + exit 1 +} + +case "$1" in + watch) watch $2 ;; + doc) doc $2 ;; + clean) clean ;; + *) help ;; +esac |