\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}