Compare commits
2 Commits
f1a6257b45
...
afc4b083ec
Author | SHA1 | Date | |
---|---|---|---|
|
afc4b083ec | ||
|
36f397d6aa |
@ -20,6 +20,7 @@
|
|||||||
\usepackage{xstring}
|
\usepackage{xstring}
|
||||||
\usepackage{tabularx}
|
\usepackage{tabularx}
|
||||||
\usepackage{enumitem}
|
\usepackage{enumitem}
|
||||||
|
\usepackage{mathtools}
|
||||||
\usepackage[strict=true]{csquotes}
|
\usepackage[strict=true]{csquotes}
|
||||||
\usepackage[abspath]{currfile}
|
\usepackage[abspath]{currfile}
|
||||||
\usepackage[hidelinks,linktoc=all]{hyperref}
|
\usepackage[hidelinks,linktoc=all]{hyperref}
|
||||||
|
112
main.tex
112
main.tex
@ -1,6 +1,9 @@
|
|||||||
\input{vars}
|
\input{vars}
|
||||||
\input{config}
|
\input{config}
|
||||||
|
|
||||||
|
\NewDocumentCommand{\MFArgs}
|
||||||
|
{}{x^{(p)}_1,x^{(p)}_2,x^{(p)}_3,\dots,x^{(p)}_n}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
\lstset{language=[11]C++}
|
\lstset{language=[11]C++}
|
||||||
|
|
||||||
@ -590,7 +593,7 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения
|
|||||||
\subsubsection{Описание метода}
|
\subsubsection{Описание метода}
|
||||||
Для матрицы СЛУ (\ref{formula:eqn_matrix_system}) размеров
|
Для матрицы СЛУ (\ref{formula:eqn_matrix_system}) размеров
|
||||||
\(n \times n\), и начального приближения \(x^{(0)}\) приближенное
|
\(n \times n\), и начального приближения \(x^{(0)}\) приближенное
|
||||||
решение на итерации \(p, p = 1,2,3,\dots,k,k+1\) вычисляется по
|
решение на итерации \(p, p = 1,2,3,\dots,k\) вычисляется по
|
||||||
следующей формуле:
|
следующей формуле:
|
||||||
\begin{equation*}
|
\begin{equation*}
|
||||||
x^{(p+1)}_i = \frac{1}{a_{ii}}
|
x^{(p+1)}_i = \frac{1}{a_{ii}}
|
||||||
@ -604,7 +607,7 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения
|
|||||||
\ref{formula:eqn_diag_dominant}). Заданная точность достигается
|
\ref{formula:eqn_diag_dominant}). Заданная точность достигается
|
||||||
при выполнении условия:
|
при выполнении условия:
|
||||||
\begin{equation}
|
\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}
|
\label{formula:precision_iter_sle}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||||
@ -614,7 +617,7 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения
|
|||||||
\subsubsection{Описание метода}
|
\subsubsection{Описание метода}
|
||||||
Для матрицы СЛУ (\ref{formula:eqn_matrix_system}) размеров
|
Для матрицы СЛУ (\ref{formula:eqn_matrix_system}) размеров
|
||||||
\(n \times n\), и начального приближения \(x^{(0)}\) приближенное
|
\(n \times n\), и начального приближения \(x^{(0)}\) приближенное
|
||||||
решение на итерации \(p, p = 1,2,3,\dots,k,k+1\) вычисляется по
|
решение на итерации \(p, p = 1,2,3,\dots,k\) вычисляется по
|
||||||
следующей формуле:
|
следующей формуле:
|
||||||
\begin{equation*}
|
\begin{equation*}
|
||||||
x^{(p+1)}_i = \frac{1}{a_{ii}}
|
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);
|
x^{(p+1)}_{i} = f_i(x^{(p)}_1,x^{(p)}_2,\dots,x^{(p)}_n);
|
||||||
\quad i=1,2,3,\dots,n
|
\quad i=1,2,3,\dots,n
|
||||||
\end{equation}
|
\end{equation}
|
||||||
где \(p, p = 1,2,3,\dots,k,k+1\) --- номер итерации.
|
где \(p, p = 1,2,3,\dots,k\) --- номер итерации.
|
||||||
|
|
||||||
Заданная точность \(\varepsilon\) достигается выполнением
|
Заданная точность \(\varepsilon\) достигается выполнением
|
||||||
следующего условия:
|
следующего условия:
|
||||||
\begin{equation*}
|
\begin{equation*}
|
||||||
\forall i = 1,2,3,\dots,n;\
|
\max_i |x^{(p+1)}_i - x^{(p)}_i | < \varepsilon; \quad
|
||||||
\max_i |x^{(k+1)}_i - x^{(k)}_i | < \varepsilon
|
i = 1,2,3,\dots,n
|
||||||
\end{equation*}
|
\end{equation*}
|
||||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||||
Реализаций данного метода в библиотеках numpy, scipy не найдено.
|
Реализаций данного метода в библиотеках numpy, scipy не найдено.
|
||||||
|
|
||||||
\subsection{Метод Зейделя для систем нелинейных уравнений}
|
\subsection{Метод Зейделя для систем нелинейных уравнений}
|
||||||
|
Данный метод является модификацией предыдущего; отличие состоит в
|
||||||
|
условии сходимости и формуле получения приближенного решения.
|
||||||
|
|
||||||
|
Ниже будут описаны только вышеперечисленные различия.
|
||||||
\subsubsection{Описание метода}
|
\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}
|
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||||
|
Реализаций данного метода в библиотеках numpy, scipy не обнаружено.
|
||||||
|
|
||||||
\subsection{Метод Ньютона решения систем нелинейных уравнений}
|
\subsection{Метод Ньютона решения систем нелинейных уравнений}
|
||||||
\subsubsection{Описание метода}
|
\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}
|
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||||
|
Реализаций данного алгоритма в библиотеках numpy, scipy не найдено,
|
||||||
|
кроме того, для его работы требуется нахождение частных производных.
|
||||||
|
|
||||||
|
Для поиска частной производной в scipy есть функция \textbf{derivative}
|
||||||
|
в модуле \textbf{scipy.misc}, но она отмечена устаревшей и будет
|
||||||
|
удалена в версии 1.12.0, поэтому реализация данного метода с помощью
|
||||||
|
применения функций общей направленности библиотеки рассматриваться
|
||||||
|
не будет.
|
||||||
|
|
||||||
\section{Аппроксимация функций}
|
\section{Аппроксимация функций}
|
||||||
|
Иногда значения некоторой функциональной зависимости
|
||||||
|
\(y= \widetilde{y}(x) \) известны для отдельных пар значений
|
||||||
|
\((x_i,y_i)\).
|
||||||
|
|
||||||
|
Задача восстановления аналитической функции \(\widetilde{y}\)
|
||||||
|
по отдельным парам значений называется аппроксимацией.
|
||||||
|
Для получения ее однозначного решения необходимо задать общий вид
|
||||||
|
функции, включающей коэффициенты, и затем эти коэффициенты определить
|
||||||
|
с помощью подходящего метода.
|
||||||
|
|
||||||
|
Для определения коэффициентов существует два основных подхода ---
|
||||||
|
интерполяция (когда \(y_i = \widetilde{x_i}\)), и сглаживание, когда
|
||||||
|
требуется лишь минимизировать отклонение от известных значений.
|
||||||
|
|
||||||
|
Первые три метода решают поставленную задачу с помощью интерполяции,
|
||||||
|
последний --- с помощью сглаживания.
|
||||||
\subsection{Интерполяционный полином в форме Лагранжа}
|
\subsection{Интерполяционный полином в форме Лагранжа}
|
||||||
\subsubsection{Описание метода}
|
\subsubsection{Описание метода}
|
||||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||||
|
Loading…
Reference in New Issue
Block a user