Добавление информации о методах (№1) #2
190
main.tex
190
main.tex
@ -257,7 +257,7 @@
|
||||
\begin{aligned}
|
||||
& a_{11}x_1 + a_{12}x_2 + a_{1n}x_n = b_1 \\
|
||||
& a_{21}x_1 + a_{22}x_2 + a_{2n}x_n = b_2 \\
|
||||
& ........................................ \\
|
||||
& \dots\dots\dots\dots\dots\dots\dots\dots \\
|
||||
& a_{n1}x_1 + a_{n2}x_2 + a_{nn}x_n = b_n \\
|
||||
\end{aligned}
|
||||
\right.
|
||||
@ -281,7 +281,7 @@
|
||||
\begin{aligned}
|
||||
& a'_{11}x_1 + a'_{12}x_2 + a'_{1n}x_n = b'_1 \\
|
||||
& 0x_1 + a'_{22}x_2 + a'_{2n}x_n = b'_2 \\
|
||||
& ........................................ \\
|
||||
& \dots\dots\dots\dots\dots\dots\dots. \\
|
||||
& 0x_1 + 0x_2 + a'_{nn}x_n = b'_n \\
|
||||
\end{aligned}
|
||||
\right.
|
||||
@ -389,6 +389,7 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения
|
||||
привести к проблемам (сбоям, незавершению), если входные данные
|
||||
содержат бесконечности или NaN. По умолчанию \verb|True|.
|
||||
\end{enumerate}
|
||||
\vspace{\baselineskip}
|
||||
|
||||
Функция \textbf{inv} модуля \textbf{scipy.linalg} имеет следующие
|
||||
параметры (задаются в порядке перечисления):
|
||||
@ -397,106 +398,225 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения
|
||||
\end{enumerate}
|
||||
|
||||
\subsection{Метод прогонки}
|
||||
TODO
|
||||
Данный метод применяется для решения трехдиагональных матриц \hspace{1mm} вида
|
||||
\begin{equation}
|
||||
\left\{
|
||||
\begin{aligned}
|
||||
& a_1 x_0 + b_1 x_1 + c_1 x_2 = d_1 \\
|
||||
& a_2 x_1 + b_2 x_2 + c_2 x_3 = d_2 \\
|
||||
& \dots\dots\dots\dots\dots\dots\dots \\
|
||||
& a_n x_{n-1} + b_n x_n + c_n x_{n+1} = d_n \\
|
||||
\end{aligned}
|
||||
\right.
|
||||
\label{formula:eqn_banded_system}
|
||||
\end{equation}
|
||||
|
||||
Является частным случаем метода Гаусса.
|
||||
\subsubsection{Описание метода}
|
||||
TODO
|
||||
После исключения переменных ниже главной диагонали с помощью
|
||||
элементарных преобразований, в каждом уравнении СЛУ остается
|
||||
\(\leq 2\) неизвестных. В таком случае, формула обратного хода будет
|
||||
следующей: \(x_i = U_i x_{i+1}+V_i, i = n,n-1,\dots,1\). После замены
|
||||
\(i\) на \(i-1\) и подстановке выражения в общий вид уравнения из СЛУ
|
||||
(\ref{formula:eqn_banded_system}) \(a_i x_{i-1} + b_i x_i + c_i x_{i+1}\)
|
||||
получим следующее выражение:
|
||||
\begin{equation}
|
||||
x_i = - \frac{c_i}{a_i U_{i-1} + b_i} x_{i+1} +
|
||||
\frac{d_i - a_i V_{i-1}}{a_i U_{i-1} + b_i}
|
||||
\end{equation}
|
||||
Из которого получим:
|
||||
\begin{equation}
|
||||
U_i = - \frac{c_i}{a_i U_{i-1} + b_i},
|
||||
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\).
|
||||
|
||||
Данный метод в общем случае не устойчив, за исключением случаев,
|
||||
когда матрица СЛУ обладает свойством диагонального преобладания
|
||||
(условие \ref{formula:eqn_diag_dominant}) или она положительно
|
||||
определенная \cite{links:bhatia}.
|
||||
\begin{equation}
|
||||
\sum_{i \ne j} |a_{ij}| < |a_{ii}|
|
||||
\label{formula:eqn_diag_dominant}
|
||||
\end{equation}
|
||||
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
В scipy для решения СЛУ вида (\ref{formula:eqn_banded_system})
|
||||
существует две функции в модуле \textbf{scipy.linalg}:
|
||||
\textbf{solve\_banded} \cite{links:scipy_doc} и
|
||||
\textbf{solveh\_banded} \cite{links:scipy_doc}.
|
||||
|
||||
Различие между ними заключается в том, что \textbf{solve\_banded}
|
||||
не использует метод прогонки, из-за низкой устойчивости метода в общем
|
||||
случае, что позволяет найти решение даже если матрица не положительно
|
||||
определенная или не обладает свойством диагонального преобладания.
|
||||
|
||||
\textbf{solveh\_banded} реализует метод прогонки, но авторы библиотеки
|
||||
указывают, что вводимая матрица должна быть положительно определенной
|
||||
\cite{links:scipy_doc}.
|
||||
|
||||
Функция \textbf{solve\_banded} имеет следующие параметры (задаются в
|
||||
порядке перечисления):
|
||||
\begin{enumerate}
|
||||
\item \((l, u)\) --- (integer, integer) tuple
|
||||
|
||||
Количество ненулевых нижних и верхних диагоналей.
|
||||
\item \(ab\) --- (l + u + 1, M) array\_like
|
||||
|
||||
Ленточная матрица.
|
||||
\item \(b\) --- (M,) or (M, K) array\_like
|
||||
|
||||
Правая сторона.
|
||||
\item \(overwrite\_ab\) --- bool, необязательный
|
||||
|
||||
Разрешить изменять данные в \(ab\) (может повысить
|
||||
производительность). По умолчанию \verb|False|.
|
||||
\item \(overwrite\_b\) --- bool, необязательный
|
||||
|
||||
Разрешить изменять данные в \(b\) (может повысить
|
||||
производительность). По умолчанию \verb|False|.
|
||||
\item \(check\_finite\) --- bool, необязательный
|
||||
|
||||
Проверять, содержат ли входные матрицы только конечные числа.
|
||||
Отключение может дать прирост производительности, но может
|
||||
привести к проблемам (сбоям, незавершению), если входные данные
|
||||
содержат бесконечности или NaN. По умолчанию \verb|True|.
|
||||
\end{enumerate}
|
||||
|
||||
Функция \textbf{solveh\_banded} имеет несколько иной набор параметров
|
||||
(задаются в порядке перечисления):
|
||||
\begin{enumerate}
|
||||
\item \(ab\) --- (u + 1, M) array\_like
|
||||
|
||||
Ленточная матрица, \(u\) --- число верхних диагоналей.
|
||||
\item \(b\) --- (M,) or (M, K) array\_like
|
||||
|
||||
Правая сторона.
|
||||
\item \(overwrite\_ab\) --- bool, необязательный
|
||||
|
||||
Разрешить изменять данные в \(ab\) (может повысить
|
||||
производительность). По умолчанию \verb|False|.
|
||||
\item \(overwrite\_b\) --- bool, необязательный
|
||||
|
||||
Разрешить изменять данные в \(b\) (может повысить
|
||||
производительность). По умолчанию \verb|False|.
|
||||
\item \(lower\) --- bool, необязательный
|
||||
|
||||
Является ли матрица в нижней форме. (По умолчанию используется
|
||||
верхняя форма), то есть \verb|False|.
|
||||
\item \(check\_finite\) --- bool, необязательный
|
||||
|
||||
Совпадает с параметром \(check\_finite\) функции
|
||||
\textbf{solve\_banded}.
|
||||
\end{enumerate}
|
||||
|
||||
Обе функции принимают матрицу \(ab\) либо в верхней (\textbf{solve\_banded}), либо в нижней форме (\textbf{solveh\_banded} при
|
||||
включенной опции \(lower\)). Например, для матрицы
|
||||
|
||||
\begin{tabular}[htpb]{ccccc}
|
||||
5 & 2 & -1 & 0 & 0 \\
|
||||
1 & 4 & 2 & -1 & 0 \\
|
||||
0 & 1 & 3 & 2 & -1 \\
|
||||
0 & 0 & 1 & 2 & 2 \\
|
||||
0 & 0 & 0 & 1 & 1 \\
|
||||
\end{tabular}\\
|
||||
верхняя форма будет следующей:
|
||||
|
||||
\begin{tabular}[htpb]{ccccc}
|
||||
0 & 0 & -1 & -1 & -1 \\
|
||||
0 & 2 & 2 & 2 & 2 \\
|
||||
5 & 4 & 3 & 2 & 1 \\
|
||||
1 & 1 & 1 & 1 & 0 \\
|
||||
\end{tabular}
|
||||
|
||||
Так как данная матрица не эрмитова, и, следовательно, не положительно
|
||||
определенна, описание нижней формы для нее неуместно. Если взять эрмитову
|
||||
положительно определенную матрицу
|
||||
|
||||
\begin{tabular}[htpb]{cccccc}
|
||||
4 & 2 & -1 & 0 & 0 & 0 \\
|
||||
2 & 5 & 2 & -1 & 0 & 0 \\
|
||||
-1 & 2 & 6 & 2 & -1 & 0 \\
|
||||
0 & -1 & 2 & 7 & 2 & -1 \\
|
||||
0 & 0 & -1 & 2 & 8 & 2 \\
|
||||
0 & 0 & 0 & -1 & 2 & 9 \\
|
||||
\end{tabular}\\
|
||||
то ее нижняя форма будет следующая:
|
||||
|
||||
\begin{tabular}[htpb]{cccccc}
|
||||
4 & 5 & 6 & 7 & 8 & 9 \\
|
||||
2 & 2 & 2 & 2 & 2 & 0 \\
|
||||
-1 & -1 & -1 & -1 & 0 & 0 \\
|
||||
\end{tabular}
|
||||
|
||||
\subsection{Метод простой итерации (метод Якоби)}
|
||||
TODO
|
||||
\subsubsection{Описание метода}
|
||||
TODO
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
|
||||
\subsection{Метод Зейделя}
|
||||
TODO
|
||||
\subsubsection{Описание метода}
|
||||
TODO
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
|
||||
\section{Численные методы решения систем нелинейных уравнений}
|
||||
TODO
|
||||
\subsection{Метод простой итерации (метод Якоби) для систем
|
||||
нелинейных уравнений}
|
||||
TODO
|
||||
\subsubsection{Описание метода}
|
||||
TODO
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
|
||||
\subsection{Метод Зейделя для систем нелинейных уравнений}
|
||||
TODO
|
||||
\subsubsection{Описание метода}
|
||||
TODO
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
|
||||
\subsection{Метод Ньютона решения систем нелинейных уравнений}
|
||||
TODO
|
||||
\subsubsection{Описание метода}
|
||||
TODO
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
|
||||
\section{Аппроксимация функций}
|
||||
\subsection{Интерполяционный полином в форме Лагранжа}
|
||||
TODO
|
||||
\subsubsection{Описание метода}
|
||||
TODO
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
|
||||
\subsection{Интерполяционный полином в форме Ньютона}
|
||||
TODO
|
||||
\subsubsection{Описание метода}
|
||||
TODO
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
|
||||
\subsection{Сплайн-интерполяция}
|
||||
TODO
|
||||
\subsubsection{Описание метода}
|
||||
TODO
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
|
||||
\subsection{Сглаживание. Метод наименьших квадратов}
|
||||
TODO
|
||||
\subsubsection{Описание метода}
|
||||
TODO
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
|
||||
\section{Численное интегрирование}
|
||||
\subsection{Метод прямоугольников}
|
||||
TODO
|
||||
\subsubsection{Описание метода}
|
||||
TODO
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
|
||||
\subsection{Метод трапеций}
|
||||
TODO
|
||||
\subsubsection{Описание метода}
|
||||
TODO
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
|
||||
\subsection{Метод парабол (Симпсона)}
|
||||
TODO
|
||||
\subsubsection{Описание метода}
|
||||
TODO
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
|
||||
|
||||
\section{Численное решение обыкновенных дифференциальных уравнений}
|
||||
\subsection{Метод Эйлера}
|
||||
TODO
|
||||
\subsubsection{Описание метода}
|
||||
TODO
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
|
||||
\subsection{Модифицированный метод Эйлера}
|
||||
TODO
|
||||
\subsubsection{Описание метода}
|
||||
TODO
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
|
||||
\subsection{Метод Рунге-Кутта}
|
||||
TODO
|
||||
\subsubsection{Описание метода}
|
||||
TODO
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user