From 36c728cddd7c0af0d2990dc787e5a161bdf8260b Mon Sep 17 00:00:00 2001 From: AVAtarMod Date: Tue, 22 Aug 2023 14:20:41 +0300 Subject: [PATCH] [content] Fix formulas, style; Add 2 methods - Add matrix representation of SLE --- main.tex | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 72 insertions(+), 7 deletions(-) diff --git a/main.tex b/main.tex index e00641b..d631b50 100644 --- a/main.tex +++ b/main.tex @@ -263,6 +263,33 @@ \right. \label{formula:eqn_system} \end{eqnarray} +СЛУ также представима в матричной форме \(AX=B\), где \(A,X,B\) имеют +следующий вид: +\begin{eqnarray} + A = \left( + \begin{aligned} + & a_{11} \quad a_{12} \quad \dots \quad a_{1n} \\ + & a_{21} \quad a_{22} \quad \dots \quad a_{2n} \\ + & \ \vdots \ \qquad \vdots \quad \ \ddots \quad \ \vdots \\ + & a_{n1} \quad a_{n2} \quad \dots \quad a_{nn} \\ + \end{aligned} + \right), B = \left( + \begin{aligned} + & b_1 \\ + & b_2 \\ + & \ \vdots \\ + & b_n \\ + \end{aligned} + \right), X = \left( + \begin{aligned} + & x_1 \\ + & x_2 \\ + & \ \vdots \\ + & x_n \\ + \end{aligned} + \right) + \label{formula:eqn_matrix_system} +\end{eqnarray} Для решения таких систем существуют прямые и итерационные методы. Прямые методы (к ним относятся "метод Гаусса", "метод обратной матрицы" @@ -272,6 +299,8 @@ "метод простой итерации" и "метод Зейделя") позволяют получить приближенное решение с помощью последовательного приближения к точному. +Для итерационных методов необходимо начальное приближение, которое +будет обозначено как \(x^{(0)}\). \subsection{Метод Гаусса} \subsubsection{Описание метода} Для решения СЛУ система (\ref{formula:eqn_system}) приводится к @@ -389,7 +418,7 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения привести к проблемам (сбоям, незавершению), если входные данные содержат бесконечности или NaN. По умолчанию \verb|True|. \end{enumerate} -\vspace{\baselineskip} +\pagebreak Функция \textbf{inv} модуля \textbf{scipy.linalg} имеет следующие параметры (задаются в порядке перечисления): @@ -430,17 +459,16 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения V_i = \frac{d_i - a_i V_{i-1}}{a_i U_{i-1} + b_i} \hspace{1cm} i = 1,2,3,\dots,n \end{equation} -При этом \( c_n = 0; a_1 = 0\). - -Таким образом, сначала вычисляем \(U_i, V_i\), затем -\(x_i, i =n,n-1,\dots,1\). +При этом \( c_n = 0; a_1 = 0\), в ходе выполнения алгоритма сначала +вычисляем \(U_i, V_i\), затем \(x_i, i =n,n-1,\dots,1\). +\pagebreak Данный метод в общем случае не устойчив, за исключением случаев, когда матрица СЛУ обладает свойством диагонального преобладания (условие \ref{formula:eqn_diag_dominant}) или она положительно определенная \cite{links:bhatia}. \begin{equation} - \sum_{i \ne j} |a_{ij}| < |a_{ii}| + \sum_{i \ne j} |a_{ij}| < |a_{ii}|; \qquad i=1,2,3,\dots,n \label{formula:eqn_diag_dominant} \end{equation} @@ -523,7 +551,7 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения 0 & 1 & 3 & 2 & -1 \\ 0 & 0 & 1 & 2 & 2 \\ 0 & 0 & 0 & 1 & 1 \\ -\end{tabular}\\ +\end{tabular}\\ верхняя форма будет следующей: \begin{tabular}[htpb]{ccccc} @@ -555,11 +583,48 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения \subsection{Метод простой итерации (метод Якоби)} \subsubsection{Описание метода} +Для матрицы СЛУ (\ref{formula:eqn_matrix_system}) размеров +\(n \times n\), и начального приближения \(x^{(0)}\) приближенное +решение на итерации \(p, p = 1,2,\dots,k,k+1\) вычисляется по +следующей формуле: +\begin{equation*} + x^{(p+1)}_i = \frac{1}{a_{ii}} + (b_i - \sum_{j=1}^{i-1}a_{ij} x^{(p)}_j + - \sum_{j=i+1}^{n}a_{ij} x^{(p)}_j); + \quad i = 1,2,3,\dots,n +\end{equation*} + +Метод сходится при \(p \to \infty\), если матрица СЛУ обладает свойством +диагонального преобладания (выполняется условие +\ref{formula:eqn_diag_dominant}). Заданная точность достигается +при выполнении условия: +\begin{equation} + \max_i |x^{(p+1)}_i-x^{(p)_i}| < \varepsilon + \label{formula:precision_iter_sle} +\end{equation} \subsubsection{Реализации метода в библиотеках numpy, scipy} +Реализаций данного метода в библиотеках numpy, scipy не найдено. \subsection{Метод Зейделя} \subsubsection{Описание метода} +Для матрицы СЛУ (\ref{formula:eqn_matrix_system}) размеров +\(n \times n\), и начального приближения \(x^{(0)}\) приближенное +решение на итерации \(p, p = 1,2,\dots,k,k+1\) вычисляется по +следующей формуле: +\begin{equation*} + x^{(p+1)}_i = \frac{1}{a_{ii}} + (b_i - \sum_{j=1}^{i-1}a_{ij} x^{(p+1)}_j + - \sum_{j=i+1}^{n}a_{ij} x^{(p)}_j); + \quad i = 1,2,3,\dots,n +\end{equation*} + +Данный метод, в отличие от предыдущего, использует уже найденные +компоненты этой же итерации с м\'eньшим индексом. + +Сходимость и точность задаются условиями +(\ref{formula:eqn_diag_dominant}) и (\ref{formula:precision_iter_sle}). \subsubsection{Реализации метода в библиотеках numpy, scipy} +Реализаций данного алгоритма в библиотеках numpy, scipy не найдено. \section{Численные методы решения систем нелинейных уравнений} \subsection{Метод простой итерации (метод Якоби) для систем