Cognitive_technologies/лр3/LinAlg_part1.ipynb

1303 lines
215 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Линейная алгебра."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"В этой лабораторной работе вы познакомитесь со средой Jupyter Notebook и библиотеками numpy и scipy."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Часть 1. Библиотеки"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"В этой лабораторной работе вам понадобятся три библиотеки:\n",
"\n",
"- `numpy` - основная библиотека для работы с матрицами;\n",
"- `scipy`, а точнее модуль `scipy.linalg`, содержащий множество функций линейной алгебры;\n",
"- `matplotlib` - графическая библиотека\n",
"\n",
"Подключить их можно следующим образом:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Запустите этот код\n",
"import numpy as np\n",
"\n",
"import scipy.linalg as sla\n",
"\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Теперь вы можете позвать, скажем, функцию `scipy.linalg.det()` с помощью кода `sla.det()`, а функцию `numpy.exp()` - с помощью кода `np.exp()`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Основные объекты и операции линейной алгебры в NumPy и SciPy:**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Основной объект, с которым вам придётся работать и в этой, и в следующих лабораторных - это, безусловно, матрицы. В библиотеке `numpy` они представлены классом `numpy.ndarray`. Матрицу можно создать из двумерного (а на самом деле и не только двумерного) массива следующим образом:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[1 2 3]\n",
" [4 5 6]]\n",
"(2, 3)\n"
]
}
],
"source": [
"# Запустите этот код\n",
"A = np.array([[1, 2, 3], [4, 5, 6]])\n",
"\n",
"print(A)\n",
"print(A.shape) # пара (число строк, число столбцов)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Обратите внимание, что матрица заполняется *по строкам*.\n",
"\n",
"Есть и много других конструкторов матриц. Например, единичная матрица размера $n\\times n$ создаётся с помощью функции `numpy.eye(n)`. Со всем многообразием конструкторов можно ознакомиться [на этой странице](https://docs.scipy.org/doc/numpy-1.10.1/reference/routines.array-creation.html)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Зачастую бывает нужно получить доступ к подматрицам данной матрицы, и numpy предоставляет множество удобных средств, как это сделать (называется slicing):\n",
"- элемент с номером `(i,j)`: `A[i,j]`\n",
"- i-я строка матрицы: `A[i,:]`\n",
"- j-й столбец матрицы: `A[:,j]`\n",
"\n",
"**Внимание!** Оба варианта, и `A[i,:]`, и `A[:,j]` дают не строку или столбец, а одномерный вектор. Если вы хотите получить вектор-строку или вектор-столбец соответственно, используйте вот такой синтаксис: `A[i:i+1,:]`, и `A[:,j:j+1]`\n",
"- строки с нулевой по i-ю: `A[:i+1,:]`\n",
"- столбцы с j-го по последний: `A[:,j:]`\n",
"- строки с i-й по k-ю: `A[i:k,:]`\n",
"\n",
"В некоторых случаях нужно получить доступ к (прямоугольной) подматрице, элементы которой находятся на пересечении строк из списка `rows` и столбцов `columns`. В этом случае `A[rows, columns]` даст не то, что вы ожидаете (можете попробовать это сделать сами и увидеть, что получится; только возьмите `rows` и `columns` одного размера). Справиться с этой задачей позволяет код `A[np.ix_(rows, columns)]`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Умножение матриц* производится с помощью оператора `np.dot()`. Есть два варианта написания: `A.dot(B)` и `np.dot(A, B)`.\n",
"\n",
"Обычные знаки арифметических действий (`+`, `-`, `*`) зарезервированы для поэлементных операций. Например, `A * B` - это матрица, элементами которой являются произведения $A_{ij}B_{ij}$. Помимо этих есть и множество других поэлементных операций. Например, `numpy.exp(A)` - это матрица, элементами которой являются экспоненты элементов матрицы `A`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Чтобы получить матрицу, *транспонированную* к матрице `A`, напишите просто `A.T`. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"В некоторых случаях бывает нужно создавать *случайные матрицы*: например, при проведении экспериментов или для инициализации итеративных методов. Средства для этого предоставляет пакет [numpy.random](https://docs.scipy.org/doc/numpy/reference/routines.random.html). Так, `np.random.rand(m,n)` - это матрица $m\\times n$, элементы которой независимо выбраны из равномерного распределения на интервале `[0;1)` "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Для *решения систем линейных уравнений* в пакете `scipy.linalg` есть множество методов, рассмотрение которых выходит за пределы курса линейной алгебры. Мы вам пока предлагаем пользоваться функцией `scipy.linalg.solve`, основанной на методе Гаусса. Отметим, что `scipy.linalg.solve(A, B)` выдаёт решение уравнения $AX = B$ (или ошибку), где $B$ может быть как вектором, так и матрицей.\n",
"\n",
"Найти обратную матрицу для матрицы $A$ можно с помощью функции `sla.inv(A)`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Копирование сложных объектов в Python**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Когда вы делаете присваивание каких-то сложных объектов, как правило оно происходит по ссылке. Например, код\n",
"```\n",
"B = A\n",
"B[0,0] = 10\n",
"```\n",
"приведёт к изменению матрицы `A`.\n",
"\n",
"Не попадайтесь в эту ловушку! Если вы хотите работать с копией как с независимой матрицей, используйте метод `copy()`:\n",
"```\n",
"B = A.copy()\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Где искать помощь**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Библиотеки `numpy` и `scipy` снабжены прекрасной документацией. Если у вас возникают вопросы о том, как работает та или иная функция (или даже как называется функция, выполняющая то, что вам нужно), вы почти всегда можете найти там ответы.\n",
"\n",
"[Ссылка на документацию пакета scipy.linalg](https://docs.scipy.org/doc/scipy-0.18.1/reference/linalg.html)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Задание**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"В качестве первого задания найдите соответствующие функции в библиотеке и сделайте следующее:\n",
"\n",
"- создайте нулевую матрицу $Z$ размера $3\\times4$;\n",
"\n",
"- создайте диагональную матрицу $5\\times5$ с диагональными элементами 1, 2, 3, 4 и 5;\n",
"\n",
"- найдите её след (не силою мысли, а с помощью библиотечных функций, конечно);\n",
"\n",
"- найдите обратную к ней матрицу;\n",
"\n",
"- сгенерируйте случайную матрицу $X$ размера $4\\times5$;\n",
"\n",
"- найдите определитель подматрицы матрицы $X$, расположенной на пересечении 2 и 3 строки и 1 и 2 столбца; считаем, что строки и столбцы нумеруются с единицы (используйте slicing!). Такой определитель называется **минором** матрицы $X$;\n",
"\n",
"- найдите произведение $X^TX$.\n",
"\n",
"Пожалуйста, каждый пункт делайте в новом блоке и не забывайте распечатывать результаты."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Нулевая матрица Z (3x4):\n",
"[[0. 0. 0. 0.]\n",
" [0. 0. 0. 0.]\n",
" [0. 0. 0. 0.]]\n"
]
}
],
"source": [
"# 1. Создайте нулевую матрицу Z размера 3x4\n",
"Z = np.zeros((3, 4))\n",
"print(\"Нулевая матрица Z (3x4):\")\n",
"print(Z)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Диагональная матрица D (5x5):\n",
"[[1 0 0 0 0]\n",
" [0 2 0 0 0]\n",
" [0 0 3 0 0]\n",
" [0 0 0 4 0]\n",
" [0 0 0 0 5]]\n"
]
}
],
"source": [
"# 2. Создайте диагональную матрицу 5x5 с диагональными элементами 1, 2, 3, 4, 5\n",
"diagonal_elements = [1, 2, 3, 4, 5]\n",
"D = np.diag(diagonal_elements)\n",
"print(\"Диагональная матрица D (5x5):\")\n",
"print(D)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"След диагональной матрицы D: 15\n"
]
}
],
"source": [
"# 3. Найдите след диагональной матрицы\n",
"trace_D = np.trace(D)\n",
"print(f\"След диагональной матрицы D: {trace_D}\")"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Обратная матрица D:\n",
"[[ 1. 0. 0. 0. -0. ]\n",
" [ 0. 0.5 0. 0. -0. ]\n",
" [ 0. 0. 0.33333333 0. -0. ]\n",
" [ 0. 0. 0. 0.25 -0. ]\n",
" [ 0. 0. 0. 0. 0.2 ]]\n"
]
}
],
"source": [
"# 4. Найдите обратную к диагональной матрице D\n",
"inverse_D = sla.inv(D)\n",
"print(\"Обратная матрица D:\")\n",
"print(inverse_D)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Случайная матрица X (4x5):\n",
"[[0.76237054 0.10601632 0.57489958 0.22276942 0.67180418]\n",
" [0.24317029 0.60157193 0.64327088 0.55853681 0.28928955]\n",
" [0.28515382 0.24164089 0.28580249 0.69572955 0.22516246]\n",
" [0.36706683 0.91357792 0.8193874 0.19461941 0.57656544]]\n"
]
}
],
"source": [
"# 5. Сгенерируйте случайную матрицу X размера 4x5\n",
"X = np.random.random((4, 5))\n",
"print(\"Случайная матрица X (4x5):\")\n",
"print(X)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Подматрица X (пересечение 2 и 3 строки, 1 и 2 столбца):\n",
"[[0.24317029 0.60157193]\n",
" [0.28515382 0.24164089]]\n",
"Определитель подматрицы (минор): -0.1127806495567304\n"
]
}
],
"source": [
"# 6. Найдите определитель подматрицы матрицы X, расположенной на пересечении 2 и 3 строки и 1 и 2 столбца\n",
"submatrix = X[1:3, 0:2]\n",
"det_submatrix = np.linalg.det(submatrix)\n",
"print(\"Подматрица X (пересечение 2 и 3 строки, 1 и 2 столбца):\")\n",
"print(submatrix)\n",
"print(f\"Определитель подматрицы (минор): {det_submatrix}\")"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Произведение X^T * X:\n",
"[[0.85639139 0.63135712 0.97697848 0.57548067 0.85835433]\n",
" [0.63135712 1.26614318 1.26555825 0.70553396 0.82639659]\n",
" [0.97697848 1.26555825 1.49738573 0.84567043 1.10909393]\n",
" [0.57548067 0.70553396 0.84567043 0.88350589 0.58009929]\n",
" [0.85835433 0.82639659 1.10909393 0.58009929 0.91813514]]\n"
]
}
],
"source": [
"# 7. Найдите произведение X^T * X\n",
"XT_X = np.dot(X.T, X)\n",
"print(\"Произведение X^T * X:\")\n",
"print(XT_X)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Часть 2. Время\n",
"\n",
"Питон мотивирует пользоваться библиотечными функциями, когда они доступны, а не писать собственные. Основной враг питониста - это циклы, которые в Питоне выполняются очень медленно. Библиотечные функции обычно пишутся на более эффективных языках, таких как C++ или Fortran, и обогнать эти решения просто так вы не сможете.\n",
"\n",
"Мы предлагаем вам убедиться в этом самим. Напишите функцию `my_det`, которая вычисляла бы определитель матрицы с помощью элементарных преобразований над строками. Функция должна выкидывать `ValueError` в случаях, если матрица не является квадратной."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"def my_det(X): \n",
" # Преобразуем входные данные в numpy массив\n",
" X = np.array(X, dtype=float)\n",
" \n",
" # Проверим, что матрица квадратная\n",
" rows, cols = X.shape\n",
" if rows != cols:\n",
" raise ValueError(\"Матрица не является квадратной.\")\n",
" \n",
" # Начальное значение определителя\n",
" det = 1.0\n",
" \n",
" # Применяем элементарные преобразования строк (метод Гаусса)\n",
" for i in range(rows):\n",
" # Проверяем, что главный элемент не равен нулю\n",
" if X[i, i] == 0:\n",
" # Если главный элемент равен 0, пытаемся поменять строки\n",
" for j in range(i + 1, rows):\n",
" if X[j, i] != 0:\n",
" X[[i, j]] = X[[j, i]] # Меняем строки местами\n",
" det *= -1 # Инвертируем знак определителя из-за перестановки\n",
" break\n",
" else:\n",
" # Если не удалось найти ненулевой элемент, определитель равен 0\n",
" return 0.0\n",
" \n",
" # Приводим строку так, чтобы главный элемент стал 1\n",
" pivot = X[i, i]\n",
" det *= pivot\n",
" X[i] = X[i] / pivot\n",
" \n",
" # Обнуляем элементы ниже главного\n",
" for j in range(i + 1, rows):\n",
" X[j] = X[j] - X[i] * X[j, i]\n",
" \n",
" return det"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Простая проверка:"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[0 0 1]\n",
" [0 1 0]\n",
" [1 0 0]]\n",
"-1.0\n"
]
}
],
"source": [
"# Запустите этот блок кода\n",
"X = np.array([[0,0,1], [0,1,0], [1,0,0]])\n",
"print(X)\n",
"print(my_det(X))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"На случай, если нам просто повезло с этой матрицей, имеет смысл написать чуть более хитрые тесты. Мы сгенерируем несколько случайных матриц $8\\times8$ с помощью функции `numpy.random.rand` и сравним ответ, выдаваемый нашей функцией, с настоящим определителем (результатом работы библиотечной функции `scipy.linalg.det`):"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"# Запустите этот блок кода\n",
"for _ in range(10):\n",
" X = np.random.rand(8,8)\n",
" if np.abs(my_det(X) - sla.det(X)) > 1e-6:\n",
" print('FAILED')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Если вы ни разу не получили `FAILED`, то ваша функция работает правильно."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Теперь давайте сравним скорость работы вашей функции и библиотечной функции `scipy.linalg.det`. В Питоне есть несколько способов измерения времени; мы воспользуемся декоратором `%timeit`. Будучи написан перед функцией, он запускает её некоторое количество раз, выбирает три случайных запуска и возвращает длительность самого быстрого из них. Модификатор `-o` между декоратором и функцией позволяет сохранять результаты работы декоратора в переменную.\n",
"\n",
"Приготовьтесь, что следующий блок может работать сравнительно долго."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"23 μs ± 3.49 μs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n",
"60.6 μs ± 712 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n",
"22 μs ± 1.05 μs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n",
"216 μs ± 4.43 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n",
"82.1 μs ± 26.8 μs per loop (mean ± std. dev. of 7 runs, 1 loop each)\n",
"826 μs ± 22.5 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x26c13473c20>"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Запустите этот блок кода\n",
"lib_times = []\n",
"my_times = []\n",
"dimensions = [5, 10, 20]\n",
"for dim in dimensions:\n",
" A = np.random.rand(dim, dim)\n",
" res_lib = %timeit -o sla.det(A)\n",
" lib_times.append(res_lib.best)\n",
" res_my = %timeit -o my_det(A)\n",
" my_times.append(res_my.best) \n",
"\n",
"plt.plot(dimensions, lib_times, color='blue', label='Library function')\n",
"plt.plot(dimensions, my_times, color='red', label='My function')\n",
"plt.title('My function vs library function, log y scale')\n",
"plt.ylabel('Time')\n",
"plt.xlabel('Matrix dimension')\n",
"plt.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"У вас должны были получиться графики, показывающие, как растёт с ростом размерности матрицы время вычисления определителя. Поскольку они вышли не больно-то красивыми, мы нарисуем их в *логарифмическом масштабе* по оси у:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x26c1348a810>"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Запустите этот блок кода\n",
"plt.semilogy(dimensions, lib_times, color='blue', label='Library function')\n",
"plt.semilogy(dimensions, my_times, color='red', label='My function')\n",
"plt.title('My function vs library function, log y scale')\n",
"plt.ylabel('Time')\n",
"plt.xlabel('Matrix dimension')\n",
"plt.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Вы можете убедиться, что библиотечная функция работает *гораздо* быстрее."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Часть 3. Точность\n",
"\n",
"Наверняка вы уже что-то знаете про floating point arithmetics и связанные с этим трудности и понимаете, что на компьютере вычисления с вещественными числами производятся лишь с ограниченной точностью. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"В качестве первого примера, показывающего различие между длинной арифметикой целых чисел и floating point arithmetics, предлагаем вам перемножить две пары матриц:\n",
"\n",
"$$\n",
"\\begin{pmatrix}\n",
"1 & 0\\\\\n",
"10^{20} & 1\n",
"\\end{pmatrix}\n",
"\\cdot\n",
"\\begin{pmatrix}\n",
"10^{-20} & 1\\\\\n",
"0 & 1 - 10^{20}\n",
"\\end{pmatrix}\n",
"$$\n",
"и\n",
"$$\n",
"\\begin{pmatrix}\n",
"1. & 0.\\\\\n",
"10.^{20} & 1.\n",
"\\end{pmatrix}\n",
"\\cdot\n",
"\\begin{pmatrix}\n",
"10.^{-20} & 1.\\\\\n",
"0. & 1. - 10.^{20}\n",
"\\end{pmatrix}\n",
"$$\n",
"Во втором случае мы специально указали Питону (поставив везде десятичные точки), что хотим работать не с целыми числами, а с числами с плавающей точкой. Посмотрим, получатся ли одинаковые ответы:"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Результат умножения целочисленных матриц:\n",
"[[1e-20 1]\n",
" [1.0 1]]\n",
"\n",
"Результат умножения матриц с числами с плавающей точкой:\n",
"[[1.e-20 1.e+00]\n",
" [1.e+00 0.e+00]]\n"
]
}
],
"source": [
"# Первая пара матриц\n",
"A_int = np.array([[1, 0], [10**20, 1]])\n",
"B_int = np.array([[10**-20, 1], [0, 1 - 10**20]])\n",
"\n",
"# Вторая пара матриц\n",
"A_float = np.array([[1., 0.], [10.**20, 1.]])\n",
"B_float = np.array([[10.**-20, 1.], [0., 1. - 10.**20]])\n",
"\n",
"# Умножение матриц\n",
"result_int = np.dot(A_int, B_int)\n",
"result_float = np.dot(A_float, B_float)\n",
"\n",
"# Вывод результатов\n",
"print(\"Результат умножения целочисленных матриц:\")\n",
"print(result_int)\n",
"\n",
"print(\"\\nРезультат умножения матриц с числами с плавающей точкой:\")\n",
"print(result_float)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"И какой из них правильный?\n",
"\n",
"---\n",
"**Напишите здесь свой ответ**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Впрочем, и с целыми числами тоже не всегда всё хорошо. Напишите функцию, генерирующую *матрицу Паскаля* заданной размерности $n$, то есть матрицу $P$, в которой $P_{ij} = C_{i+j}^i$. В этом задании нельзя пользоваться библиотечной функцией `scipy.linalg.pascal` или её аналогами из других библиотек. Обратите внимание, что использование факториалов крайне нежелательно, так как быстро приведёт к переполнению.\n",
"\n",
"В этом задании вы можете использовать цикл ``for``."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Матрица Паскаля:\n",
"[[1.000e+00 1.000e+00 1.000e+00 1.000e+00 1.000e+00 1.000e+00 1.000e+00\n",
" 1.000e+00 1.000e+00 1.000e+00]\n",
" [1.000e+00 2.000e+00 3.000e+00 4.000e+00 5.000e+00 6.000e+00 7.000e+00\n",
" 8.000e+00 9.000e+00 1.000e+01]\n",
" [1.000e+00 3.000e+00 6.000e+00 1.000e+01 1.500e+01 2.100e+01 2.800e+01\n",
" 3.600e+01 4.500e+01 5.500e+01]\n",
" [1.000e+00 4.000e+00 1.000e+01 2.000e+01 3.500e+01 5.600e+01 8.400e+01\n",
" 1.200e+02 1.650e+02 2.200e+02]\n",
" [1.000e+00 5.000e+00 1.500e+01 3.500e+01 7.000e+01 1.260e+02 2.100e+02\n",
" 3.300e+02 4.950e+02 7.150e+02]\n",
" [1.000e+00 6.000e+00 2.100e+01 5.600e+01 1.260e+02 2.520e+02 4.620e+02\n",
" 7.920e+02 1.287e+03 2.002e+03]\n",
" [1.000e+00 7.000e+00 2.800e+01 8.400e+01 2.100e+02 4.620e+02 9.240e+02\n",
" 1.716e+03 3.003e+03 5.005e+03]\n",
" [1.000e+00 8.000e+00 3.600e+01 1.200e+02 3.300e+02 7.920e+02 1.716e+03\n",
" 3.432e+03 6.435e+03 1.144e+04]\n",
" [1.000e+00 9.000e+00 4.500e+01 1.650e+02 4.950e+02 1.287e+03 3.003e+03\n",
" 6.435e+03 1.287e+04 2.431e+04]\n",
" [1.000e+00 1.000e+01 5.500e+01 2.200e+02 7.150e+02 2.002e+03 5.005e+03\n",
" 1.144e+04 2.431e+04 4.862e+04]]\n",
"Определитель: 0.9999999980116501\n"
]
}
],
"source": [
"def my_pascal(dim):\n",
" # Создаем нулевую матрицу размером dim x dim\n",
" P = np.zeros((dim, dim))\n",
"\n",
" for i in range(dim):\n",
" for j in range(dim):\n",
" # Если j == 0, то комбинация C_{i+j}^i = 1\n",
" if j == 0 or i == 0:\n",
" P[i, j] = 1\n",
" else:\n",
" # Используем рекуррентное соотношение для вычисления C_{i+j}^i\n",
" P[i, j] = P[i-1, j] + P[i, j-1]\n",
" return P\n",
"\n",
"# Пример использования функции\n",
"dim = 10\n",
"P = my_pascal(dim)\n",
"print(\"Матрица Паскаля:\")\n",
"print(P)\n",
"print(f\"Определитель: {np.linalg.det(P)}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Чему равен её определитель? Обязательно объясните свой ответ.\n",
"\n",
"----\n",
"**Ваше решение**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"А теперь вычислите определитель матрицы Паскаля $30\\times30$ с помощью библиотечной функции `scipy.linalg.det`:"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Определитель: 1.0\n"
]
}
],
"source": [
"dim = 5\n",
"P = my_pascal(dim)\n",
"print(f\"Определитель: {sla.det(P)}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Разница заметна невооружённым взглядом!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Часть 4. Матричные вычисления"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Вы уже видели, что использования циклов в Питоне лучше по возможности избегать, и важно уметь находить способы делать всё библиотечными средствами.\n",
"\n",
"В качестве примера рассмотрим две задачи:\n",
"\n",
"**1.** Предположим, нужно вычислить суммы элементов в каждой строке матрицы `A`. Ясно, что можно написать простую функцию с двумя циклами, которая это посчитает, но так лучше не делать. Правильный способ такой:\n",
"```\n",
"A.sum(axis=1)\n",
"```\n",
"Параметр `axis=1` означает, что суммы берутся по строкам. Если вы хотите просуммировать по столбцам, укажите `axis=0`. Если вообще пропустить параметр `axis` (вызвать `A.sum()`), то функция вернёт сумму *всех* элементов матрицы.\n",
"\n",
"**2.** Теперь допустим, что нам нужно каждый столбец матрицы `A` нужно умножить на некоторое число. Более точно, пусть у нас есть (одномерный) вектор `w = np.array([w_1,...,w_n])`, и мы должны `i`-й столбец `A` умножить на число `w_i`. Опять же, это можно сделать в пару циклов, но лучше использовать операцию поэлементного умножения:\n",
"```\n",
"A * w.reshape((1,n))\n",
"```\n",
"Оператор `reshape` нужен для того, чтобы из одномерного вектора сделать вектор-строку.\n",
"\n",
"Аналогично если на числа `w_1,...,w_n` умножаются *строки* матрицы, нужно превратить `w` в вектор-столбец:\n",
"```\n",
"A * w.reshape((n,1))\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Дальше вам будет предложено попрактиковаться в матричных вычислениях. В следующих трёх заданиях нельзя пользоваться циклами; вместо этого постарайтесь свести всё к библиотечным функциям. Чтобы убедиться, что получилось именно то, что нужно, пишите собственные тесты со случайными матрицами."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Задание 4.1** Напишите функцию `prod_and_sq_sum(A)`, вычисляющую произведение и сумму квадратов диагональных элементов квадратной матрицы `A`."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def prod_and_sq_sum(A):\n",
" # Извлекаем диагональные элементы\n",
" diag_elements = np.diag(A)\n",
" \n",
" # Вычисляем произведение диагональных элементов\n",
" product = np.prod(diag_elements)\n",
" \n",
" # Вычисляем сумму квадратов диагональных элементов\n",
" sum_squares = np.sum(diag_elements**2)\n",
" \n",
" return product, sum_squares"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Матрица A:\n",
"[[5 5 7 2]\n",
" [4 3 6 2]\n",
" [9 4 5 3]\n",
" [4 9 5 9]]\n",
"Произведение диагональных элементов: 675\n",
"Сумма квадратов диагональных элементов: 140\n"
]
}
],
"source": [
"# Тест\n",
"A = np.random.randint(1, 10, (4, 4)) # случайная квадратная матрица 4x4\n",
"print(f\"Матрица A:\\n{A}\")\n",
"product, sum_squares = prod_and_sq_sum(A)\n",
"print(f\"Произведение диагональных элементов: {product}\")\n",
"print(f\"Сумма квадратов диагональных элементов: {sum_squares}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Задание 4.2** Для матриц `A` и `B` размера $m\\times n$ обозначим через $a_1,\\ldots,a_m$ и $b_1,\\ldots,b_m$ соответственно их столбцы. Напишите функцию `f(A, B, k)`, вычисляющую\n",
"\n",
"$$\\sum_{i=1}^{\\min(k,m)}a_ib_i^T$$"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def f(A, B, k):\n",
" # Извлекаем первые k столбцов из A и B\n",
" A_k = A[:, :k]\n",
" B_k = B[:, :k]\n",
" \n",
" # Рассчитываем произведение B_k.T и A_k\n",
" result = A_k @ B_k.T\n",
" \n",
" return result"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Матрица A:\n",
"[[2 1 2]\n",
" [8 3 9]\n",
" [3 5 4]\n",
" [4 2 3]]\n",
"Матрица B:\n",
"[[5 4 9]\n",
" [4 5 4]\n",
" [3 1 8]\n",
" [5 2 7]]\n",
"Результат:\n",
"[[14 13 7 12]\n",
" [52 47 27 46]\n",
" [35 37 14 25]\n",
" [28 26 14 24]]\n"
]
}
],
"source": [
"# Тест\n",
"m, n = 4, 3\n",
"A = np.random.randint(1, 10, (m, n))\n",
"B = np.random.randint(1, 10, (m, n))\n",
"k = 2\n",
"\n",
"print(f\"Матрица A:\\n{A}\")\n",
"print(f\"Матрица B:\\n{B}\")\n",
"result = f(A, B, k)\n",
"print(f\"Результат:\\n{result}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Задание 4.3** Напишите функцию `get_diag(A,B)`, принимающую две матрицы `A` и `B` и возвращающую вектор диагональных элементов произведения `AB`, не вычисляя произведение целиком. "
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def get_diag(A, B):\n",
" # Проверяем, что количество столбцов A совпадает с количеством строк B\n",
" assert A.shape[1] == B.shape[0], \"Матрицы не могут быть перемножены\"\n",
" \n",
" # Вычисляем диагональные элементы произведения A и B\n",
" diag_elements = np.einsum('ij,ji->i', A, B)\n",
" \n",
" return diag_elements"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Матрица A:\n",
"[[6 8 4 1]\n",
" [4 7 5 2]\n",
" [3 5 4 4]\n",
" [6 5 6 2]]\n",
"Матрица B:\n",
"[[9 8 1 8]\n",
" [7 9 9 4]\n",
" [2 1 9 4]\n",
" [9 7 9 8]]\n",
"Диагональные элементы произведения AB: [127 114 120 108]\n"
]
}
],
"source": [
"# Тест\n",
"A = np.random.randint(1, 10, (4, 4))\n",
"B = np.random.randint(1, 10, (4, 4))\n",
"\n",
"print(f\"Матрица A:\\n{A}\")\n",
"print(f\"Матрица B:\\n{B}\")\n",
"diag_elements = get_diag(A, B)\n",
"print(f\"Диагональные элементы произведения AB: {diag_elements}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Метод Гаусса или обратные матрицы?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Пусть нам дано матричное уравнение $Ax = B$, где $A$ --- матрица размера $n\\times n$, а $B$ --- матрица размера $n\\times m$ (отметим, что это уравнение можно интерпретировать как $m$ систем с векторными правыми частями и однаковыми левыми). Вообще говоря, методов решения таких уравнений очень много, но мы пока рассмотрим два из них, с которыми вы уже хорошо знакомы.\n",
"1. Метод Гаусса;\n",
"2. Умножение на обратную матрицу: $x = A^{-1}B$.\n",
"\n",
"В этом задании вы попробуете ответить на вопрос о том, какой из этих методов эффективнее. Проведите два эксперимента:\n",
"- сравните скорости решения системы при фиксированном `m = 10` и `n`, изменяющемся в пределах от 10 до 1000, например, для `n=10, 50, 100, 200, 500, 1000` (рост числа неизвестных при фиксированном количестве правых частей);\n",
"- сравните скорости решения системы при фиксированном `n = 100` и `m`, меняющемся от 10 до 10000, например, для `m = 10, 100, 500, 1000, 2000, 5000, 10000` (рост числа правых частей при фиксированном числе неизвестных).\n",
"\n",
"При проведении экспериментов не возбраняется использовать циклы `for`.\n",
"\n",
"Эксперименты проведите на случайных матрицах, созданных с помощью функции `numpy.random.rand`. Постройте графики времени выполнения функции от размерности (лучше в логарифмическом масштабе). Сделайте выводы (в письменном виде!) о том, какой их методов оказывается лучше в каких обстоятельствах.\n",
"\n",
"Чтобы всё это не казалось вам чёрной магией, найдите число операций (суммарно сложения, умножения и деления), необходимых для решения системы каждым из методов. Обратите внимания на члены степени 3 (члены меньшего порядка можете даже не считать). Постарайтесь объяснить полученные ранее результаты."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"from numpy.linalg import inv, solve\n",
"\n",
"# Функции для измерения времени выполнения двух методов\n",
"def gauss_method(A, B):\n",
" # Решение системы Ax = B методом Гаусса (эквивалент функции np.linalg.solve)\n",
" return solve(A, B)\n",
"\n",
"def inverse_method(A, B):\n",
" # Решение системы Ax = B через умножение на обратную матрицу\n",
" A_inv = inv(A)\n",
" return A_inv @ B\n",
"\n",
"# Параметры эксперимента\n",
"n_values = [10, 50, 100, 200, 500, 1000, 5000]\n",
"m_values = [10, 100, 500, 1000, 2000, 5000, 10000]\n",
"\n",
"# Списки для хранения времени выполнения\n",
"gauss_times_n = []\n",
"inverse_times_n = []\n",
"\n",
"gauss_times_m = []\n",
"inverse_times_m = []"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"24.4 μs ± 1.16 μs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n",
"27.2 μs ± 1.03 μs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n",
"113 μs ± 3.96 μs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n",
"159 μs ± 10.5 μs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n",
"271 μs ± 12.9 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n",
"478 μs ± 53.5 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n",
"864 μs ± 63.8 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n",
"1.75 ms ± 168 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n",
"8.28 ms ± 671 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n",
"22.7 ms ± 1.95 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n",
"45.9 ms ± 2.31 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n",
"156 ms ± 11 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n",
"3.74 s ± 219 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n",
"12.7 s ± 424 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
]
}
],
"source": [
"# Эксперимент 1: изменение n при фиксированном m = 10\n",
"m_fixed = 10\n",
"for n in n_values:\n",
" A = np.random.rand(n, n)\n",
" B = np.random.rand(n, m_fixed)\n",
" \n",
" # Метод Гаусса\n",
" res_gauss = %timeit -o gauss_method(A, B)\n",
" gauss_times_n.append(res_gauss.best)\n",
" \n",
" # Умножение на обратную матрицу\n",
" res_inverse = %timeit -o inverse_method(A, B)\n",
" inverse_times_n.append(res_inverse.best)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"300 μs ± 43.9 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n",
"413 μs ± 17.4 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n",
"397 μs ± 22.1 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n",
"492 μs ± 24.2 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n",
"1.06 ms ± 27.9 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n",
"785 μs ± 19.5 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n",
"4.23 ms ± 229 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n",
"1.19 ms ± 33.4 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n",
"6.87 ms ± 214 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n",
"3.49 ms ± 175 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n",
"16.6 ms ± 276 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n",
"7.87 ms ± 246 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n",
"33 ms ± 1.51 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n",
"15.2 ms ± 437 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n"
]
}
],
"source": [
"# Эксперимент 2: изменение m при фиксированном n = 100\n",
"n_fixed = 100\n",
"for m in m_values:\n",
" A = np.random.rand(n_fixed, n_fixed)\n",
" B = np.random.rand(n_fixed, m)\n",
" \n",
" # Метод Гаусса\n",
" res_gauss = %timeit -o gauss_method(A, B)\n",
" gauss_times_m.append(res_gauss.best)\n",
"\n",
" # Умножение на обратную матрицу\n",
" res_inverse = %timeit -o inverse_method(A, B)\n",
" inverse_times_m.append(res_inverse.best)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABKMAAAJOCAYAAABr8MR3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAD/gklEQVR4nOzdd3hU1dbH8e+k94Q0IKTQe4ckVAEVEVRAsUFEULDi9VXutV4VFXu/3gt2BTUURcGKiCIoLXSkKj1AEiABEtKTmfP+cZIJYygJQibl93mePDr7nJlZMySZlXX2XttiGIaBiIiIiIiIiIhIFXBxdgAiIiIiIiIiIlJ3qBglIiIiIiIiIiJVRsUoERERERERERGpMipGiYiIiIiIiIhIlVExSkREREREREREqoyKUSIiIiIiIiIiUmVUjBIRERERERERkSqjYpSIiIiIiIiIiFQZFaNERERERERERKTKqBhVB/3+++/ccsstNGnSBC8vL/z8/OjatSsvvfQSR48edXZ4IjXCK6+8gsViYe/evc4OReS8+fbbb7n55pvp0KED7u7uWCyW055bVFTEU089RePGjfH09KR169b897//rcJoRS485Uwif59yJqnJtmzZwt13303Pnj3x9fXFYrGwePHi054/a9YsOnfujJeXFxEREdx3331kZ2eXOy87O5v77ruPiIgIvLy86Ny5M7NmzbqAr6T6cXN2AFK13nvvPe6++25atWrFAw88QNu2bSkqKmLNmjW8/fbbrFixgrlz5zo7TBERcYK5c+eycuVKunTpgqenJ2vXrj3tuXfffTeffPIJkydPJjY2lgULFvB///d/nDhxgkcffbQKoxa5MJQziYjImjVrmDdvHl26dOGSSy7hm2++Oe25iYmJ3HTTTYwfP57XX3+dP//8k4ceeoitW7fy448/Opx7zTXXsHr1al544QVatmzJjBkzGDlyJDabjVGjRl3ol1U9GFJnLF++3HB1dTUuv/xyIz8/v9zxgoIC46uvvnJCZCI1z8svv2wAxp49e5wdish5Y7Va7f8/YcIE43RpwubNmw2LxWI899xzDuO33Xab4e3tbWRkZFzQOEUuNOVMIuePciapyU7OjT7//HMDMH755Zdy5xUXFxsNGzY0LrvsMofxxMREAzC+//57+9h3331nAMaMGTMczh04cKARERFhFBcXn98XUU1pmV4d8txzz2GxWHj33Xfx9PQsd9zDw4OhQ4fabzdu3JixY8fab1utVm666Sb8/f1ZunSpw30//PBDOnXqhJeXF8HBwVx99dVs27bN4ZyxY8fi5+fHli1buOSSS/D19SUsLIx77rmH3Nxch3Pz8/N55JFHaNKkCR4eHjRq1IgJEyZw/PjxcnHPmDGDnj174ufnh5+fH507d+aDDz4AoH///lgsljN+lbJYLNxzzz0Vfj9P1rhxY6688krmzp1Lx44d8fLyomnTprz55pvlzs3KyuJf//qXw2u77777yMnJcTjvVPFceeWVNG7c2GHs7bffxmKxsHnzZofx2bNn26eT+vn5MWjQINavX+9wTum/yV/NmTOn3BTU/v37079/f4fzfvvtt3LvI0BaWhq33norUVFRuLm5ObzfZ5uifbZ/s5PvX9H3ffHixaecUnvppZdisVh48sknzxhT6WO0b98eb29vRowYwYkTJwBYu3YtHTp0wNvbm6FDh3Lo0CGH+53q8SdPnozFYnF4P08V465du4iKiqJv374O03sLCgp4+umnadOmDV5eXoSEhDBgwACWL19+zs/76aefMnHiRBo0aIC3tzf9+vUr9/0C8PXXX9OzZ098fHzw9/dn4MCBrFixwuGcJ5980uHfrHRZy4wZMxzOW7NmDTfeeCONGzfG29ubxo0bM3LkSPbt2+dw3rRp07BYLKxZs8ZhPD09vdzrLH3u9PT0cs9lsViYNm3aOb+e0NBQ8vPzHY5Nnz7d/jr/+px/Vfrztn37dgYNGoSvry8NGzbkhRdeAGDlypX06dMHX19fWrZsyfTp08/4eBeCi0vF0oJ58+ZhGAa33HKLw/gtt9xCXl4eP/zww4UIT6TKKGdSzqScabHDuHIm5UzOyJl27tzJkCFD8PPzIyoqin/+858UFBSc8b7nW0Vzo5UrV5KamlouN7ruuuvw8/NzmEk7d+5c/Pz8uO666xzOveWWW0hJSSEpKenvB14DqBhVR1itVhYtWkS3bt2Iioqq9P1tNhtjxozhq6++Yv78+fTp08d+7Pnnn2fcuHG0a9eOL7/8kv/85z/8/vvv9OzZkx07djg8TlFREUOGDOGSSy5h3rx53HPPPbzzzjvccMMN9nMMw2D48OG88sorjB49mu+++46JEycyffp0Lr74YodfQE888QQJCQlEREQwbdo05s6dy5gxY+y/mKdOncqKFStYsWIFX375JQCPPfaYfeyvv0D/jg0bNnDfffdx//33M3fuXHr16sX//d//8corr9jPyc3NpV+/fkyfPp17772X+fPn89BDDzFt2jSGDh2KYRjnJZbnnnuOkSNH0rZtWz777DM++eQTTpw4Qd++fdm6det5eQ6r1cqECRNwdXUtd2zMmDF89tlnPPzwwyxevJgVK1bwj3/8o8KP3bRpU4d/ozPdvyLv+6l89tlnZ1zvfbKDBw9yxRVXEBgYyOeff0737t154403APj3v//Nk08+yZQpU1i+fDnXX3/9GR9r3759PP/886d83062a9cu+vfvT+PGjZk/f749AS4uLmbw4MFMnjzZnlROmzaNXr16kZycfM7P++ijj7J7927ef/993n//fVJSUujfvz+7d++2nzNjxgyGDRtGQEAAM2fO5IMPPuDYsWP079+/3B9bgP3fbvbs2QQFBXHTTTc5fLju3buXVq1a8cYbb7BgwQJefPFFUlNTiY2NPWuScj5U9vUYhlEuOZwyZQohISEVfs6ioiKuueYarrjiCr766isGDx7MI488wqOPPsqYMWO49dZbmTt3Lq1atWLs2LFnXCZXymq1UlxcfNYvm81W4TjPZvPmzYSFhdGgQQOH8Y4dO9qPi9RUypmUMylncqScyZFypqrLmYYOHcoll1zCV199xa233srrr7/Oiy++eNb72my2CuVGVqu1wvGcTWnuU5oLlXJ3d6d169YOudHmzZtp06YNbm6OXZPqXB7lxFlZUoXS0tIMwLjxxhsrfJ+YmBhjzJgxhtVqNW666SbDz8/P+O233xzOOXbsmOHt7W0MGTLEYTw5Odnw9PQ0Ro0aZR8bM2aMARj/+c9/HM599tlnDcBYunSpYRiG8cMPPxiA8dJLLzmcN3v2bAMw3n33XcMwDGP37t2Gq6urkZCQUKHXs2fPHgMwPvroo1MeB4wJEyZU6LH+KiYmxrBYLMaGDRscxgcOHGgEBAQYOTk5hmEYxvPPP2+4uLgYq1evdjhvzpw55aZvniqeK664woiJiXEYe+uttwzA2LRpk2EY5nvv5uZm/OMf/3A478SJE0aDBg2M66+/3j42ZswYw9fXt9zrOdUU1H79+hn9+vWz337jjTcMX19f49Zbby23lMfX19cYPXq0w1hFp2j369fPaNeuXbnx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zz33UFxczIQJE8jMzOTbb79l0qRJPPzww/b7FBQU2D+I/+rjjz+mTZs29tuZmZlceumlpzz3p59+ckict23b5vBvfi6vB+Cee+4hLi6O4OBgunXrRteuXSuVWF0IzZo1q9BVwkmTJlWo8WxFdOjQgVmzZpGWlubw/b5p0yYAhwRapKZRzlQxyplMypkcKWdSzlTKmTnTrbfeWqGNYE43A/JcdOjQATBzobZt29rHi4uL2b59OyNHjnQ4d+bMmRQXFzv0japreZSW6dUhjzzyCIZhcNttt1FYWFjueFFREd98843D2IgRI+jTpw8NGzbkvffe49NPP3VoRtezZ0+8vb359NNPHe534MABFi1axCWXXFLueRITEx1ulz5e6ZW00vv89TG/+OILcnJy7Mcvu+wyXF1deeuttyry8iskLCyM7t27Exsby7Bhw/j3v/9NXl5ehZrIbdmyxX5FpNSMGTPw9/ena9eugLmzy65duwgJCaF79+7lvipyJelsBg0ahJubG7t27Trlc3Tv3t3hfBcXl3LHmzZtesrHtlqt3HPPPYwYMcLhw/6viouLSUhIoH379rz44ot07979vF6NPVlF3vdSc+bMYdGiRfzvf/+r1HN07dqVzZs32xMnKEtETk5ISpdD/PV5k5OTee6553jmmWfKXb3+q8mTJ+Pn58ftt9/OVVddxZgxYxySusGDB5Ofn19uh5NTqczzzpw502F2zb59+1i+fLn957JVq1Y0atSIGTNmOJyXk5PDF198Yd9d5WSl3099+vTh3//+N+3atbP//FssFgzDKLdL1fvvv3/aqeRt2rRx+D7961KDk3Xq1Mnh3JMTsnN9PQCdO3cmPj6eqVOnnvNOUuebM5bpDRs2DIvFUi7RmzZtGt7e3lx++eXn7blEnEE509kpZ1LOdCrKmZQzlXJmzuSMZXrx8fE0bNiw3PfbnDlzyM7O5pprrrGPXX311WRnZ/PFF184nDt9+nQiIiKIj48/b3FVZ5oZVYf07NmTt956i7vvvptu3bpx11130a5dO4qKili/fj3vvvsu7du3L7c2t9TVV1/NuHHjuOuuu+jVqxeNGzcmKCiIxx9/nEcffZSbb76ZkSNHkpGRwVNPPYWXlxeTJk1yeAwPDw9effVVsrOziY2NZfny5TzzzDMMHjzY3lth4MCBDBo0iIceeoisrCx69+7N77//zqRJk+jSpQujR48GzC1qH330USZPnkxeXh4jR44kMDCQrVu3kp6ezlNPPVXp9+j48eNs377dfkXxtddew9vb217pPpOIiAiGDh3Kk08+ScOGDfn0009ZuHAhL774ov0X9H333ccXX3zBRRddxP3330/Hjh2x2WwkJyfz448/8s9//tPhl09pPKVycnIoKipyGPvrtriNGzfm6aef5t///je7d+/m8ssvp169ehw6dIhVq1bh6+t7Tu8NmP0uvLy8yiXgf/Xkk0+ydetW1q9fX26XiPOtIu97qbfffpsJEyac8QP5VO6//37efvttrrnmGh5++GE2bdrE+++/D5hXXiZPnkxWVhYPPvggPXv2ZMCAAQ73//jjj+nYsSN33nlnpZ73gw8+oEOHDowfP5558+YBMHLkSD766CPuvPNO/vjjDwYMGIDNZiMpKYk2bdpw4403ntPzHj58mKuvvprbbruNzMxMJk2ahJeXF4888ghgJuAvvfQSCQkJXHnlldxxxx0UFBTw8ssvc/z4cV544YVyj7ly5Uqg7Crf5s2bueOOOwAICAjgoosu4uWXXyY0NJTGjRuzZMkSPvjgA4c+ExfKubyeUh9//DG7du2iX79+FzzOiqjI76eK2rdvn/3q7K5duwAziQLzd0vpH2bt2rVj3LhxTJo0CVdXV2JjY/nxxx959913eeaZZ+rM9HKpvZQznZ1ypjNTzqScSTmT83Kmxo0bn5eCNZg7e37//fdA2b/TkiVLSE9Px9fXl8GDBwPmrNqXXnqJ0aNHc8cddzBy5Eh27NjBgw8+yMCBAx0u1A0ePJiBAwdy1113kZWVRfPmzZk5cyY//PADn3766Vl3kKw1qrhhulQDGzZsMMaMGWNER0cbHh4ehq+vr9GlSxfjiSeeMA4fPmw/r3RnmJNlZ2cbzZs3N3r37m0UFxfbx99//32jY8eOhoeHhxEYGGgMGzbM2LJli8N9S3ch+f33343+/fsb3t7eRnBwsHHXXXcZ2dnZDufm5eUZDz30kBETE2O4u7sbDRs2NO666y6HnTlKffzxx0ZsbKzh5eVl+Pn5GV26dDnl7i8V2Rmm9MtisRghISHGxRdffMrdEv4qJibGuOKKK4w5c+YY7dq1Mzw8PIzGjRsbr732Wrlzs7Ozjccee8xo1aqV/f3q0KGDcf/99xtpaWmnjKciX6U7w5SaN2+eMWDAACMgIMDw9PQ0YmJijGuvvdb46aef7OdUdmcYwHj++ecdzv3rLiC//fab4erqarzzzjsO512onWEq8r6X7n4SHh5uHD9+3OEYFdxlbOHChUabNm0MLy8vY8SIEfbX/cUXXxjt27c3vLy8jCFDhhgpKSnlHt9isRjLly8v9zpPtzPMyebPn29YLBbjrbfeso/l5eUZTzzxhNGiRQvDw8PD/r168nNU9nk/+eQT49577zXCwsIMT09Po2/fvsaaNWvKvQ/z5s0z4uPjDS8vL8PX19e45JJLjGXLljmcU/relH55enoaTZs2Nf71r38Zubm59vMOHDhgjBgxwqhXr57h7+9vXH755cbmzZvL/e65EDvDnMvrOd3OL2c7Xup0P2+n+54v/f6uSqXv9am+/vp5UFhYaEyaNMn+WdKyZUvjzTffrNJ4RS405UzljxmGcqaTKWcqTzmTSTlTeX83ZzrV7oMXWunvw1N9/XXHTsMwjBkzZth/xzdo0MC49957y+30aBjmboT33nuv0aBBA8PDw8Po2LGjMXPmzCp4RdWHxTAq0PVU5DwYO3asfZpibdO4cWPat2/Pt99+6+xQ6hRnvu+vvPIKDzzwAHv27DlvV16cYfHixQwYMIDPP/+ca6+91tnhiIgIypnk/FPO9PcpZxI5v9QzSkREREREREREqoyKUSIiIiIiIiIiUmW0TE9ERERERERERKqMZkaJiIiIiIiIiEiVUTFKRERERERERESqjIpRIiIiIiIiIiJSZdycHUB1Z7PZSElJwd/fH4vF4uxwREREpIoYhsGJEyeIiIjAxUXX7ypKuZOIiEjdVJncScWos0hJSSEqKsrZYYiIiIiT7N+/n8jISGeHUWModxIREanbKpI7qRh1Fv7+/oD5ZgYEBDg5GhEREakqWVlZREVF2XMBqRjlTiIiInVTZXInFaPOonR6eUBAgBIqERGROkhLzSpHuZOIiEjdVpHcSQ0QRERERERERESkyqgYJSIiIiIiIiIiVUbFKBERERERERERqTLqGXUaU6ZMYcqUKVit1gqdb7VaKSoqusBRiUhFeXh4aCt2EZFqymazUVhY6OwwROQkyp1EpCpZDMMwnB1EdZaVlUVgYCCZmZmnbMJpGAZpaWkcP3686oMTkdNycXGhSZMmeHh4ODsUEamhzpYDyKmd7X0rLCxkz5492Gw2J0QnIqej3ElE/q7K5E6aGfU3lRaiwsPD8fHx0Y47ItWAzWYjJSWF1NRUoqOj9XMpIlJNGIZBamoqrq6uREVFaRaGSDWh3ElEqpqKUX+D1Wq1F6JCQkKcHY6InCQsLIyUlBSKi4txd3d3djgiIgIUFxeTm5tLREQEPj4+zg5HRE6i3ElEqpIuR/0NpT2ilEyJVD+lU8wr2vdNREQuvNLfyVoGJFL9KHcSkaqkYtR5oGmsItWPfi5FRKov/Y4WqX70cykiVUnFKBERERERERERqTIqRomIiIiIiIiISJVRMaoOGjt2LBaLhTvvvLPcsbvvvhuLxcLYsWOrPrBzUPpa/vpVU+IXERGR6k+5k4iIyPmlYlQdFRUVxaxZs8jLy7OP5efnM3PmTKKjo50YWeVdfvnlpKamOnz95z//cXZYIiIiUosodxIRETl/VIyqo7p27Up0dDRffvmlfezLL78kKiqKLl26OJxrGAYvvfQSTZs2xdvbm06dOjFnzhwA9u7de8qra6Vfe/fuBWDJkiXExcXh6elJw4YNefjhhykuLnZ4nsWLF5e7f1BQ0Flfi6enJw0aNHD4CgwMBCAjI4ORI0cSGRmJj48PHTp0YObMmfb7fvzxx4SEhFBQUODwmCNGjODmm2+23/7666/p3r07Xl5ehIaGcs0119iPFRQU8OCDDxIVFYWnpyctWrTggw8+AMzdSMaNG0eTJk3w9vamVatWSvZERERqIOVOJuVOIiJyPqgYdR4ZhkFuYbFTvgzDqHS8t9xyCx999JH99ocffsitt95a7rzHHnuMjz76iLfeeostW7Zw//33c9NNN7FkyRKioqLsV9RWrVoFwKpVq+xjUVFRHDx4kCFDhhAbG8vGjRt56623+OCDD3jmmWdOGdcff/xBamoqb7zxRqVf01/l5+fTrVs3vv32WzZv3sztt9/O6NGjSUpKAuC6667DarXy9ddf2++Tnp7Ot99+yy233ALAd999xzXXXMMVV1zB+vXr+fnnn+nevbv9/JtvvplZs2bx5ptvsm3bNt5++238/PwAsNlsREZG8tlnn7F161aeeOIJHn30UT777LO//dpERERqOuVOyp2UO4mI1E1uzg6gNskrstL2iQVOee6tTw/Cx6Ny/5yjR4/mkUcesV+hW7ZsGbNmzWLx4sX2c3JycnjttddYtGgRPXv2BKBp06YsXbqUd955h379+tGgQQPATF4AwsLC7GMAU6dOJSoqiv/9739YLBZat25NSkoKDz30EE888QQuLmZNtPQKW6NGjfD19bVfofs7GjVqxL/+9S/77X/84x/88MMPfP7558THx+Pt7c2oUaP46KOPuO666wBITEwkMjKS/v37A/Dss89y44038tRTT9kfp1OnTgD8+eeffPbZZyxcuJBLL73U/v6Ucnd3d7hfkyZNWL58OZ999hnXX3/93359IiIiNZlyJ+VOpe9PKeVOIiJ1g4pRdVhoaChXXHEF06dPxzAMrrjiCkJDQx3O2bp1K/n5+QwcONBhvLCwsNyU9NPZtm0bPXv2xGKx2Md69+5NdnY2Bw4csPdZyMjIwNXVFR8fn7/5yspYrVZeeOEFZs+ezcGDBykoKKCgoABfX1/7ObfddhuxsbEcPHiQRo0a8dFHH9mbewJs2LCB22677ZSPv2HDBlxdXenXr99pY3j77bd5//332bdvH3l5eRQWFtK5c+fz9hpFRESkaih3Mil3EhGRv0vFqPPI292VrU8Pctpzn4tbb72Ve+65B4ApU6aUO26z2QBzunWjRo0cjnl6elboOQzDcEimSscAh/Hdu3cTExNT7ty/49VXX+X111/njTfeoEOHDvj6+nLfffdRWFhoP6dLly506tSJjz/+mEGDBrFp0ya++eYb+3Fvb+/TPv6ZjgF89tln3H///bz66qv07NkTf39/Xn75ZftUdxERkbpMudOpKXdS7iQiUtupGHUeWSyWSk/3drbLL7/cnlwMGlQ+GWzbti2enp4kJyef8QrWmbRt25YvvvjCIbFavnw5/v7+DknakiVL6Nu37zk9x+n89ttvDBs2jJtuugkwE8QdO3bQpk0bh/PGjx/P66+/zsGDB7n00kuJioqyH+vYsSM///yzvQ/CyTp06IDNZmPJkiX2qeZ/ff5evXpx991328d27dp1vl6eiIgAGAacxz/Gpeoodzo15U7KnUREajs1MK/jXF1d2bZtG9u2bcPVtfwVQn9/f/71r39x//33M336dHbt2sX69euZMmUK06dPr9Bz3H333ezfv59//OMfbN++na+++opJkyYxceJEXFxcKCws5IsvvmDRokVcddVVpKWlkZaWRmZmJoZhcOTIkXN+fc2bN2fhwoUsX76cbdu2cccdd5CWllbuvISE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eP9FrHr0El6/oTPXdY9SIeocVfuZUc5yTj2jDAOKci9cUGfi7lPh5P///u//6Nq1KwsXLuSyyy7jP//5Dz179qR79+4O52VkZLBy5Up69OgBwLvvvkujRo0qHdp//vMfXn31Vd555x26dOnChx9+yNChQ9myZQstWrSgZcuWfPXVV1x++eVEREQwaNAgh/u//vrrfP7556xYscK+ZHLBggXcdNNNvPnmm/Tt25ddu3Zx++23AzBp0qRKxwjmB/Y///lP/Pz8HMYfe+wxvvzyS9566y1atGjBr7/+yk033URYWBj9+vU7p+cCyMnJsSeKOTk5PPHEE1x99dVs2LABF5dT14kffPBBvvjiC6ZPn05MTAwvvfQSgwYNYufOnQQHB3PkyBEWLVrEsGHD+O233zh27Bi33347t956K1988YX9cX7++We8vLz45Zdf2Lt3L7fccguhoaE8++yzFYotNTXV/lgNGzbkiy++oFevXgAEBweTkpJy1tc/fvx4LrroIlJTU+1XIr///nuys7O5/vrry53/0ksv8fTTTzN16lR69erF7Nmzueaaa1i7dq1DAi8i51necdg4E1Z/ABk7ysYb94XYcdD6SjUkl3On3OmUlDudmnIn5U4i50t2QTGr9mSwbKfZeHx72gmH4+6uFrpG1ytpOh5Kp8hA3Fyr/VyeGkXFqNM4p55RRbnwnJO2qX40BTx8z34e0KVLF/r06cObb75JkyZNmD9//ikbNN56662899579OjRg+TkZNatW8c111zD1q1bKxXaK6+8wkMPPcSNN94IwIsvvsgvv/zCG2+8wZQpUwDo1asX06dP54YbbuCXX36x3/fzzz9n8uTJLFmyhMjISPv4s88+y8MPP8yYMWMAaNq0KZMnT+bBBx8854Rq+vTp5OfnM2zYMLKzswEzsXjttddYtGgRPXv2tD/X0qVLeeedd/5WQjVixAiH2x988AHh4eFs3bqV9u3blzs/JyeHt956i2nTpjF48GAA3nvvPRYuXMgHH3zAAw88gM1mIygoiE8//dSeGL7//vv07duXnTt30rx5c8Bs/v/hhx/i4+NDu3btePrpp3nggQeYPHkyLi4uZ42tQYMGDseDg4PLjZ1Nr169aNWqFZ988gkPPvggAB999BHXXXdduaTWMAzeeOMN7rnnHsaOHQvA448/zm+//cYrr7zCp59+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3By+0ndiZNQZBAQEqHnz5h67fr169fgPzwS0u/fR5uag3b2PNjeHp9qdEVGu83TfSeK/MzPQ5t5Hm5uDdvc+2twcZved+JoPAAAAAAAAXkMyCgAAAAAAAF5DMsokoaGhmjt3rkJDQ80OpU6h3b2PNjcH7e59tLk5aPe6hd+399Hm3kebm4N29z7a3By+0u4UMAcAAAAAAIDXMDIKAAAAAAAAXkMyCgAAAAAAAF5DMgoAAAAAAABeQzLKJM8//7zatGmjsLAw9enTR99++63ZIfmNlStXavz48UpISJDFYtGiRYvKHTcMQw888IASEhIUHh6u4cOHa/PmzeXOKSoq0i233KL4+HhFRkbqoosu0m+//VbunGPHjmnKlCmKiYlRTEyMpkyZouPHj3v43fmeefPmKTk5WdHR0WrUqJEmTpyobdu2lTuHNne/BQsWqHv37qpXr57q1aunAQMG6NNPP3Uep809b968ebJYLJo5c6ZzH+3ufg888IAsFku5nyZNmjiP0+ZwoO9UM3yOm4/PE+/Zt2+frrrqKjVo0EARERHq2bOn0tPTncdpd/crLS3VfffdpzZt2ig8PFxt27bVQw89JJvN5jyHdj87vvT37549ezR+/HhFRkYqPj5et956q4qLi2v2xgx43dtvv20EBwcbL774opGZmWncdtttRmRkpLF7926zQ/MLS5cuNe69917j/fffNyQZH374Ybnjjz76qBEdHW28//77xsaNG43LLrvMaNq0qZGTk+M8Z/r06UazZs2MZcuWGWvXrjVGjBhh9OjRwygtLXWec8EFFxhJSUnGd999Z3z33XdGUlKSMW7cOG+9TZ8xevRo4+WXXzY2bdpkZGRkGBdeeKHRsmVLIzc313kObe5+ixcvNpYsWWJs27bN2LZtm3HPPfcYwcHBxqZNmwzDoM097aeffjJat25tdO/e3bjtttuc+2l395s7d67RtWtXIysry/lz6NAh53HaHIZB3+ls8DluLj5PvOfo0aNGq1atjGnTphk//vijsWvXLuPLL780duzY4TyHdne/v//970aDBg2MTz75xNi1a5fx3nvvGVFRUcb8+fOd59DuZ8dX/v4tLS01kpKSjBEjRhhr1641li1bZiQkJBg333xzjd4XySgT9OvXz5g+fXq5fZ07dzbuuusukyLyX3/8j9FmsxlNmjQxHn30Uee+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Z0f7nuqiiy7SokWLVFBQcJrWAgDAdcOHD9ctt9yimTNnKjY2Vo0bN9bChQuVl5ena665RtHR0WrXrp0+/fTT017n3XffVY8ePcolol555RXVr1/f+XzPnj1q2bKl7r77bue+Y8eO6eqrr1ZsbKwiIiI0ZswY/fzzzxWuX9lneEZGRqX3kaQhQ4aUO6eyz94/fmafOHFCf/nLX9SoUSPVq1dP5557rtavX1/uNYsXL1bfvn0VFham+Ph4TZo0ydmO1elrOPZFRkZq4MCBWrNmjfPaNptNDz30kJo3b67Q0FD17NlTn3322emavcr7nvpeHf2QBx980PnebrzxRhUXFzvP+eyzzzR48GDVr19fDRo00Lhx4/TLL784jzv6no6fuLg4TZo0SdnZ2VW256kmTpyoadOmSZK2bt2qiIgIvfnmm87jH3zwgcLCwqrsG1bn9/fUU0+pW7duioyMVIsWLTRjxgzl5uaWe83q1as1bNgwRUREKDY2VqNHj9axY8c0bdq0Kn9/jrir2989fvy46tWrp7i4OF111VUV+o/dunVTkyZN9OGHH1b6XgFPIBkFQK+++qoiIyP1448/6vHHH9dDDz2kZcuWVXn+ypUr1bFjR9WrV6/Csdtvv11z5szRunXrNHDgQF100UXOToHNZlPz5s317rvvKjMzU/fff7/uuecevfvuu87Xjxo1Sp988ol27Nihl156SQsXLtTrr79e7h7Z2dn64YcfnM8XLlyoZs2alTvnvvvu08svv6wFCxZo8+bNmjVrlq666iqtWLGiQrxPPvmk0tLS1KhRI1100UUqKSk5bXs1atRIL7/8svP5yy+/rIYNG5Y7Jzc3V2PHjtWXX36pdevWafTo0Ro/frz27Nkjyd7BycrKUlZWlgYMGKA5c+Y4n//1r391XueJJ55Q9+7dtXbtWt19992aNWtWlb+bvLw83X///YqKijpt/O7Qt29flZSU6KeffvL4vQAAdc+rr76q+Ph4/fTTT7rlllt000036ZJLLtHAgQO1du1ajR49WlOmTFF+fn6V11i5cqX69u1b5fGDBw/qvPPO07hx4zRv3jzn/mnTpmnNmjVavHixvv/+exmGobFjx5brHzgml7z88svKyso64+fhBx984ExCVZdhGLrwwgt14MABLV26VOnp6erdu7dGjhypo0ePSpKWLFmiSZMm6cILL9S6dev01VdfOd9zdfsaDz30kLKysrRmzRpFRkYqJSXFeeyZZ57RP//5Tz355JPasGGDRo8erYsuuqjS5NypbrjhBue9srKyNGfOnArnfPXVV9qyZYuWL1+ut956Sx9++KEefPBB5/G8vDzNnj1baWlp+uqrrxQQEKA//elPzi8pHb788ktlZWVpyZIl+umnn/T444+71M6S1LlzZz355JOaMWOGdu/erf379+uGG27Qo48+qm7durl8PYeAgAA9++yz2rRpk1599VV9/fXXuuOOO5zHMzIyNHLkSHXt2lXff/+9Vq1apfHjx8tqteqZZ55xtt+ll16qSy+91Pnc8WVudfu7Dunp6fr4448rPdavXz99++23NX6vgMsMAHXasGHDjMGDB5fbl5ycbNx5551Vvua2224zzj333HL7du3aZUgyHn30Uee+kpISo3nz5sZjjz1W5bVmzJhhXHzxxZUe27lzp9G0aVPjv//9r2EYhrF8+XJDkvG3v/3NuPbaaw3DMIzdu3cbjRs3Nm666SZj2LBhhmEYRm5urhEWFmZ899135a533XXXGVdccUW5a7399tvO49nZ2UZ4eLjxzjvvVBmvJOP+++832rVrZ9hsNsNmsxkdOnQw/va3vxln+l9qYmKi8a9//avC/mHDhhlz586tsL9Vq1bGBRdcUG7fZZddZowZM6ZcPB9++KFhGIZx//33GyNHjjSGDRtm3HbbbeWu8/TTT5e7ztSpU40JEyY4n8+dO9fo0aNHpXF/+OGHlb632NhY45VXXqn0NQAA1NQf+yalpaVGZGSkMWXKFOe+rKwsQ5Lx/fffV3mdHj16GA899FC5fS+//LIRExNjHD161OjevbsxefJkw2q1Oo9v377dkGSsXr3aue/IkSNGeHi48e677zr3FRUVGZKMTz75xDCM3/tB69atK3cfwzCM4uJio3379sbDDz9c7pxHH33U6NixY7n4Tv3M/uqrr4x69eoZhYWF5c5p166d8cILLxiGYRgDBgwwJk+eXGUbOJyur+G4X0FBgXHJJZcYo0ePdh5PSEgwHnnkkXKvSU5ONmbMmHHae53aDzGMiv2MqVOnGnFxcUZeXp5z34IFC4yoqKhyv49THTp0yJBkbNy40TCMim2elZVltG/f3pg3b16l7++PJkyYYEydOrXcvgsvvNAYMmSIMXLkSOP88883bDZble/zTL+/yrz77rtGgwYNnM+vuOIKY9CgQVWe7zB16tQKsbrS3z127JhhGIYxdOhQ579DR//RYdasWcbw4cPPGAvgLoyMAqDu3buXe960aVMdOnSoyvMLCgoUFhZW6bEBAwY4t4OCgtS3b19t2bLFue/f//63+vbtq4YNGyoqKkovvviic7SQwz/+8Q9FRESobdu2uvjii3X11VeXOz516lQtWrRIOTk5eumll3TVVVcpJCTEeTwzM1OFhYU6//zzFRUV5fx57bXXyg3v/mO8cXFx6tSpU7l4K9OrVy/Vr19fX3/9tZYvX6569eqpd+/e5c7Jy8vTHXfcocTERNWvX19RUVHaunVrhfd6JqfG53heWXz79+/XU089pSeffNKl659q48aNioqKUkxMjDp37qwHHnjA+c1vZcLDw0/7jTQAADV1at8kMDBQDRo0KDdCpXHjxpJUo/5KaWmpxo4dqw0bNuj8889XQMDvfxJt2bJFQUFB6t+/v3NfgwYNKvQPcnJyJEmRkZFnfC+pqamKiYnR5MmTy+3v2rWrduzYUeWoqvT0dOXm5qpBgwbl+jO7du1y9mccI2vOxp133qmoqChFRkbqp59+0rPPPivJ/h73799fYbGaQYMGnbGvVB09evRQRESE8/mAAQOUm5urvXv3SrKXPLjyyivVtm1b1atXT23atJGkCn2pgQMHKioqSk2bNlXz5s01a9asSt9fw4YNNWTIEH399ddVxvTf//5XGzZs0Nq1a/XKK69UKFNwqjP9/iRp+fLlOv/889WsWTNFR0fr6quvVnZ2tvLy8iSd3e/Plf6uZC+7sHPnzkpHqUn06+B9QWYHAMB8wcHB5Z5bLJYKQ6BPFR8ff8baSn+8nmSv3TBr1iz985//1IABAxQdHa0nnnhCP/74Y7nzp0+frkmTJik9PV233XabJk2apBEjRjiPN2jQQKNHj9Zrr72m//73v/ryyy/173//23ncEfuSJUsqTN8LDQ2tdryn85e//EUvvviiDMPQDTfcUOH47bffrs8//1xPPvmk2rdvr/DwcP35z38uVwuhpiqL795779Ull1xSZd2n6ujUqZMWL14sm82m9PR0XXfddWrRooUaNGhQ6flHjx6tMD0RAAB3qKxvcuo+x2fhmforx44dq7A/Ly9P4eHheuGFFzRr1iyNGjVKTZs2laQqv4QxDKPc5+/+/fslSQkJCad9H8eOHdPDDz+sDz74oMLn94UXXqhLL71U/fv3dya1Tk0G2Gw2NW3atFz9TQdHParw8PDT3r86br/9dk2bNk35+fl67rnndNFFF5WrS/XHuP/YFu7muPb48ePVokULvfjii0pISJDNZlNSUlKFvtQ777yjLl266PDhw/rrX/+q6dOnlyuncOr7+9e//qUJEybot99+q/Te69evV15engICAnTgwIHT/n7P9PvbvXu3xo4dq+nTp+vhhx9WXFycVq1apeuuu8455fNsfn+u9HdLSkp0xx136JFHHqnynvTr4G2MjALgsl69emnr1q2VdthOreVUWlqq9PR0de7cWZL07bffauDAgZoxY4Z69eql9u3bV/rNTVxcnDp37qzJkydryJAhev/99yucc+ONN+qee+5R27Ztndd3SExMVGhoqPbs2aP27duX+2nRokWV8R47dkzbt2+vcL3KXHnllfryyy/15Zdf6sorr6xw/Ntvv9W0adP0pz/9yVkU8tdffz3jdf/o1Pgcz/8YX0ZGhv73v//p73//u8vXP1VISIjat2+vjh076oorrtDAgQO1bt26Ss/95ZdfVFhYqF69ep3VPQEA8JRevXopMzOzwv6IiAgtXrxYf/nLXzRo0CD95S9/cR5LTExUaWlpuS/KsrOztX37dnXp0sW5Ly0tTfXq1VO7du1OG8PDDz+sIUOGaNiwYRWOWSwWvfXWW8rOzlZGRoYyMjLKJT969+6tAwcOKCgoqEJ/Jj4+XpJ9BNlXX31V/UapRHx8vNq3b6/u3bvr/vvv17Zt27Rp0ybVq1dPCQkJWrVqVbnzv/vuu3JtUVPr168vtxDKDz/8oKioKDVv3lzZ2dnasmWL7rvvPo0cOVJdunSpNLEoSS1atFD79u01YMAA3XTTTeUKeP/x/c2dO1e5ubmV1rw6evSopk2bpnvvvVfXXHONJk+efNqFWs70+1uzZo1KS0v1z3/+U+ecc446duzoTGI6nM3vz5X+7oIFCxQVFaUpU6ZUeb1NmzbRr4NXMTIKgMtGjBihvLw8bd68WUlJSeWOpaamqkOHDurSpYuefvppHTt2TNdee60kqX379nrttdf0+eefq02bNvq///s/paWlOYddS9Lzzz+vYcOGKTIyUqtWrdKyZcsqrLgnScOGDdODDz5YYRqbJEVHR+uvf/2rZs2aJZvNpsGDBysnJ0ffffedoqKiNHXqVOe5Dz30kBo0aKDGjRvr3nvvVXx8fLlV5qoSFRWlf//737LZbIqOjq5wvH379vrggw80fvx4WSwW/e1vfzvtt7dVWb16tR5//HFNnDhRy5Yt03vvvaclS5aUO+fJJ5/UnDlzTvvtXWlpqQoLC53PrVarbDabSkpKnN80G4ahwsJC2Ww2rV27VmvWrNEll1xS6fW+/fZbtW3b9oydcAAAzDJ69Ghdf/31slqtCgwMdO4PDg52LvaxcOFCde3aVa+99pquvvpqdejQQRMmTNANN9ygF154QdHR0brrrrvUrFkzTZgwQTabTZ988onuueceXX311eWu+0f5+flauHCh1q5de9o44+LiFBcXJ8le4sDhvPPO04ABAzRx4kQ99thj6tSpk/bv36+lS5dq4sSJ6tu3r+bOnauRI0eqXbt2uvzyy1VaWqpPP/20XJHsMzl58qQOHDiggoICPffccwoLC1Pr1q0l2UcVzZ07V+3atVPPnj318ssvKyMjQ2+88Ua1r1+V4uJiXXfddbrvvvu0e/duzZ07VzfffLMCAgIUGxurBg0aaOHChWratKn27Nmju+66q9LrZGdn68CBAzpy5IheeeWVCl/aOfpABQUFWrhwocLDwyvtv0yfPl0tWrTQfffdp+LiYvXu3Vt//etflZqaetr3UdXvr127diotLdW//vUvjR8/XqtXry43kl+S7r77bnXr1k0zZszQ9OnTFRISouXLl+uSSy5xJhyr4kp/9/HHH9fixYurHNGWn5+v9PR0/eMf/zjtPQF3YmQUAJc1aNBAkyZNqrQj8uijj+qxxx5Tjx499O233+qjjz5yfpg6pt9ddtll6t+/v7KzszVjxoxyr1+yZImGDx+uzp0768EHH9Q999zjTGb90axZs3TOOedUeuzhhx/W/fffr3nz5qlLly4aPXq0Pv7443KJL0e8t912m/r06aOsrCwtXry4XP2p0/nzn/+sSy+9tNJjTz/9tGJjYzVw4ECNHz9eo0ePrlBXqjrmzJmj9PR09erVSw8//LD++c9/avTo0eXOiY6O1u23337a69x+++0KDw93/rz++uv6+OOPy00x3LBhg8LDwxUdHa3LL79cN954Y6VTECXprbfeqvIYAAC+YOzYsQoODtaXX35Z5TlNmzbVM888o9tuu805auXll19Wnz59NG7cOA0YMECGYWjp0qUKDg7WsWPHNGPGDE2dOvWMdRpLSkp0zTXXqGPHjjWK32KxaOnSpRo6dKiuvfZadezYUZdffrl+/fVXZ82s4cOH67333tPixYvVs2dPnXvuuRXKH5zJ/fffr6ZNmyoxMVHffPONPvjgA+cU/VtvvVVz5szRnDlz1K1bN3322WdavHixOnToUKP3dKqRI0eqQ4cOGjp0qC699FKNHz9eDzzwgCT7KnRvv/220tPTlZSUpFmzZumJJ56o9DrnnXeemjZtqsGDBysoKKhC/9TRB0pISNCSJUv0/vvvKzY2ttw5r732mpYuXar/+7//U1BQkCIiIvTGG2/opZde0tKlS2v0/nr27KmnnnpKjz32mJKSkvTGG2+UW7VRkjp27KgvvvhC69evV79+/TRgwAB99NFH5ZJap1Pd/u6IESN07rnnVnmdjz76SC1bttSQIUNcf6NADVmM01WnBYAqbNy4Ueedd5527Nih6Oho/frrr2rTpo3WrVt3VnWLvOWbb77RiBEjdOzYMWfdBV/TunVrzZw5UzNnzvTI9RctWqRFixbplVdecel1mzZt0siRI7V9+3bFxMR4JDYAANzh+eef10cffaTPP//c7FBwimnTpun48eNatGiR2aFAUr9+/TRz5sxKS08AnsLIKAA10q1bNz3++OM1qoME3xAYGFihQGx17N+/X6+99hqJKACAz/vLX/6ioUOH6uTJk2aHAvikQ4cO6c9//rOuuOIKs0NBHUPNKAA1dupcdPif8ePHa/z48S6/btSoUR6IBgAA9wsKCtK9995rdhiAz2rUqJFLNcYAd2GaHgAAAAAAALyGaXoAAAAAAADwGpJRAAAAAAAA8BqSUQAAAAAAAPAaklEAAAAAAADwGpJRAAAAAAAA8BqSUQAAAAAAAPAaklEAAAAAAADwGpJRAAAAAAAA8BqSUQAAAAAAAPCa/wf51jZNgNjkLgAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 1200x600 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"([2.3003430000972004e-05,\n",
" 0.00010594295999908355,\n",
" 0.0002523724999919068,\n",
" 0.0007828090999973938,\n",
" 0.007432277000043541,\n",
" 0.04331835999910254,\n",
" 3.3495688999828417],\n",
" [2.5054150001960808e-05,\n",
" 0.0001502138099982403,\n",
" 0.000414019299991196,\n",
" 0.0015840039000031539,\n",
" 0.01922832999844104,\n",
" 0.14132896000228357,\n",
" 12.20673400000669],\n",
" [0.00024055270000826568,\n",
" 0.00037021059999824504,\n",
" 0.001025134399998933,\n",
" 0.003964642000210006,\n",
" 0.006504234000167344,\n",
" 0.016102712999854704,\n",
" 0.030875240001478232],\n",
" [0.0003915813000057824,\n",
" 0.00046348869998473675,\n",
" 0.0007463839999982156,\n",
" 0.0011135890999867115,\n",
" 0.003185632999811787,\n",
" 0.007519132999877911,\n",
" 0.014468228000041564])"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Построение графиков для изменения n\n",
"plt.figure(figsize=(12, 6))\n",
"\n",
"plt.subplot(1, 2, 1)\n",
"plt.semilogy(n_values, gauss_times_n, label='Метод Гаусса')\n",
"plt.semilogy(n_values, inverse_times_n, label='Умножение на обратную')\n",
"plt.xlabel('n (размер матрицы)')\n",
"plt.ylabel('Время выполнения (с)')\n",
"plt.title('Скорость решения при фиксированном m = 10')\n",
"plt.legend()\n",
"\n",
"# Построение графиков для изменения m\n",
"plt.subplot(1, 2, 2)\n",
"plt.semilogy(m_values, gauss_times_m, label='Метод Гаусса')\n",
"plt.semilogy(m_values, inverse_times_m, label='Умножение на обратную')\n",
"plt.xlabel('m (количество правых частей)')\n",
"plt.ylabel('Время выполнения (с)')\n",
"plt.title('Скорость решения при фиксированном n = 100')\n",
"plt.legend()\n",
"\n",
"plt.tight_layout()\n",
"plt.show()\n",
"\n",
"# Возвращаем результаты эксперимента\n",
"gauss_times_n, inverse_times_n, gauss_times_m, inverse_times_m"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"Эксперименты показали следующие результаты:\n",
"### 1. При фиксированном **𝑚 = 10** и изменяющемся **𝑛**:\n",
"- Время выполнения для обоих методов увеличивается по мере роста размера матрицы 𝑛, что логично, так как вычислительная сложность возрастает с ростом числа неизвестных.\n",
"- Оба метода демонстрируют схожую динамику роста времени выполнения. Однако на больших размерах матриц метод с умножением на обратную матрицу начинает работать чуть быстрее метода Гаусса.\n",
"\n",
"### 2. При фиксированном **𝑛 = 100** и изменяющемся **𝑚**:\n",
"- Время решения обоих методов остаётся относительно стабильным при изменении количества правых частей **𝑚**.\n",
"- Незначительное увеличение времени наблюдается при очень больших **𝑚**, но в целом оба метода ведут себя схоже.\n",
"\n",
"### Выводы:\n",
"- Для малых размеров системы (**𝑛 ≤ 100**) оба метода показывают практически одинаковую производительность.\n",
"- Для больших размеров матриц (**𝑛 > 500**) метод с умножением на обратную матрицу работает немного быстрее, что связано с тем, что этот метод может использовать оптимизированные алгоритмы для вычисления обратной матрицы.\n",
"- Время выполнения не сильно зависит от числа правых частей **𝑚**, что связано с тем, что при фиксированном размере матрицы **𝑛** сложность вычислений в обоих методах возрастает незначительно при увеличении **𝑚**."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.4"
}
},
"nbformat": 4,
"nbformat_minor": 4
}