Добавление информации о методах (№1) #2

Merged
stud128245 merged 42 commits from dev into master 2023-10-27 08:28:22 +00:00
Showing only changes of commit afc4b083ec - Show all commits

112
main.tex
View File

@ -1,6 +1,9 @@
\input{vars}
\input{config}
\NewDocumentCommand{\MFArgs}
{}{x^{(p)}_1,x^{(p)}_2,x^{(p)}_3,\dots,x^{(p)}_n}
\begin{document}
\lstset{language=[11]C++}
@ -590,7 +593,7 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения
\subsubsection{Описание метода}
Для матрицы СЛУ (\ref{formula:eqn_matrix_system}) размеров
\(n \times n\), и начального приближения \(x^{(0)}\) приближенное
решение на итерации \(p, p = 1,2,3,\dots,k,k+1\) вычисляется по
решение на итерации \(p, p = 1,2,3,\dots,k\) вычисляется по
следующей формуле:
\begin{equation*}
x^{(p+1)}_i = \frac{1}{a_{ii}}
@ -604,7 +607,7 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения
\ref{formula:eqn_diag_dominant}). Заданная точность достигается
при выполнении условия:
\begin{equation}
\max_i |x^{(p+1)}_i-x^{(p)_i}| < \varepsilon
\max_{i \le i \le n} |x^{(p+1)}_i-x^{(p)}_i| < \varepsilon
\label{formula:precision_iter_sle}
\end{equation}
\subsubsection{Реализации метода в библиотеках numpy, scipy}
@ -614,7 +617,7 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения
\subsubsection{Описание метода}
Для матрицы СЛУ (\ref{formula:eqn_matrix_system}) размеров
\(n \times n\), и начального приближения \(x^{(0)}\) приближенное
решение на итерации \(p, p = 1,2,3,\dots,k,k+1\) вычисляется по
решение на итерации \(p, p = 1,2,3,\dots,k\) вычисляется по
следующей формуле:
\begin{equation*}
x^{(p+1)}_i = \frac{1}{a_{ii}}
@ -669,26 +672,123 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения
x^{(p+1)}_{i} = f_i(x^{(p)}_1,x^{(p)}_2,\dots,x^{(p)}_n);
\quad i=1,2,3,\dots,n
\end{equation}
где \(p, p = 1,2,3,\dots,k,k+1\) --- номер итерации.
где \(p, p = 1,2,3,\dots,k\) --- номер итерации.
Заданная точность \(\varepsilon\) достигается выполнением
следующего условия:
\begin{equation*}
\forall i = 1,2,3,\dots,n;\
\max_i |x^{(k+1)}_i - x^{(k)}_i | < \varepsilon
\max_i |x^{(p+1)}_i - x^{(p)}_i | < \varepsilon; \quad
i = 1,2,3,\dots,n
\end{equation*}
\subsubsection{Реализации метода в библиотеках numpy, scipy}
Реализаций данного метода в библиотеках numpy, scipy не найдено.
\subsection{Метод Зейделя для систем нелинейных уравнений}
Данный метод является модификацией предыдущего; отличие состоит в
условии сходимости и формуле получения приближенного решения.
Ниже будут описаны только вышеперечисленные различия.
\subsubsection{Описание метода}
Формула вычисления приближенного решения данного алгоритма следующая:
\begin{equation*}
\begin{aligned}
& x^{(p+1)}_{1} = f_1(x^{(p)}_1,x^{(p)}_2,\dots,x^{(p)}_n) \\
& x^{(p+1)}_{2} = f_2(x^{(p)}_1,x^{(p)}_2,\dots,x^{(p)}_n) \\
& \dots\dots\dots\dots\dots\dots\dots\dots\dots \\
& x^{(p+1)}_{n} = f_n(x^{(p)}_1,x^{(p)}_2,\dots,x^{(p)}_n) \\
\end{aligned}
\end{equation*}
где \(p, p = 1,2,3,\dots,k\) --- номер итерации.
Данный алгоритм более требователен к точности начального приближения.
Сходимость метода зависит от характера функций исходной системы,
для определения которого необходимо вычислить значения матрицы
\begin{equation}
F' = \left(
\begin{aligned}
& f^{'}_{11} \ \ f^{'}_{12} \ \ f^{'}_{13} \ \ \dots \ \ f^{'}_{1n} \\
& f^{'}_{21} \ \ f^{'}_{22} \ \ f^{'}_{23} \ \ \dots \ \ f^{'}_{2n} \\
& \dots \ \ \dots \ \ \dots \ \ \dots \ \ \dots \\
& f^{'}_{n1} \ \ f^{'}_{n2} \ \ f^{'}_{n3} \ \ \dots \ \ f^{'}_{nn} \\
\end{aligned}
\right)
\end{equation}
где \(f^{'}_{ij} = \frac{\partial f_i}{\partial x_j}\).
Сходимость метода обеспечивается выполнением следующего условия:
\vspace{-5mm}
\begin{equation*}
|f^{'}_{i1}| + |f^{'}_{i2}| + |f^{'}_{i3}| + \dots |f^{'}_{in}| < 1;
\quad i = 1,2,3,\dots,n
\end{equation*}
\subsubsection{Реализации метода в библиотеках numpy, scipy}
Реализаций данного метода в библиотеках numpy, scipy не обнаружено.
\subsection{Метод Ньютона решения систем нелинейных уравнений}
\subsubsection{Описание метода}
На каждой итерации \(p, p = 1,2,3,\dots,k\) вычисляются значения
\(\Delta x^{(p)}_1, \Delta x^{(p)}_2, \Delta x^{(p)}_3, \dots,
\Delta x^{(p)}_n \).
Для этого исходная система уравнений раскладывается в ряд Тейлора по
\(\Delta x^{(p)}_1, \Delta x^{(p)}_2, \Delta x^{(p)}_3, \dots,
\Delta x^{(p)}_n \). Сохранив линейные по данным значениям части, получим
СЛУ:
\begin{equation}
\begin{aligned}
& \splitdfrac{\frac{\partial F_1(\MFArgs)}{\partial x_1} \Delta x^{(p)}_1 +
\frac{\partial F_1(\MFArgs)}{\partial x_2} \Delta x^{(p)}_2 + \dots +}
{\frac{\partial F_1(\MFArgs)}{\partial x_n} \Delta x^{(p)}_n = -F_1(\MFArgs)} \\
& \splitdfrac{\frac{\partial F_2(\MFArgs)}{\partial x_1} \Delta x^{(p)}_1 +
\frac{\partial F_2(\MFArgs)}{\partial x_2} \Delta x^{(p)}_2 + \dots +}
{\frac{\partial F_2(\MFArgs)}{\partial x_n} \Delta x^{(p)}_n = -F_2(\MFArgs)} \\
& \dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots \\
& \splitdfrac{\frac{\partial F_n(\MFArgs)}{\partial x_1} \Delta x^{(p)}_1 +
\frac{\partial F_n(\MFArgs)}{\partial x_2} \Delta x^{(p)}_2 + \dots +}
{\frac{\partial F_n(\MFArgs)}{\partial x_n} \Delta x^{(p)}_n = -F_n(\MFArgs)} \\
\end{aligned}
\label{formula:SnLE-Newton-sys}
\end{equation}
Данную систему можно решить любым наиболее подходящим с учетом доступных
ресурсов методом.
Решением СЛУ (\ref{formula:SnLE-Newton-sys}) будет вектор
\(\Delta X^{(p)} = (\MFArgs)\). После этого, приближенное решение
исходной задачи находится по формуле
\(X^{(p+1)} = X^{(p)} + \Delta X^{(p)}\).
Заданная точность достигается выполнением условия
(\ref{formula:precision_iter_sle}). Стоит учитывать, что данный метод
так же, как и предыдущий, требователен к точности начального приближения.
\subsubsection{Реализации метода в библиотеках numpy, scipy}
Реализаций данного алгоритма в библиотеках numpy, scipy не найдено,
кроме того, для его работы требуется нахождение частных производных.
Для поиска частной производной в scipy есть функция \textbf{derivative}
в модуле \textbf{scipy.misc}, но она отмечена устаревшей и будет
удалена в версии 1.12.0, поэтому реализация данного метода с помощью
применения функций общей направленности библиотеки рассматриваться
не будет.
\section{Аппроксимация функций}
Иногда значения некоторой функциональной зависимости
\(y= \widetilde{y}(x) \) известны для отдельных пар значений
\((x_i,y_i)\).
Задача восстановления аналитической функции \(\widetilde{y}\)
по отдельным парам значений называется аппроксимацией.
Для получения ее однозначного решения необходимо задать общий вид
функции, включающей коэффициенты, и затем эти коэффициенты определить
с помощью подходящего метода.
Для определения коэффициентов существует два основных подхода ---
интерполяция (когда \(y_i = \widetilde{x_i}\)), и сглаживание, когда
требуется лишь минимизировать отклонение от известных значений.
Первые три метода решают поставленную задачу с помощью интерполяции,
последний --- с помощью сглаживания.
\subsection{Интерполяционный полином в форме Лагранжа}
\subsubsection{Описание метода}
\subsubsection{Реализации метода в библиотеках numpy, scipy}