diff options
| author | Andrew Guschin <guschin.drew@gmail.com> | 2022-03-25 20:04:14 +0400 |
|---|---|---|
| committer | Andrew Guschin <guschin.drew@gmail.com> | 2022-03-25 20:04:14 +0400 |
| commit | e30b0473acca21a225cfcbdb661034661914f98f (patch) | |
| tree | 32037e60660af94067e6dea6d95b5f6a2e219fc0 | |
| parent | ca1405279038223bd2d006aa90c6c61181f1a102 (diff) | |
Что-то похожее на третью лабу
| -rw-r--r-- | lab3/lab3.py | 308 | ||||
| -rw-r--r-- | lab3/report/SCWorks.cls | 991 | ||||
| -rw-r--r-- | lab3/report/lab3.tex | 359 | ||||
| -rw-r--r-- | lab3/report/preamble.sty | 52 | ||||
| -rw-r--r-- | lab3/report/titlepage.tex | 54 |
5 files changed, 1764 insertions, 0 deletions
diff --git a/lab3/lab3.py b/lab3/lab3.py new file mode 100644 index 0000000..8921b7d --- /dev/null +++ b/lab3/lab3.py @@ -0,0 +1,308 @@ +import numpy as np + +##################### +# Бинарные операции # +##################### + +def check_associativity(cayley: np.array, elements: list) -> bool: + n = cayley.shape[0] + for i in range(n): + for j in range(n): + for k in range(n): + q = elements.index(cayley[i, k]) + p = elements.index(cayley[j, i]) + if cayley[p, k] != cayley[j, q]: + return False + return True + + +def check_commutativity(cayley: np.array, elements: list) -> bool: + n = cayley.shape[0] + for i in range(n): + for j in range(n): + if cayley[i, j] != cayley[j, i]: + return False + return True + + +def check_idempotence(cayley: np.array, elements: list) -> bool: + n = cayley.shape[0] + for i in range(n): + a = elements[i] + if cayley[i, i] != a: + return False + return True + + +def check_reversibility(cayley: np.array, elements: list) -> bool: + n = cayley.shape[0] + for i in range(n): + for j in range(n): + if cayley[i, j] != 1 or cayley[j, i] != 1: + return False + return True + + +# cayley1 - *, cayley2 - + +def check_distributivity(cayley1: np.array, cayley2: np.array, elements: list) -> bool: + n = cayley1.shape[0] + for i in range(n): + for j in range(n): + for k in range(n): + t = elements.index(cayley2[j, k]) + p = elements.index(cayley1[i, j]) + q = elements.index(cayley1[i, k]) + r = elements.index(cayley1[j, i]) + s = elements.index(cayley1[k, i]) + if cayley1[i, t] != cayley2[p, q] or \ + cayley1[t, i] != cayley2[r, s]: + return False + return True + + +def check_operation(): + print("Введите элементы множества, на котором определена операция:") + elements = input().strip().split() + n = len(elements) + print("Введите таблицу Кэли:") + cayley = [] + for i in range(n): + line = input().strip().split() + cayley.append(line) + cayley = np.array(cayley, dtype=str) + + status = [] + + if check_associativity(cayley, elements): + status.append("ассоциативность") + if check_commutativity(cayley, elements): + status.append("коммутативность") + if check_idempotence(cayley, elements): + status.append("идемпотентность") + if check_reversibility(cayley, elements): + status.append("обратимость") + + flag = input("Проверить на дистрибутивность? (да/НЕТ) ") + if flag.lower() == "да": + print("Введите таблицу Кэли второй операции:") + cayley2 = [] + for i in range(n): + line = input().strip().split() + cayley2.append(line) + cayley2 = np.array(cayley2, dtype=str) + if check_distributivity(cayley, cayley2, elements): + status.append("дистрибутивность") + + print("Заданная бинарная операция обладает следующими свойствами:") + for i in status: + print(i) + + +###################### +# Бинарные отношения # +###################### + +def make_union(a: np.array, b: np.array): + return a + b + + +def make_intersection(a: np.array, b: np.array): + return np.multiply(a, b) + + +def make_complement(m: np.array): + return 1 - m + + +def make_reverse(m: np.array): + return np.transpose(m) + + +def make_composition(a: np.array, b: np.array): + return np.matmul(a, b) + + +def check_relations(): + def read_array(n: int) -> np.array: + a = [] + for _ in range(n): + line = list(map(int, input().strip().split())) + a.append(line) + return np.array(a, dtype=bool) + + n = input("Введите размерность проверяемых отношений: ") + + print("Введите бинарное отношение A") + a = read_array(n) + print("Введите бинарное отношение B") + b = read_array(n) + + print("Объединение бинарных отношений:") + print(np.int(a + b)) + + print("Пересечение бинарных отношений:") + print(np.int(np.multiply(a, b))) + + print("Дополнение бинарного отношения A:") + print(np.int(1 - a)) + + print("Дополнение бинарного отношения B:") + print(np.int(1 - b)) + + print("Бинарное отношение, обратное A:") + print(np.int(np.transpose(a))) + + print("Бинарное отношение, обратное B:") + print(np.int(np.transpose(b))) + + print("Композиция отношений:") + print(np.int(np.matmul(a, b))) + +######################## +# Операции с матрицами # +######################## + +def mat_add(a: np.array, b: np.array): + return a + b + + +def mat_scale(m: np.array, alpha: float): + return alpha * m + + +def mat_transpose(m: np.array): + return np.transpose(m) + + +def mat_multiply(a: np.array, b: np.array): + return np.matmul(a, b) + + +def check_matrices(): + def read_matrix(n: int, m: int) -> np.array: + a = [] + for _ in range(n): + line = list(map(int, input().strip().split())) + a.append(line) + return np.array(a, dtype=bool) + + print("1 - Сложение матриц;") + print("2 - Умножение матрицы на скаляр;") + print("3 - Транспонирование матриц;") + print("4 - Умножение матриц;") + test = int(input("> ")) + if test == 1: + n, m = map(int, input("Введите размерность матриц: ").split()) + print("Введите матрицу A:") + a = read_matrix(n, m) + + print("Введите матрицу B:") + b = read_matrix(n, m) + + print("Сумма матриц:") + print(mat_add(a, b)) + elif test == 2: + n, m = map(int, input("Введите размерность матриц: ").split()) + print("Введите матрицу A:") + a = read_matrix(n, m) + + alpha = float(input("Введите скаляр: ")) + + print("Результат:") + print(mat_scale(a, alpha)) + elif test == 3: + n, m = map(int, input("Введите размерность матриц: ").split()) + print("Введите матрицу A:") + a = read_matrix(n, m) + + print("Результат:") + print(mat_transpose(a)) + elif test == 4: + n, m = map(int, input("Введите размерность матриц: ").split()) + print("Введите матрицу A:") + a = read_matrix(n, m) + + print("Введите матрицу B:") + b = read_matrix(n, m) + + print("Произведение матриц:") + print(mat_multiply(a, b)) + +############ +# Задача 1 # +############ + +def task1(): + print("Задача 1:") + elements = "a b c d".split() + cayley = np.array([ + list("abab"), + list("abab"), + list("abcd"), + list("abcd"), + ]) + if check_associativity(cayley, elements): + print("Данная операция является ассоциативной") + else: + print("Данная операция не является ассоциативной") + +############ +# Задача 2 # +############ + +def task2(l: float): + print("Задача 2:") + a = np.array([ + [1, -2], + [-3, l] + ]) + e = np.identity(2) + b = mat_add( + mat_add( mat_multiply(a, a), + mat_scale(10 - l / 2, a) ), + mat_scale(l / 2, e) + ) + print(b) + +############ +# Задача 3 # +############ + +def task3(l: float): + print("Задача 3:") + a = np.array([ + [ -1, l, 3], + [l / 3, 2, 8 - l / 3] + ]) + b = np.array([ + [-l, 2], + [ 1, 10 - l / 2], + [-3, l] + ]) + print(mat_multiply(a, b)) + +############ + +def main(): + flag = input("Проверить свойства бинарных операций? (да/НЕТ) ") + if flag.lower() == "да": + check_operation() + + flag = input("Проверить операции с бинарными отношениями? (да/НЕТ) ") + if flag.lower() == "да": + check_relations() + + flag = input("Проверить операции с матрицами? (да/НЕТ) ") + if flag.lower() == "да": + check_matrices() + + flag = input("Выполнить задания? (да/НЕТ) ") + if flag.lower() == "да": + l = 6 + task1() + task2(l) + task3(l) + + +if __name__ == "__main__": + main()
\ No newline at end of file diff --git a/lab3/report/SCWorks.cls b/lab3/report/SCWorks.cls new file mode 100644 index 0000000..f905804 --- /dev/null +++ b/lab3/report/SCWorks.cls @@ -0,0 +1,991 @@ +\LoadClass[14pt]{extarticle} +%\RequirePackage[14pt]{extsizes} +\RequirePackage[ + a4paper, mag=1000, + left=2.5cm, right=1.5cm, top=2cm, bottom=2cm, bindingoffset=0cm, + headheight=0cm, footskip=1cm, headsep=0cm + ]{geometry} +\RequirePackage{setspace} +\RequirePackage{calc} +\RequirePackage{titlesec} +\RequirePackage{titletoc} +\RequirePackage{caption} +\RequirePackage{graphicx} +\RequirePackage[inline]{enumitem} + + + + +% --------------------------------------------------------------------------% +% Input data +% --------------------------------------------------------------------------% +\def\chair#1{\gdef\@chair{#1}}\chair{\hbox to 3cm{\hrulefill}} +\def\worktype#1{\gdef\@worktype{#1}} +\def\worktitle{\@title} +\def\subject#1{\gdef\@subject{#1}} +\def\typework#1{\gdef\@typework{#1}} +\def\disserform#1{\gdef\@disserform{#1}} +\def\disserformP#1{\gdef\@disserformP{#1}} +\def\disserformR#1{\gdef\@disserformR{#1}} +\def\disserformV#1{\gdef\@disserformV{#1}} +\def\course#1{\gdef\@course{#1}}\course{2} +\def\group#1{\gdef\@group{#1}}\group{211} +\def\department#1{\gdef\@department{#1}}\department{\cyr\cyrf\cyra\cyrk% +\cyru\cyrl\cyrsftsn\cyrt\cyre\cyrt\cyra\ \CYRK\CYRN\cyri\CYRI\CYRT} +\def\otdelenie#1{\gdef\@otdelenie{#1}} +\def\studentName{\@author} +%\def\studentName#1{\gdef\@studentName{#1}} +\def\satitle#1{\gdef\@satitle{#1}}\satitle{\hbox to 3cm{\hrulefill}} +\def\saname#1{\gdef\@saname{#1}}\saname{\hbox to 3cm{\hrulefill}} +\def\critictitle#1{\gdef\@critictitle{#1}}\critictitle{\hbox to 3cm{\hrulefill}} +\def\criticname#1{\gdef\@criticname{#1}}\criticname{\hbox to 3cm{\hrulefill}} +\def\secrname#1{\gdef\@secrname{#1}}\secrname{\hbox to 3cm{\hrulefill}} +\def\chtitle#1{\gdef\@chtitle{#1}}\chtitle{\hbox to 3cm{\hrulefill}} +\def\chname#1{\gdef\@chname{#1}}\chname{\hbox to 3cm{\hrulefill}} +%\def\year#1{\gdef\@year{#1}} +\def\spectype#1{\gdef\@spectype{#1}} +\def\spectyperod#1{\gdef\@spectyperod{#1}} +\def\workform#1{\gdef\@workform{#1}} +\def\practtype#1{\gdef\@practtype{#1}}\practtype{\cyr\cyru\cyrch\cyre\cyrb% +\cyrn\cyra\cyrya} +\def\term#1{\gdef\@term{#1}}\term{2} +\def\duration#1{\gdef\@duration{#1}}\duration{2} +\def\protnum#1{\gdef\@protnum{#1}}\protnum{\hbox to 1cm{\hrulefill}} +\def\protdate#1{\gdef\@protdate{#1}}\protdate{\hbox to 3cm{\hrulefill}} +\def\practStart#1{\gdef\@practStart{#1}}\practStart{\hbox to 3cm{\hrulefill}} +\def\practFinish#1{\gdef\@practFinish{#1}}\practFinish{\hbox to 3cm{\hrulefill}} +\def\reviewtype#1{\gdef\@reviewtype{#1}}\reviewtype{\CYRO\CYRT% +\CYRZ\CYRERY\CYRV} + +\def\patitle#1{\gdef\@patitle{#1}}\patitle{\@satitle} +\def\paname#1{\gdef\@paname{#1}}\paname{\@saname} + +\def\napravlenie#1{\gdef\@napravlenie{#1}}\napravlenie{\hbox to 3cm{\hrulefill}} +\def\Napravlenie{\@napravlenie} + + +\def\studenttitle#1{\gdef\@studenttitle{#1}}\studenttitle{\cyr\cyrs\cyrt% +\cyru\cyrd\cyre\cyrn\cyrt\cyra} +\def\studentdone#1{\gdef\@studentdone{#1}}\studentdone{\cyrp\cyrr\cyro% +\cyrsh\cyre\cyrd\cyrsh\cyre\cyrg\cyro} +\def\studentfemale{\studenttitle{\cyrs\cyrt\cyru\cyrd\cyre\cyrn\cyrt% +\cyrk\cyri}\studentdone{\cyrp\cyrr\cyro\cyrsh\cyre\cyrd\cyrsh% +\cyre\cyrishrt}} + +%\newcommand{\MakeTitle}{} + +\def\workname#1{\gdef\@workname{#1}} + +%\hbox to 3cm{\hrulefill} + +% --------------------------------------------------------------------------% + + +\newcommand{\signature}[2]{ +\hbox to 7cm{#1\hfill} \hbox to 3cm{\hrulefill} \hbox to 6cm{\hfill #2}} + +\newcommand{\inlinesignature}[2]{% +#1\qquad \hbox to 3cm{\hrulefill}\quad #2} + + +\newcommand{\signatureline}{} + +% --------------------------------------------------------------------------% +\newcommand{\scaleUnivName}{0.97} + +\DeclareOption{times}{% + \renewcommand{\rmdefault}{ftm} + \renewcommand{\scaleUnivName}{1.0} +} + +\DeclareOption{spec}{% + \spectype{\cyr\cyrs\cyrp\cyre\cyrc\cyri\cyra\cyrl\cyrsftsn\cyrn\cyro% + \cyrs\cyrt\cyri} + \spectyperod{\cyrs\cyrp\cyre\cyrc\cyri\cyra\cyrl\cyrsftsn\cyrn\cyro% + \cyrs\cyrt\cyri} + \workform{\cyr\CYRS\CYRP\CYRE\CYRC\CYRI\CYRA\CYRL\CYRI\CYRS\CYRT\CYRA} + \disserform{\CYRD\CYRI\CYRP\CYRL\CYRO\CYRM\CYRN\CYRA\CYRYA\ \CYRR\CYRA% + \CYRB\CYRO\CYRT\CYRA} + \disserformP{\CYRD\CYRI\CYRP\CYRL\CYRO\CYRM\CYRN\CYRO\CYRISHRT\ \CYRR% + \CYRA\CYRB\CYRO\CYRT\CYRE} + \disserformR{\CYRD\CYRI\CYRP\CYRL\CYRO\CYRM\CYRN\CYRO\CYRISHRT\ \CYRR% + \CYRA\CYRB\CYRO\CYRT\CYRERY} + \disserformV{\CYRD\CYRI\CYRP\CYRL\CYRO\CYRM\CYRN\CYRU\CYRYU\ \CYRR\CYRA% + \CYRB\CYRO\CYRT\CYRU} +} + +\DeclareOption{bachelor}{% + \spectype{\cyr\cyrn\cyra\cyrp\cyrr\cyra\cyrv\cyrl\cyre\cyrn\cyri\cyrya} + \spectyperod{\cyr\cyrn\cyra\cyrp\cyrr\cyra\cyrv\cyrl\cyre\cyrn\cyri \cyryu} + \workform{\cyr\CYRB\CYRA\CYRK\CYRA\CYRL\CYRA\CYRV\CYRR\CYRA} + \disserform{\CYRB\CYRA\CYRK\CYRA\CYRL\CYRA\CYRV\CYRR\CYRS\CYRK\CYRA% + \CYRYA\ \CYRR\CYRA\CYRB\CYRO\CYRT\CYRA} + \disserformP{\CYRB\CYRA\CYRK\CYRA\CYRL\CYRA\CYRV\CYRR\CYRS\CYRK\CYRO% + \CYRISHRT\ \CYRR\CYRA\CYRB\CYRO\CYRT\CYRE} + \disserformR{\CYRB\CYRA\CYRK\CYRA\CYRL\CYRA\CYRV\CYRR\CYRS\CYRK\CYRO% + \CYRISHRT\ \CYRR\CYRA\CYRB\CYRO\CYRT\CYRERY} + \disserformV{\CYRB\CYRA\CYRK\CYRA\CYRL\CYRA\CYRV\CYRR\CYRS\CYRK\CYRU% + \CYRYU\ \CYRR\CYRA\CYRB\CYRO\CYRT\CYRU} +} + +\DeclareOption{master}{% + \spectype{\cyr\cyrn\cyra\cyrp\cyrr\cyra\cyrv\cyrl\cyre\cyrn\cyri\cyrya} + \spectyperod{\cyr\cyrn\cyra\cyrp\cyrr\cyra\cyrv\cyrl\cyre\cyrn\cyri \cyryu} + \workform{\cyr\CYRM\CYRA\CYRG\CYRI\CYRS\CYRT\CYRR\CYRA} + \disserform{\CYRM\CYRA\CYRG\CYRI\CYRS\CYRT\CYRE\CYRR\CYRS\CYRK\CYRA% + \CYRYA\ \CYRR\CYRA\CYRB\CYRO\CYRT\CYRA} + \disserformP{\CYRM\CYRA\CYRG\CYRI\CYRS\CYRT\CYRE\CYRR\CYRS\CYRK\CYRO% + \CYRISHRT\ \CYRR\CYRA\CYRB\CYRO\CYRT\CYRE} + \disserformR{\CYRM\CYRA\CYRG\CYRI\CYRS\CYRT\CYRE\CYRR\CYRS\CYRK\CYRO% + \CYRISHRT\ \CYRR\CYRA\CYRB\CYRO\CYRT\CYRERY} + \disserformV{\CYRM\CYRA\CYRG\CYRI\CYRS\CYRT\CYRE\CYRR\CYRS\CYRK\CYRU% + \CYRYU\ \CYRR\CYRA\CYRB\CYRO\CYRT\CYRU} +} + +\DeclareOption{coursework}{% + \worktype{\cyr\CYRK\cyru\cyrr\cyrs\cyro\cyrv\cyra\cyrya\ \cyrr\cyra\cyrb% + \cyro\cyrt\cyra} + \renewcommand{\maketitle}{\CDMakeTitle} + \workname{\MakeUppercase{\@worktype}} + \typework{\cyr\cyrn\cyra\cyrp\cyri\cyrs\cyra\cyrn\cyra} +} + +\DeclareOption{diploma}{% + \worktype{\cyr\CYRV\cyrery\cyrp\cyru\cyrs\cyrk\cyrn\cyra\cyrya\ \cyrk\cyrv% + \cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri\cyro\cyrn\cyrn\cyra% + \cyrya\ \cyrr\cyra\cyrb\cyro\cyrt\cyra} + \worktype{\ \cyrr\cyra\cyrb\cyro\cyrt\cyra} + \renewcommand{\maketitle}{\CDMakeTitle} + \workname{\MakeUppercase{\@disserform}} + \typework{\cyr\cyrn\cyra\cyrp\cyri\cyrs\cyra\cyrn\cyra} +} + +\DeclareOption{autoref}{% + \workname{\cyr\CYRA\CYRV\CYRT\CYRO\CYRR\CYRE\CYRF\CYRE\CYRR\CYRA\CYRT\ % + \MakeUppercase{\@disserformR}} + \worktype{\ \cyrr\cyra\cyrb\cyro\cyrt\cyra} + \renewcommand{\maketitle}{\CDMakeTitle} + %\workname{\MakeUppercase{\@disserform}} + \typework{\cyr\cyrn\cyra\cyrp\cyri\cyrs\cyra\cyrn\cyra} +} + +\DeclareOption{nir}{% + \workname{\cyr\CYRO\CYRT\CYRCH\CYRE\CYRT\ \CYRO\ \CYRN\CYRA\CYRU\CYRCH% + \CYRN\CYRO-\CYRI\CYRS\CYRS\CYRL\CYRE\CYRD\CYRO\CYRV\CYRA\CYRT\CYRE\CYRL% + \CYRSFTSN\CYRS\CYRK\CYRO\CYRISHRT\ \CYRR\CYRA\CYRB\CYRO\CYRT\CYRE} + \worktype{\ \cyrr\cyra\cyrb\cyro\cyrt\cyra} + \renewcommand{\maketitle}{\CDMakeTitle} + %\workname{\MakeUppercase{\@disserform}} + \typework{\cyr\cyrn\cyra\cyrp\cyri\cyrs\cyra\cyrn\cyra} +} + +\DeclareOption{pract}{% + \worktype{\cyr\CYRO\cyrt\cyrch\cyre\cyrt\ \cyro\ \cyrp\cyrr\cyra\cyrk\cyrt% + \cyri\cyrk\cyre} + \renewcommand{\maketitle}{\MakeTitlePr} + \typework{\cyr\cyrn\cyra\cyrp\cyri\cyrs\cyra\cyrn} +} + +\DeclareOption{review}{% + \reviewtype{\CYRO\CYRT\CYRZ\CYRERY\CYRV} + \worktype{\cyrn\cyra\cyru\cyrch\cyrn\cyro\cyrg\cyro\ \cyrr\cyru\cyrk% + \cyro\cyrv\cyro\cyrd\cyri\cyrt\cyre\cyrl\cyrya\ \cyro\ \cyrv\cyrery% + \cyrp\cyru\cyrs\cyrk\cyrn\cyro\cyrishrt\ \cyrk\cyrv\cyra\cyrl\cyri\cyrf% + \cyri\cyrk\cyra\cyrc\cyri\cyro\cyrn\cyrn\cyro\cyrishrt\ \cyrr\cyra\cyrb% + \cyro\cyrt\cyre} + \workname{\cyr\cyrn\cyra\cyru\cyrch\cyrn\cyro\cyrg\cyro\ \cyrr\cyru\cyrk% + \cyro\cyrv\cyro\cyrd\cyri\cyrt\cyre\cyrl\cyrya\ \cyro\ \MakeLowercase{\@disserformP}} + %\workname{\@worktype\ \MakeLowercase{\@workform}} + \renewcommand{\maketitle}{\MakeTitleReview} + \renewcommand{\signatureline}{% + \par\noindent% + \CYRN\cyra\cyru\cyrch\cyrn\cyrery\cyrishrt\ \cyrr\cyru\cyrk\cyro\cyrv% + \cyro\cyrd\cyri\cyrt\cyre\cyrl\cyrsftsn\\% + \signature{\@satitle}{\@saname}\\% + } +} + +\DeclareOption{assignment}{% + \reviewtype{\CYRZ\CYRA\CYRD\CYRA\CYRN\CYRI\CYRE} + \worktype{\cyrn\cyra\ \cyrv\cyrery\cyrp\cyru\cyrs\cyrk\cyrn\cyru% + \cyryu\ \cyrk\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri\cyro% + \cyrn\cyrn\cyru\cyryu\ \cyrr\cyra\cyrb\cyro\cyrt\cyru} + \workname{\cyr\cyrn\cyra\ \MakeLowercase{\@disserformV}} + %\workname{\@worktype\ \MakeLowercase{\@workform}} + \renewcommand{\maketitle}{\MakeTitleAssign} + \renewcommand{\signatureline}{% + + \vfill% + \noindent% + \textbf{\CYRS\cyrr\cyro\cyrk\ \cyrp\cyrr\cyre\cyrd\cyro\cyrs\cyrt\cyra% + \cyrv\cyrl\cyre\cyrn\cyri\cyrya\ \cyrr\cyra\cyrb\cyro\cyrt\cyrery:}\ \@practFinish + + \vspace{2em}\raggedright + \noindent \CYRR\cyra\cyrs\cyrs\cyrm\cyro\cyrt\cyrr\cyre\cyrn\cyro\ % + \cyrn\cyra\ \cyrz\cyra\cyrs\cyre\cyrd\cyra\cyrn\cyri\cyri\ \cyrk\cyra% + \cyrf\cyre\cyrd\cyrr\cyrery\ \@chair + + \vspace{1em} + \CYRP\cyrr\cyro\cyrt\cyro\cyrk\cyro\cyrl\ \textnumero\ \@protnum\ \cyro% + \cyrt\ \@protdate + + \vspace{1em} + \raggedright + \noindent + \inlinesignature{\CYRS\cyre\cyrk\cyrr\cyre\cyrt\cyra\cyrr\cyrsftsn}{\@secrname} + + \vspace{2em} + \noindent\raggedright + \CYRD\cyra\cyrt\cyra\ \cyrv\cyrery\cyrd\cyra\cyrch\cyri\ \cyrz\cyra% + \cyrd\cyra\cyrn\cyri\cyrya\ \@practStart + + \vspace{1em} + \noindent\raggedright + \inlinesignature{\CYRZ\cyra\cyrd\cyra\cyrn\cyri\cyre\ \cyrp\cyro\cyrl% + \cyru\cyrch\cyri\cyrl}{\hbox to 3cm{\hrulefill}} + + \vspace{1cm} + } +} + +\DeclareOption{critique}{% + \reviewtype{\CYRR\CYRE\CYRC\CYRE\CYRN\CYRZ\CYRI\CYRYA} + \worktype{\cyrn\cyra\ \cyrv\cyrery\cyrp\cyru\cyrs\cyrk\cyrn\cyru% + \cyryu\ \cyrk\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri\cyro% + \cyrn\cyrn\cyru\cyryu\ \cyrr\cyra\cyrb\cyro\cyrt\cyru} + \workname{\cyr\cyrn\cyra\ \MakeLowercase{\@disserformV}} + %\workname{\@worktype\ \MakeLowercase{\@workform}} + \renewcommand{\maketitle}{\MakeTitleReview} + \renewcommand{\signatureline}{% + \par\noindent% + \CYRR\cyre\cyrc\cyre\cyrn\cyrz\cyre\cyrn\cyrt\\% + \signature{\@critictitle}{\@criticname}\\% + } +} + + +\DeclareOption{referat}{% + \worktype{\cyr\CYRR\cyre\cyrf\cyre\cyrr\cyra\cyrt} + \workname{\MakeUppercase{\@worktype}} + \renewcommand{\maketitle}{\RefMakeTitle} + \typework{\cyr\cyrn\cyra\cyrp\cyri\cyrs\cyra\cyrn} +} + +\DeclareOption{labwork}{% + \worktype{\cyr\CYRL\cyra\cyrb\cyro\cyrr\cyra\cyrt\cyro\cyrr\cyrn\cyra\cyrya\ \cyrr\cyra\cyrb\cyro\cyrt\cyra} + \workname{\MakeUppercase{\@worktype}} + \renewcommand{\maketitle}{\RefMakeTitle} + \typework{\cyr\cyrn\cyra\cyrp\cyri\cyrs\cyra\cyrn} +} + +\DeclareOption{labwork2}{% + \worktype{\CYRO\cyrt\cyrch\cyryo\cyrt\ \cyrp\cyro\ \cyrd\cyri\cyrs\cyrc\cyri\cyrp\cyrl\cyri\cyrn\cyre} + \workname{\MakeUppercase{\@worktype}} + \renewcommand{\maketitle}{\LabTwoMakeTitle} + \typework{\cyr\cyrn\cyra\cyrp\cyri\cyrs\cyra\cyrn} +} + +\DeclareOption{och}{% + \otdelenie{\cyr\cyro\cyrch\cyrn\cyro\cyrishrt\ \cyrf\cyro\cyrr\cyrm% + \cyrery\ \cyro\cyrb\cyru\cyrch\cyre\cyrn\cyri\cyrya} +} + +\DeclareOption{zaoch}{% + \otdelenie{\cyr\cyrz\cyra\cyro\cyrch\cyrn\cyro\cyrishrt\ \cyrf\cyro\cyrr% + \cyrm\cyrery\ \cyro\cyrb\cyru\cyrch\cyre\cyrn\cyri\cyrya} +} + +\ExecuteOptions{coursework,och,bachelor} +\ProcessOptions + +% --------------------------------------------------------------------------% +\newcommand*{\hm}[1]{#1\nobreak\discretionary{}% +{\hbox{$\mathsurround=0pt #1$}}{}} +% --------------------------------------------------------------------------% + +% --------------------------------------------------------------------------% + +\onehalfspacing +\parindent=1.25cm +\pagestyle{headings} +\renewcommand{\@oddhead}{} +\renewcommand{\@oddfoot}{\hfil \thepage} + +% --------------------------------------------------------------------------% +% Table and figure numbering by sections +% --------------------------------------------------------------------------% +\newif\if@secNumbering\@secNumberingfalse +\newcommand{\secNumbering}{ + \renewcommand{\thefigure}{\arabic{section}.\arabic{figure}} + \renewcommand{\thetable}{\arabic{section}.\arabic{table}} + \renewcommand{\theequation}{\arabic{section}.\arabic{equation}} + \@addtoreset{figure}{section} + \@addtoreset{table}{section} + \@addtoreset{equation}{section} + \@secNumberingtrue +} +% --------------------------------------------------------------------------% + +% --------------------------------------------------------------------------% +% Table and figure captions +% --------------------------------------------------------------------------% +\def\CaptionName#1{\gdef\@captionname{#1}} +\newlength\tmp %10cm +\setlength{\tmp}{1ex} +\setlength{\belowcaptionskip}{1ex} +\setlength{\abovecaptionskip}{1ex} + +\captionsetup[figure]{name=\CYRR\cyri\cyrs\cyru\cyrn\cyro\cyrk, labelsep=endash, + justification=centering, font={small}, skip=\abovecaptionskip, position=below} +\captionsetup[table]{name=\CYRT\cyra\cyrb\cyrl\cyri\cyrc\cyra, labelsep=endash, format=plain, + justification=RaggedRight, singlelinecheck=false, font={small}, position=top} + +% --------------------------------------------------------------------------% +% Table of contents +% --------------------------------------------------------------------------% +\renewcommand{\tableofcontents}% +{\structformat\section*{\uppercase{\cyr\CYRS\CYRO\CYRD\CYRE\CYRR\CYRZH\CYRA% +\CYRN\CYRI\CYRE}}\secformat\@starttoc{toc} +\thispagestyle{empty}} + +\renewcommand{\@dotsep}{1.5} +\renewcommand{\@pnumwidth}{1.0em} + +\newcommand{\l@abcd}[2]{{\@dottedtocline{0}{0pt}{0pt}{#1}{#2}}} + +\renewcommand{\l@section}{\@dottedtocline{1}{0em}{1.5em}} +\renewcommand{\l@subsection}{\@dottedtocline{2}{1.5em}{2.3em}} +% --------------------------------------------------------------------------% + +% --------------------------------------------------------------------------% +% Sections, subsections +% --------------------------------------------------------------------------% +% Numbering +\renewcommand{\thesection}{\arabic{section}} +\renewcommand{\thesubsection}{\arabic{section}.\arabic{subsection}} +\renewcommand{\thesubsubsection}{\arabic{section}.\arabic{subsection}.\arabic{subsubsection}} + +\newcommand{\sectionbreak}{\clearpage} + +% Contents, intro, conclusion +\newcommand{\structformat} +{ + \titlespacing{\section} + {0cm}{3ex plus 1ex minus .2ex}{1.4ex plus.2ex} + \titleformat{\section}[block] + {\centering\bfseries} + {\thesection}{0ex}{} +} + +% Sections, subsections +\newcommand{\secformat} +{ + \titlespacing{\section} + {0cm}{3ex plus 1ex minus .2ex}{0.4ex plus.2ex} + \titleformat{\section}[block] + {\hspace{1.25cm}\raggedright\bfseries} + {\thesection}{1ex}{} +} + +\newif\if@hyperrefloaded\@hyperrefloadedfalse +\AtBeginDocument{\@ifpackageloaded{hyperref}% + {\@hyperrefloadedtrue}{\@hyperrefloadedfalse}% +} + +%\RequirePackage{ifthen} +\newcommand{\starsection}[1]{ + \structformat + \section*{#1}% + \if@hyperrefloaded + \phantomsection + \fi + \addcontentsline{toc}{section}{#1} + \setcounter{section}{0} + \secformat +} + + +\setcounter{section}{0} +\secformat + + +\newcommand{\intro}{\starsection{\cyr\CYRV\CYRV\CYRE\CYRD\CYRE% +\CYRN\CYRI\CYRE}} +\newcommand{\abbreviations}{\starsection{\CYRO\CYRB\CYRO\CYRZ\CYRN\CYRA% +\CYRCH\CYRE\CYRN\CYRI\CYRYA\ \CYRI\ \CYRS\CYRO\CYRK\CYRR\CYRA\CYRSHCH% +\CYRE\CYRN\CYRI\CYRYA}} +\newcommand{\definitions}{\starsection{\CYRO\CYRP\CYRR\CYRE\CYRD\CYRE% +\CYRL\CYRE\CYRN\CYRI\CYRYA}} +\newcommand{\defabbr}{\starsection{\CYRO\CYRP\CYRR\CYRE\CYRD\CYRE\CYRL% +\CYRE\CYRN\CYRI\CYRYA, \CYRO\CYRB\CYRO\CYRZ\CYRN\CYRA\CYRCH\CYRE\CYRN% +\CYRI\CYRYA\ \CYRI\ \CYRS\CYRO\CYRK\CYRR\CYRA\CYRSHCH\CYRE\CYRN\CYRI\CYRYA}} +\newcommand{\conclusion}{\starsection{\cyr\CYRZ\CYRA\CYRK\CYRL\CYRYU% +\CYRCH\CYRE\CYRN\CYRI\CYRE}} + +% Section and subsection parameters +\titlespacing{\section} +{0cm}{3ex plus 1ex minus .2ex}{0.4ex plus.2ex} + +\titleformat{\subsection}[block] +{\hspace{1.25cm}\normalfont\bfseries} +{\thesubsection}{1ex}{} +\titlespacing{\subsection} +{0cm}{2ex plus 1ex minus .2ex}{.4ex plus.2ex} + +\titleformat{\subsubsection}[block] +{\hspace{1.25cm}\normalfont} +{\thesubsubsection}{1ex}{} +\titlespacing{\subsubsection} +{0cm}{2ex plus 1ex minus .2ex}{.4ex plus.2ex} + +% --------------------------------------------------------------------------% + +% --------------------------------------------------------------------------% + + +%\AddEnumerateCounter{\Asbuk}{\@Asbuk}{\CYRM} +%\AddEnumerateCounter{\asbuk}{\@asbuk}{\cyrm} + +\makeatletter +\def\redeflsection{\def\l@section{\@dottedtocline{1}{0em}{10em}}} +\renewcommand{\appendix}{\par% + + \renewcommand{\secNumbering}{ + \renewcommand{\thefigure}{\Asbuk{section}.\arabic{figure}} + \renewcommand{\thetable}{\Asbuk{section}.\arabic{table}} + \renewcommand{\theequation}{\Asbuk{section}.\arabic{equation}} + \@addtoreset{figure}{section} + \@addtoreset{table}{section} + \@addtoreset{equation}{section} + + } + \if@secNumbering + \secNumbering + \fi + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \renewcommand{\appendixname}{\cyr\CYRP\CYRR\CYRI\CYRL\CYRO\CYRZH\CYRE% + \CYRN\CYRI\CYRE}% + \def\sectionname{\appendixname}% + \addtocontents{toc}{\protect\redeflsection}% + \gdef\thesection{\Asbuk{section}}% + \titlespacing{\section} + %{0cm}{1ex plus 0.1ex minus .2ex}{1.1ex plus.1ex} + {0cm}{3ex plus 1ex minus .2ex}{0.4ex plus.2ex} + \titleformat{\section}[display] + {\centering\normalfont\bfseries} + {\appendixname\hspace{1ex}\thesection}{0ex}{} + + + \titlecontents{section} + [3ex] + {\hspace{-3ex}} + {\appendixname~\thecontentslabel\hspace{2ex}} + {\hspace{2.3em}} + {\titlerule*[0.98ex]{.}\contentspage} + +} + + + +% --------------------------------------------------------------------------% +% Title pages +% --------------------------------------------------------------------------% +%\newcommand{\shapka}{{\centering \CYRM\CYRI\CYRN\CYRO\CYRB\CYRR\CYRN\CYRA% +%\CYRU\CYRK\CYRI\ \CYRR\CYRO\CYRS\CYRS\CYRI\CYRI\\ % +%\CYRF\cyre\cyrd\cyre\cyrr\cyra\cyrl\cyrsftsn\cyrn\cyro\cyre\ \cyrg\cyro% +%\cyrs\cyru\cyrd\cyra\cyrr\cyrs\cyrt\cyrv\cyre\cyrn\cyrn\cyro\cyre\ % +%\cyrb\cyryu\cyrd\cyrzh\cyre\cyrt\cyrn\cyro\cyre\ \cyro\cyrb\cyrr\cyra% +%\cyrz\cyro\cyrv\cyra\cyrt\cyre\cyrl\cyrsftsn\cyrn\cyro\cyre\ \cyru% +%\cyrch\cyrr\cyre\cyrzh\cyrd\cyre\cyrn\cyri\cyre\ \cyrv\cyrery\cyrs% +%\cyrsh\cyre\cyrg\cyro\ \cyro\cyrb\cyrr\cyra\cyrz% +%\cyro\cyrv\cyra\cyrn\cyri\cyrya\\ +%\textbf{<<\CYRS\CYRA\CYRR\CYRA\CYRT\CYRO\CYRV\CYRS\CYRK\CYRI\CYRISHRT\ % +%\CYRN\CYRA\CYRC\CYRI\CYRO\CYRN\CYRA\CYRL\CYRSFTSN\CYRN\CYRERY% +%\CYRISHRT\ \CYRI\CYRS\CYRS\CYRL\CYRE\CYRD\CYRO\CYRV\CYRA\CYRT\CYRE\CYRL% +%\CYRSFTSN\CYRS\CYRK\CYRI\CYRISHRT\ % +%\CYRG\CYRO\CYRS\CYRU\CYRD\CYRA\CYRR\CYRS\CYRT\CYRV\CYRE\CYRN\CYRN\CYRERY% +%\CYRISHRT\ \CYRU\CYRN\CYRI\CYRV\CYRE\CYRR\CYRS\CYRI\CYRT\CYRE\CYRT\ % +%\CYRI\CYRM\CYRE\CYRN\CYRI~\CYRN.\,\CYRG.\,\CYRCH\CYRE\CYRR\CYRN\CYRERY% +%\CYRSH\CYRE\CYRV\CYRS\CYRK\CYRO\CYRG\CYRO>>}\\}} + +%\newcommand{\shapka}{{\centering \CYRM\CYRI\CYRN\CYRO\CYRB\CYRR\CYRN\CYRA% +%\CYRU\CYRK\CYRI\ \CYRR\CYRO\CYRS\CYRS\CYRI\CYRI\\ \hspace{-1em}% +%\CYRF\cyre\cyrd\cyre\cyrr\cyra\cyrl\cyrsftsn\cyrn\cyro\cyre\ \cyrg\cyro% +%\cyrs\cyru\cyrd\cyra\cyrr\cyrs\cyrt\cyrv\cyre\cyrn\cyrn\cyro\cyre\ % +%\cyrb\cyryu\cyrd\cyrzh\cyre\cyrt\cyrn\cyro\cyre\ \cyro\cyrb\cyrr\cyra% +%\cyrz\cyro\cyrv\cyra\cyrt\cyre\cyrl\cyrsftsn\cyrn\cyro\cyre\ \cyru% +%\cyrch\cyrr\cyre\cyrzh\cyrd\cyre\cyrn\cyri\cyre\ \\\cyrv\cyrery\cyrs% +%\cyrsh\cyre\cyrg\cyro\ \cyro\cyrb\cyrr\cyra\cyrz% +%\cyro\cyrv\cyra\cyrn\cyri\cyrya\\\hspace{-2em} +%{ +%\textbf{<<\CYRS\CYRA\CYRR\CYRA\CYRT\CYRO\CYRV\CYRS\CYRK\CYRI\CYRISHRT\ % +%\CYRN\CYRA\CYRC\CYRI\CYRO\CYRN\CYRA\CYRL\CYRSFTSN\CYRN\CYRERY% +%\CYRISHRT\ \CYRI\CYRS\CYRS\CYRL\CYRE\CYRD\CYRO\CYRV\CYRA\CYRT\CYRE\CYRL% +%\CYRSFTSN\CYRS\CYRK\CYRI\CYRISHRT}} \\% +%{\textbf{\CYRG\CYRO\CYRS\CYRU\CYRD\CYRA\CYRR\CYRS\CYRT\CYRV\CYRE\CYRN\CYRN\CYRERY% +%\CYRISHRT\ \CYRU\CYRN\CYRI\CYRV\CYRE\CYRR\CYRS\CYRI\CYRT\CYRE\CYRT}} \\% +%{\textbf{\CYRI\CYRM\CYRE\CYRN\CYRI~\CYRN.\,\CYRG.\,\CYRCH\CYRE\CYRR\CYRN\CYRERY% +%\CYRSH\CYRE\CYRV\CYRS\CYRK\CYRO\CYRG\CYRO>>}}\\}} + +% \newcommand{\shapka}{{\centering \CYRM\CYRI\CYRN\CYRO\CYRB\CYRR\CYRN\CYRA% +% \CYRU\CYRK\CYRI\ \CYRR\CYRO\CYRS\CYRS\CYRI\CYRI\\ % +% \CYRF\cyre\cyrd\cyre\cyrr\cyra\cyrl\cyrsftsn\cyrn\cyro\cyre\ \cyrg\cyro% +% \cyrs\cyru\cyrd\cyra\cyrr\cyrs\cyrt\cyrv\cyre\cyrn\cyrn\cyro\cyre\ % +% \cyrb\cyryu\cyrd\cyrzh\cyre\cyrt\cyrn\cyro\cyre\ \cyro\cyrb\cyrr\cyra% +% \cyrz\cyro\cyrv\cyra\cyrt\cyre\cyrl\cyrsftsn\cyrn\cyro\cyre\ \cyru% +% \cyrch\cyrr\cyre\cyrzh\cyrd\cyre\cyrn\cyri\cyre\ \\\cyrv\cyrery\cyrs% +% \cyrsh\cyre\cyrg\cyro\ \cyro\cyrb\cyrr\cyra\cyrz% +% \cyro\cyrv\cyra\cyrn\cyri\cyrya\\[0.2em] +\newcommand{\shapka}{{ +\centering +\centerline{\scalebox{\scaleUnivName}[1.0]{\parbox[t]{1.1\textwidth} +{\centering +\textbf{\CYRM\CYRI\CYRN\CYRO\CYRB\CYRR\CYRN\CYRA\CYRU\CYRK\CYRI\ +\CYRR\CYRO\CYRS\CYRS\CYRI\CYRI\\ +\CYRF\CYRG\CYRB\CYRO\CYRU\ \CYRV\CYRO\ +<<\CYRS\CYRG\CYRU\ +\CYRI\CYRM\CYRE\CYRN\CYRI~\CYRN.\,\CYRG.\,\CYRCH\CYRE\CYRR\CYRN\CYRERY% +\CYRSH\CYRE\CYRV\CYRS\CYRK\CYRO\CYRG\CYRO>>}}}}}} + +\newcommand{\shapkatwo}{{ +\centering +\centerline{\scalebox{\scaleUnivName}[1.0]{\parbox[t]{1.1\textwidth} +{\centering +\CYRM\CYRI\CYRN\CYRO\CYRB\CYRR\CYRN\CYRA\CYRU\CYRK\CYRI\ +\CYRR\CYRO\CYRS\CYRS\CYRI\CYRI\\ +Федеральное государственное бюджетное образовательное учреждение высшего образования\\ +\textbf{ +<<САРАТОВСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ\ +\CYRI\CYRM\CYRE\CYRN\CYRI~\CYRN.\,\CYRG.\,\CYRCH\CYRE\CYRR\CYRN\CYRERY% +\CYRSH\CYRE\CYRV\CYRS\CYRK\CYRO\CYRG\CYRO>>}}}}}} + +\newcommand{\CDMakeTitle} +{ +\thispagestyle{empty} +\shapka +%\vspace{0.5cm} +\begin{center} +%\parbox{8cm}{ +%\raggedright +\CYRK\cyra\cyrf\cyre\cyrd\cyrr\cyra\ \@chair +%} +\end{center} + +\vspace{14pt} +\vspace{1cm} +{\centering +\textbf{\MakeUppercase{\@title}} +\\[0.3cm] +{\@workname} + +} + +\vspace{1.5cm} +\begin{flushleft} +\@studenttitle\ \@course\ \cyrk\cyru\cyrr\cyrs\cyra\ \@group\ \cyrg% +\cyrr\cyru\cyrp\cyrp\cyrery\\ +\@spectype\ \@napravlenie\\ +\@department\\ +\@author +\end{flushleft} +\vfill + +\noindent +\CYRN\cyra\cyru\cyrch\cyrn\cyrery\cyrishrt\ \cyrr\cyru\cyrk\cyro\cyrv% +\cyro\cyrd\cyri\cyrt\cyre\cyrl\cyrsftsn\\ +\signature{\@satitle}{\@saname}\\[14pt] +\CYRZ\cyra\cyrv\cyre\cyrd\cyru\cyryu\cyrshch\cyri\cyrishrt\ \cyrk\cyra% +\cyrf\cyre\cyrd\cyrr\cyro\cyrishrt\\ +\signature{\@chtitle}{\@chname} + +\vfill +{\centering{\cyr\CYRS\cyra\cyrr\cyra\cyrt\cyro\cyrv\ \@date} + +} +\newpage +} +% --------------------------------------------------------------------------% + +% --------------------------------------------------------------------------% +% Title page of internship +% --------------------------------------------------------------------------% +\newcommand{\MakeTitlePr} +{ +\thispagestyle{empty} +\begin{center} +\shapka +\end{center} +\vspace{0.5cm} + + +\begin{flushright} + \parbox{7cm}{ + \begin{flushleft} + \CYRU\CYRT\CYRV\CYRE\CYRR\CYRZH\CYRD\CYRA\CYRYU\\ + \CYRZ\cyra\cyrv\cyre\cyrd\cyru\cyryu\cyrshch\cyri\cyrishrt\ \cyrk\cyra\cyrf\cyre\cyrd\cyrr\cyro\cyrishrt\\ + \@chtitle\\ + \hbox to 7cm{\hrulefill\ \@chname} + \end{flushleft} + } +\end{flushright} + +\vspace{1cm} +\begin{center}\textbf{\MakeUppercase{\@worktype}}\end{center} +\begin{flushleft} + \vspace{12pt} + % TODO: ubrat nahui cifru 2 + \@studenttitle\ 2\ \cyrk\cyru\cyrr\cyrs\cyra\\ + \@department\\ + + { + \centering + \@author\\ + } + \vspace{0.5cm} + + { + \centering + \@practtype\ \cyrp\cyrr\cyra\cyrk\cyrt\cyri\cyrk\cyra\\ + (\CYRU\cyrch\cyre\cyrb\cyrn\cyra\cyrya\ \cyrp\cyrr\cyra\cyrk\cyrt\cyri\cyrk\cyra)\\ + } + \vspace{0.5cm} + + \cyrk\cyra\cyrf\cyre\cyrd\cyrr\cyra\ \@chair\\ + \cyrk\cyru\cyrr\cyrs\ \underline{\textit{\@course}}\\ + \cyrs\cyre\cyrm\cyre\cyrs\cyrt\cyrr\ \underline{\textit{\@term}}\\ + \cyrp\cyrr\cyro\cyrd\cyro\cyrl\cyrzh\cyri\cyrt\cyre\cyrl\cyrsftsn\cyrn% + \cyro\cyrs\cyrt\cyrsftsn\ \underline{\textit{\@duration\ \cyrn\cyre\cyrd\cyre\cyrl\cyri, \cyrs\ \@practStart\ \cyrg. \cyrp\cyro\ \@practFinish\ \cyrg.}} +\end{flushleft} +%\parindent=-0.2cm +\vspace{1cm} + +\noindent +\CYRR\cyru\cyrk\cyro\cyrv\cyro\cyrd\cyri\cyrt\cyre\cyrl\cyrsftsn\ \cyrp% +\cyrr\cyra\cyrk\cyrt\cyri\cyrk\cyri\\% +\signature{\@satitle}{\@saname}\\[14pt] + +\vfill +{\centering{\cyr\CYRS\cyra\cyrr\cyra\cyrt\cyro\cyrv\\\@date} + +} +% \CYRR\cyru\cyrk\cyro\cyrv\cyro\cyrd\cyri\cyrt\cyre\cyrl\cyrsftsn\ \cyrp% +% \cyrr\cyra\cyrk\cyrt\cyri\cyrk\cyri\ \cyro\cyrt\ \cyro\cyrr\cyrg\cyra% +% \cyrn\cyri\cyrz\cyra\cyrc\cyri\cyri\ (\cyru\cyrch\cyrr\cyre\cyrzh\cyrd% +% \cyre\cyrn\cyri\cyrya, \cyrp\cyrr\cyre\cyrd\cyrp\cyrr\cyri\cyrya\cyrt% +% \cyri\cyrya),\\[12pt]% +% \signature{\@patitle}{\@paname} + +% \newpage +% \thispagestyle{empty} +% \vspace*{11cm} +% \CYRT\cyre\cyrm\cyra\ \cyrp\cyrr\cyra\cyrk\cyrt\cyri\cyrk\cyri:<<\@title>> +% \parindent=1.25cm +% \newpage +} +% --------------------------------------------------------------------------% + +% --------------------------------------------------------------------------% +% Title page of review +% --------------------------------------------------------------------------% +\newcommand{\MakeTitleReview} +{ +\pagestyle{empty} +\begin{center} +\shapka +\end{center} + + +{ +\centering +\textbf{\MakeUppercase{\@reviewtype}}\\[-0.3em] +\textbf{\@workname}\\[0.3em] +<<{\MakeUppercase{\@title}}>> + +\@studenttitle\ \@course\ \cyrk\cyru\cyrr\cyrs\cyra\ % +\@department\\ + +\centering +{\@author}\\ + +\centering +\@studentdone\ \cyro\cyrb\cyru\cyrch\cyre\cyrn\cyri\cyre\ \cyrp% +\cyro\ \@spectyperod\ \@napravlenie + +} +\vspace{2em} +} +% --------------------------------------------------------------------------% + + +% --------------------------------------------------------------------------% +% Title page of assignment +% --------------------------------------------------------------------------% +\newcommand{\MakeTitleAssign} +{ +\pagestyle{empty} +\begin{center} +\shapka +\end{center} + +{ +\centering +\CYRK\cyra\cyrf\cyre\cyrd\cyrr\cyra\ \@chair + + +\vspace{6em} +\centering +\textbf{\MakeUppercase{\@reviewtype}\\%[-0.3em] +\@workname} + +\vspace{0.3em} +\raggedright +\cyrp\cyro\ \@spectyperod\ \@napravlenie\\ +\@studenttitle\ \@course\ \cyrk\cyru\cyrr\cyrs\cyra\ % +\@department\\ +\MakeUppercase{\@author}\\ +\textbf{\CYRT\cyre\cyrm\cyra\ \cyrr\cyra\cyrb\cyro\cyrt\cyrery:} <<{\MakeUppercase{\@title}}>> + +} + +\vfill + +\noindent +\CYRN\cyra\cyru\cyrch\cyrn\cyrery\cyrishrt\ \cyrr\cyru\cyrk\cyro\cyrv% +\cyro\cyrd\cyri\cyrt\cyre\cyrl\cyrsftsn\\ +\signature{\@satitle}{\@saname}\\[14pt] +\CYRZ\cyra\cyrv\cyre\cyrd\cyru\cyryu\cyrshch\cyri\cyrishrt\ \cyrk\cyra% +\cyrf\cyre\cyrd\cyrr\cyro\cyrishrt\\ +\signature{\@chtitle}{\@chname} + +\vfill +{\centering{\cyr\CYRS\cyra\cyrr\cyra\cyrt\cyro\cyrv\ \@date} + +} +\newpage +\begin{center}\bf +C\cyro\cyrd\cyre\cyrr\cyrzh\cyra\cyrn\cyri\cyre\ \cyrr\cyra\cyrb% +\cyro\cyrt\cyrery +\end{center} +} +% --------------------------------------------------------------------------% + +% --------------------------------------------------------------------------% +% Referat title page +% --------------------------------------------------------------------------% +\newcommand{\RefMakeTitle} +{ +\thispagestyle{empty} +\shapka + +\vspace{3cm} +{\centering +\textbf{\MakeUppercase{\@title}} +\\[0.3cm] +{\@workname} + +} + +\vspace{1.5cm} +\begin{flushleft} +\@studenttitle\ \@course\ \cyrk\cyru\cyrr\cyrs\cyra\ \@group\ \cyrg% +\cyrr\cyru\cyrp\cyrp\cyrery\\ +\@spectype\ \@napravlenie\\ +\@department\\ +\@author +\end{flushleft} +\vfill + +\noindent +\CYRP\cyrr\cyro\cyrv\cyre\cyrr\cyri\cyrl\\ +\signature{\@satitle}{\@saname} + +\vfill +{\centering{\cyr\CYRS\cyra\cyrr\cyra\cyrt\cyro\cyrv\ \@date} + +} +\newpage +} +% --------------------------------------------------------------------------% + +% --------------------------------------------------------------------------% +% LabWork2 title page +% --------------------------------------------------------------------------% +\newcommand{\LabTwoMakeTitle} +{ +\thispagestyle{empty} +\shapkatwo + +\vspace{1cm} +\hfill\begin{minipage}{0.4\linewidth} + Кафедра {\@chair} +\end{minipage} + +\vspace{1cm} +{\centering +\textbf{\MakeUppercase{\@title}} +\\[0.3cm] +{\@workname}\\ +<<{\MakeUppercase{\@subject}}>> + +} + +\vspace{1.5cm} +\begin{flushleft} +\@studenttitle\ \@course\ \cyrk\cyru\cyrr\cyrs\cyra\ \@group\ \cyrg\cyrr\cyru\cyrp\cyrp\cyrery\\ +\@spectype\ \@napravlenie\\ +\@department\\ +\centering\@author +\end{flushleft} +\vfill + +\noindent +Преподаватель\\ +\signature{\@satitle}{\@saname} + +\vfill +{\centering{\cyr\CYRS\cyra\cyrr\cyra\cyrt\cyro\cyrv\ \@date} + +} +\newpage +} +% --------------------------------------------------------------------------% + +% --------------------------------------------------------------------------% +% Last page +% --------------------------------------------------------------------------% +\newcommand{\lastpage} +{ +\newpage +\thispagestyle{empty} +\vspace*{11cm} +\@worktype\ <<\@title>>\ \@typework\ \cyrm\cyrn\cyro\cyrishrt\ % +\cyrs\cyra\cyrm\cyro\cyrs\cyrt\cyro\cyrya\cyrt\cyre\cyrl\cyrsftsn\cyrn% +\cyro, \cyri\ \cyrn\cyra\ \cyrv\cyrs\cyre\ \cyri\cyrs\cyrt\cyro\cyrch% +\cyrn\cyri\cyrk\cyri, \cyri\cyrm\cyre\cyryu\cyrshch\cyri\cyre\cyrs% +\cyrya\ \cyrv\ \cyrr\cyra\cyrb\cyro\cyrt\cyre, \cyrd\cyra\cyrn\cyrery\ % +\cyrs\cyro\cyro\cyrt\cyrv\cyre\cyrs\cyrt\cyrv\cyru\cyryu\cyrshch\cyri% +\cyre\ \cyrs\cyrs\cyrery\cyrl\cyrk\cyri.\par +\parindent=9cm +\parbox{8cm}{ +\begin{flushleft} +\hbox to 6cm{\hbox to 3.5cm{\hrulefill}/\hbox to 3.5cm{\hrulefill}/} +\end{flushleft} +} +} + +\AddEnumerateCounter{\Asbuk}{\@Asbuk}{\CYRM} +\AddEnumerateCounter{\asbuk}{\@asbuk}{\cyrm} + +% --------------------------------------------------------------------------% +% enumerations +% --------------------------------------------------------------------------% +\setlist{noitemsep} +%\setlist[1]{labelindent=\parindent} % < Usually a good idea +\setlist[itemize]{ +%leftmargin=52pt, +rightmargin=0pt, +labelsep=7pt, +labelwidth=20pt, +itemindent=0pt, +listparindent=0pt, +topsep=0pt,%4pt plus 2pt minus 4pt, +partopsep=0pt,% plus 1pt minus 1pt, +parsep=0pt,% plus 1pt, +itemsep=0 pt%\parsep +} +\setlist[enumerate]{ +%leftmargin=52pt, +rightmargin=0pt, +labelsep=5pt, +labelwidth=20pt, +itemindent=0pt, +listparindent=0pt, +topsep=0pt,%4pt plus 2pt minus 4pt, +partopsep=0pt,% plus 1pt minus 1pt, +parsep=0pt,% plus 1pt, +itemsep=0pt%\parsep +} +\setlist[itemize,1]{label={\normalfont\bfseries\textemdash}} +%\setlist[enumerate]{labelsep=*, leftmargin=1.5pc} +\setlist[enumerate,1]{label=\arabic*., ref=\arabic*} +\setlist[enumerate,2]{label=\emph{\asbuk*}), ref=\theenumi.\emph{\asbuk*}} +\setlist[enumerate,3]{label=\roman*., ref=\theenumii.\roman*} +\setlist[enumerate,4]{label=\Asbuk*., ref=\theenumiii.\Asbuk*} +%\setlist[description]{font=\sffamily\bfseries} + +%%%\renewcommand{\@listI}{% +%%%\leftmargin=52pt +%%%\rightmargin=0pt +%%%\labelsep=7pt +%%%\labelwidth=20pt +%%%\itemindent=0pt +%%%\listparindent=0pt +%%%\topsep=4pt plus 2pt minus 4pt +%%%\partopsep=0pt plus 1pt minus 1pt +%%%\parsep=0pt plus 1pt +%%%\itemsep=\parsep} + +%%%\renewcommand\theenumi {\@arabic\c@enumi} +%%%\renewcommand\theenumii {\asbuk{enumii}} +%%%\renewcommand\theenumiii{\@roman\c@enumiii} +%%%\renewcommand\theenumiv {\Asbuk{enumiv}} +%%%\newcommand\atheenumi{\asbuk{enumi}} +%%%\newcommand\atheenumii{\asbuk{enumii}} +%%%\renewcommand\labelenumi {\theenumi.} +%%%\renewcommand\labelenumii {\theenumii.} +%%%\renewcommand\labelenumiii{\theenumiii.} +%%%\renewcommand\labelenumiv {\theenumiv.} +%%%\renewcommand\p@enumii {\theenumi} +%%%\renewcommand\p@enumiii {\theenumi.\theenumii} +%%%\renewcommand\p@enumiv {\p@enumiii.\theenumiii} +%%%\renewcommand\labelitemi {\normalfont\bfseries\textemdash} +%%%\renewcommand\labelitemii {\normalfont\bfseries\textendash} +%%%\renewcommand\labelitemiii{\textperiodcentered} +%%%\renewcommand\labelitemiv {\textasteriskcentered} +%%% +%%%\renewcommand{\@listI}{% +%%%\leftmargin=52pt +%%%\rightmargin=0pt +%%%\labelsep=7pt +%%%\labelwidth=20pt +%%%\itemindent=0pt +%%%\listparindent=0pt +%%%\topsep=4pt plus 2pt minus 4pt +%%%\partopsep=0pt plus 1pt minus 1pt +%%%\parsep=0pt plus 1pt +%%%\itemsep=\parsep} +% --------------------------------------------------------------------------% + + +% --------------------------------------------------------------------------% +% References +% --------------------------------------------------------------------------% +\makeatletter +\def\@biblabel#1{#1 } + +\renewenvironment{thebibliography}[1] +{ + \starsection{\cyr\CYRS\CYRP\CYRI\CYRS\CYRO\CYRK\ \CYRI\CYRS\CYRP\CYRO\CYRL% + \CYRSFTSN\CYRZ\CYRO\CYRV\CYRA\CYRN\CYRN\CYRERY\CYRH\ \CYRI\CYRS\CYRT% + \CYRO\CYRCH\CYRN\CYRI\CYRK\CYRO\CYRV} + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \setlength{\itemsep}{0pt} + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} +{\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} + +\makeatother +% --------------------------------------------------------------------------% diff --git a/lab3/report/lab3.tex b/lab3/report/lab3.tex new file mode 100644 index 0000000..6faca04 --- /dev/null +++ b/lab3/report/lab3.tex @@ -0,0 +1,359 @@ +\documentclass[spec, och, labwork2]{SCWorks} +\usepackage{preamble} + +\begin{document} +\include{titlepage.tex} +\tableofcontents + +\section{Постановка задачи} + +Цель работы "--- изучение основных понятий универсальной алгебры и операций над +бинарными отношениями. Порядок выполнения работы: +\begin{enumerate} + \item + Рассмотреть понятие алгебраической операции и классификацию свойств + операций. Разработать алгоритмы проверки свойств операций: + ассоциативность, коммутативность, идемпотентность, обратимость, + дистрибутивность; + \item + Рассмотреть основные операции над бинарными отношениями. Разработать + алгоритмы выполнения операций над бинарными отношениями; + \item + Рассмотреть основные операции над матрицами. Разработать алгоритмы + выполнения операций над матрицами. +\end{enumerate} + +\section{Теоретические сведения} + +\subsection{Алгебраические операции} + +\begin{definition} + Отображение $f : A^n \to A$ называется алгебраической $n$-арной операцией + или просто алгебраической операцией на множестве $A$. При этом $n$ + называется порядком или арностью алгебраической операции $f$. +\end{definition} + +Далее для бинарной операции $f$ по возможности будем использовать +мультипликативную запись с помощью символа $\cdot$, т.е. вместо $f(x, y)$ писать +$x \cdot y$, или просто $xy$. При необходимости для бинарной операции $f$ +используется также аддитивная запись с помощью символа $+$, т.е. вместо $f(x, +y)$ записывается $x + y$. + +\begin{definition} + Бинарная операция $\cdot$ на множестве A называется + \begin{itemize} + \item + ассоциативной, если $\forall x, y, z \in A$ выполняется равенство + \[ x \cdot (y \cdot z) = (x \cdot y) \cdot z \] + \item + коммутативной, если $\forall x, y \in A$ выполняется равенство + \[ x \cdot y = y \cdot x \] + \item + идемпотентной, если $\forall x \in A$ выполняется равенство + \[ x \cdot x = x \] + \item + обратимой, если + \[ (\forall a \in A) \; \exists b \in A : a \cdot b = b \cdot a = e \] + где $e \in A$ и выполняется $a \cdot e = e \cdot a = a$ + \item + дистрибутивной относительно бинарной операции $+$, если + $\forall x, y, z \in A$ выполняются равенства + \begin{align*} + x \cdot (y + z) &= (x \cdot y) + (x \cdot z) \\ + (y + z) \cdot x &= (y \cdot x) + (z \cdot x) + \end{align*} + \end{itemize} +\end{definition} + +\subsection{Основные операции над бинарными отношениями} + +\begin{enumerate} + \item Теоретико-множественные операции; + \item + Обращение бинарных отношений: обратным для бинарного отношения $\rho + \subset A \times B$ называется бинарное отношение $\rho^{-1} \subset B + \times A$, определяющееся по формуле: + \[ \rho^{-1} = \{ (b, a): (a, b) \in \rho \} \] + \item + Композиция композицией бинарных отношений $\rho \subset A \times B$ и + $\sigma \subset B \times C$ называется бинарное отношение $\rho \sigma$, + определяющееся по формуле: + \[ \rho \sigma = \{ (a, c): (a, b) \in \rho \land (b, c) \in \sigma \} \] +\end{enumerate} + +\subsection{Основные операции над матрицами} + +\begin{enumerate} + \item Сложение матриц + \item Умножение матрицы на скаляр + \item Транспонирование матрицы + \item Умножение матриц +\end{enumerate} + +\section{Алгоритмы проверки свойств операций} + +% +\subsection{Проверка на ассоциативность} + +\textit{Вход.} Таблица Кэли $M = (m_{ij})$ размерности $N \times N$ +для операции $\cdot$ на множестве $A$. + +\textit{Выход.} <<Операция является ассоциативной>> или <<Операция не является +ассоциативной>>. + +\begin{enumerate} + \item + Если $(\forall 0 \leq i, j, k < N)$ выполняется равенство $m_{pk} = + m_{jq}$, где $p$ "--- индекс $m_{ji}$, а $q$ "--- индекс $m_{ik}$, то + ответ "--- <<Операция является ассоциативной>>; + \item + Иначе, ответ "--- <<Операция не является ассоциативной>>. +\end{enumerate} + +Трудоёмкость алгоритма --- $O(N^3)$. + +% +\subsection{Проверка на коммутативность} + +\textit{Вход.} Таблица Кэли $M = (m_{ij})$ размерности $N \times N$ +для операции $\cdot$ на множестве $A$. + +\textit{Выход.} <<Операция является коммутативной>> или <<Операция не является +коммутативной>>. + +\begin{enumerate} + \item + Если $(\forall 0 \leq i, j < N) \; m_{ij} = m_{ji}$, то ответ "--- + <<Операция является коммутативной>>; + \item Иначе, ответ "--- <<Операция не является коммутативной>>. +\end{enumerate} + +Трудоёмкость алгоритма --- $O(N^2)$. + +% +\subsection{Проверка на идемпотентность} + +\textit{Вход.} Таблица Кэли $M = (m_{ij})$ размерности $N \times N$ +для операции $\cdot$ на множестве $A$. + +\textit{Выход.} <<Операция является идемпотентной>> или <<Операция не является +идемпотентной>>. + +\begin{enumerate} + \item + Если $(\forall 0 \leq i < N) \; m_{ii} = a$, где $a$ "--- $i$-й элемент + множества $A$, то ответ "--- <<Операция является идемпотентной>>; + \item Иначе, ответ "--- <<Операция не является идемпотентной>>. +\end{enumerate} + +Трудоёмкость алгоритма --- $O(N)$. + +% +\subsection{Проверка на обратимость} + +\textit{Вход.} Таблица Кэли $M = (m_{ij})$ размерности $N \times N$ +для операции $\cdot$ на множестве $A$. + +\textit{Выход.} <<Операция является обратимой>> или <<Операция не является +обратимой>>. + +\begin{enumerate} + \item + Если $(\forall 0 \leq i, j < N) \; m_{ij} = m_{ji}$, то ответ "--- + <<Операция является обратимой>>; + \item Иначе, ответ "--- <<Операция не является обратимой>>. +\end{enumerate} + +Трудоёмкость алгоритма --- $O(N^2)$. + +% +\subsection{Проверка на дистрибутивность} + +\textit{Вход.} Таблица Кэли $M^\cdot = (m^\cdot_{ij})$ размерности $N \times N$ +для операции $\cdot$ на множестве $A$, таблица Кэли $M^+ = (m^+_{ij})$ +размерности $N \times N$ для операции $+$ на множестве $A$ + +\textit{Выход.} <<Операция является дистрибутивной>> или <<Операция не является +дистрибутивной>>. + +% \begin{align*} +% x \cdot (y + z) &= (x \cdot y) + (x \cdot z) \\ +% (y + z) \cdot x &= (y \cdot x) + (z \cdot x) +% \end{align*} + +% i - x, j - y, k - z + +\begin{enumerate} + \item + Если $(\forall 0 \leq i, j, k < N)$ выполняются равенства $m^\cdot_{it} + = m^+_{pq}$ и $m^\cdot_{ti} = m^+_{rs}$, где $t$ "--- индекс $m^+_{jk}$, + $p$ "--- индекс $m^\cdot_{ij}$, $q$ "--- индекс $m^\cdot_{ik}$, $r$ "--- + индекс $m^\cdot_{ji}$, $s$ "--- индекс $m^\cdot_{ki}$, то ответ "--- + <<Операция является дистрибутивной>>; + \item Иначе, ответ "--- <<Операция не является дистрибутивной>>. +\end{enumerate} + +Трудоёмкость алгоритма --- $O(N^3)$. + +\section{Алгоритмы выполнения операций над бинарными отношениями} + +% +\subsection{Вычисление объединения бинарных отношений} + +\textit{Вход.} Матрица $A(\rho) = (a_{ij})$ бинарного отношения $\rho$ +размерности $N \times N$, матрица $B(\sigma) = (b_{ij})$ бинарного отношения +$\sigma$ размерности $N \times N$. + +\textit{Выход.} Матрица $C(\rho \cup \sigma) = (c_{ij})$ бинарного отношения +$\rho \cup \sigma$. + +\begin{enumerate} + \item $(\forall 0 \leq i, j < N - 1) \; c_{ij} = a_{ij} + b_{ij}$. +\end{enumerate} + +Трудоёмкость алгоритма --- $O(N^2)$. + +% +\subsection{Вычисление пересечения бинарных отношений} + +\textit{Вход.} Матрица $A(\rho) = (a_{ij})$ бинарного отношения $\rho$ +размерности $N \times N$, матрица $B(\sigma) = (b_{ij})$ бинарного отношения +$\sigma$ размерности $N \times N$. + +\textit{Выход.} Матрица $C(\rho \cap \sigma) = (c_{ij})$ бинарного отношения +$\rho \cap \sigma$. + +\begin{enumerate} + \item $(\forall 0 \leq i, j < N - 1) \; c_{ij} = a_{ij} \cdot b_{ij}$. +\end{enumerate} + +Трудоёмкость алгоритма --- $O(N^2)$. + +% +\subsection{Вычисление дополнения бинарного отношения} + +\textit{Вход.} Матрица $M(\rho) = (m_{ij})$ бинарного отношения $\rho$ +размерности $N \times N$. + +\textit{Выход.} Матрица $M'(M(\rho)) = (m'_{ij})$ дополнения бинарного отношения +$\rho$. + +\begin{enumerate} + \item $(\forall 0 \leq i, j < N - 1) \; m'_{ij} = 1 - m_{ij}$. +\end{enumerate} + +Трудоёмкость алгоритма --- $O(N^2)$. + +% +\subsection{Вычисление обратного бинарного отношения} + +\textit{Вход.} Матрица $M(\rho) = (m_{ij})$ бинарного отношения $\rho$ +размерности $N \times N$. + +\textit{Выход.} Матрица $M'(M(\rho)) = (m'_{ij})$ бинарного отношения +$\rho^{-1}$. + +\begin{enumerate} + \item Ответом является матрица транспонированная матрица $M^T = M'$. +\end{enumerate} + +Трудоёмкость алгоритма --- $O(N^2)$. + +% +\subsection{Вычисление композиции бинарных отношений} + +\textit{Вход.} Матрица $A(\rho) = (a_{ij})$ бинарного отношения $\rho$ +размерности $N \times N$, матрица $B(\sigma) = (b_{ij})$ бинарного отношения +$\sigma$ размерности $N \times N$. + +\textit{Выход.} Матрица $C(\rho\sigma) = (c_{ij})$ бинарного отношения +$\rho\sigma$. + +\begin{enumerate} + \item Ответом является матрица $C = A \cdot B$, вычисленная с помощью + алгоритма 5.4 Умножения матриц. +\end{enumerate} + +Трудоёмкость алгоритма --- $O(N^3)$. + +\section{Алгоритмы выполнения операций над матрицами} + +% +\subsection{Сложение матриц} + +\textit{Вход.} Матрица $A = (a_{ij})$ размерности $N \times M$, матрица +$B = (b_{ij})$ размерности $N \times M$. + +\textit{Выход.} Матрица $C = (c_{ij})$ размерности $N \times M$. + +\begin{enumerate} + \item + $(\forall 0 \leq i < N) (\forall 0 \leq j < M) \; + c_{ij} = a_{ij} + b_{ij}$ +\end{enumerate} + +Трудоёмкость алгоритма --- $O(N^2)$. + +% +\subsection{Умножение матрицы на скаляр} + +\textit{Вход.} Матрица $A = (a_{ij})$ размерности $N \times M$, скаляр $\alpha$. + +\textit{Выход.} Матрица $A' = (a'_{ij})$ размерности $N \times M$. + +\begin{enumerate} + \item + $(\forall 0 \leq i < N) (\forall 0 \leq j < M) \; + a'_{ij} = \alpha \cdot a_{ij}$ +\end{enumerate} + +Трудоёмкость алгоритма --- $O(N^2)$. + +% +\subsection{Транспонирование матрицы} + +\textit{Вход.} Матрица $A = (a_{ij})$ размерности $N \times M$. + +\textit{Выход.} Матрица $A^T = (a^T_{ij})$ размерности $M \times N$. + +\begin{enumerate} + \item $(\forall 0 \leq i < N) (\forall 0 \leq j < M) \; a^T_{ji} = a_{ij}$ +\end{enumerate} + +Трудоёмкость алгоритма --- $O(N^2)$. + +% +\subsection{Умножение матриц} + +\textit{Вход.} Матрица $A = (a_{ij})$ размерности $N \times M$, матрица $B = +(b_{ij})$ размерности $M \times K$. + +\textit{Выход.} Матрица $C = (c_{ij}) = A \cdot B$ размерности $N \times K$. + +\begin{enumerate} + \item + $ \displaystyle + (\forall 0 \leq i < N) (\forall 0 \leq j < M) \; + c_{ij} = \sum_{k = 0}^{K - 1} a_{ik} + \sum_{k = 0}^{K - 1} b_{kj}$ +\end{enumerate} + +Трудоёмкость алгоритма --- $O(N^3)$. + +\section{Программная реализация} + +\inputminted[fontsize=\small, breaklines=true, style=bw, linenos]{c}{../lab3.py} + +\section{Результаты тестирования} + +текст + +\conclusion + +В ходе выполнения данной лабораторной работы были изучены основные свойства +алгебраических операций, основные операции над бинарными отношениями, основные +операции над матрицами. Были разработаны алгоритмы для программной реализации +данных операций, а также была произведена оценка сложности данных алгоритмов. +Программная реализация на языке Python с библиотекой numpy успешно прошла +тестирование. + +\end{document} diff --git a/lab3/report/preamble.sty b/lab3/report/preamble.sty new file mode 100644 index 0000000..835aef8 --- /dev/null +++ b/lab3/report/preamble.sty @@ -0,0 +1,52 @@ +\usepackage{subfigure} +\usepackage{tikz,pgfplots} +\pgfplotsset{compat=1.5} +\usepackage{float} +\setcounter{secnumdepth}{4} +\titleformat{\paragraph}[block] +{\hspace{1.25cm}\normalfont} +{\theparagraph}{1ex}{} +\titlespacing{\paragraph} +{0cm}{2ex plus 1ex minus .2ex}{.4ex plus.2ex} + +% --------------------------------------------------------------------------% + + +\usepackage[T2A]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage{graphicx} +\graphicspath{ {./images/} } +\usepackage{tempora} +\usepackage{minted} + +% \usepackage[sort,compress]{cite} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{amsthm} +\usepackage{fancyvrb} +\usepackage{listings} +\usepackage{listingsutf8} +\usepackage{longtable} +\usepackage{array} +\usepackage[english,russian]{babel} +% \usepackage[colorlinks=false]{hyperref} +\usepackage{url} + +\usepackage[parentracker=true, + backend=biber, + hyperref=false, + language=russian, + autolang=other, + citestyle=gost-numeric, + defernumbers=true, + bibstyle=gost-numeric, +]{biblatex} +\addbibresource{sources.bib} +\usepackage{csquotes} + + +\newcommand{\eqdef}{\stackrel {\rm def}{=}} +\renewcommand\theFancyVerbLine{\small\arabic{FancyVerbLine}} +\newtheorem{lemma}{Лемма} +\newtheorem*{lemma*}{Лемма} +\newtheorem{definition}{Определение}
\ No newline at end of file diff --git a/lab3/report/titlepage.tex b/lab3/report/titlepage.tex new file mode 100644 index 0000000..06af67f --- /dev/null +++ b/lab3/report/titlepage.tex @@ -0,0 +1,54 @@ +\selectlanguage{russian} +\chair{теоретических основ компьютерной безопасности и криптографии} +\title{Универсальные алгебры и алгебра отношений} +\course{3} +\group{331} +\department{факультета компьютерных наук и информационных технологий} +\napravlenie{10.05.01 "--- Компьютерная безопасность} +\subject{Прикладная универсальная алгебра} + +% Для студентки. Для работы студента следующая команда не нужна. +% \studenttitle{Студентки} + +% Фамилия, имя, отчество в родительном падеже +\author{Гущина Андрея Юрьевича} + +% Заведующий кафедрой +\chtitle{д.ф.-м.н.} % степень, звание +\chname{М. Б. Абросимов} + +%Научный руководитель (для реферата преподаватель проверяющий работу) +\satitle{аспирант} %должность, степень, звание +\saname{В. Н. Кутин} + +% Руководитель практики от организации (только для практики, +% для остальных типов работ не используется) +% \patitle{к.ф.-м.н.} +% \paname{С.~В.~Миронов} + +% Семестр (только для практики, для остальных +% типов работ не используется) +%\term{8} + +% Наименование практики (только для практики, для остальных +% типов работ не используется) +%\practtype{преддипломная} + +% Продолжительность практики (количество недель) (только для практики, +% для остальных типов работ не используется) +%\duration{4} + +% Даты начала и окончания практики (только для практики, для остальных +% типов работ не используется) +%\practStart{30.04.2019} +%\practFinish{27.05.2019} + +% Год выполнения отчета +\date{2022} + +\maketitle + +% Включение нумерации рисунков, формул и таблиц по разделам +% (по умолчанию - нумерация сквозная) +% (допускается оба вида нумерации) +% \secNumbering
\ No newline at end of file |