Compare commits
2 Commits
f1a6257b45
...
afc4b083ec
Author | SHA1 | Date | |
---|---|---|---|
|
afc4b083ec | ||
|
36f397d6aa |
@ -20,6 +20,7 @@
|
||||
\usepackage{xstring}
|
||||
\usepackage{tabularx}
|
||||
\usepackage{enumitem}
|
||||
\usepackage{mathtools}
|
||||
\usepackage[strict=true]{csquotes}
|
||||
\usepackage[abspath]{currfile}
|
||||
\usepackage[hidelinks,linktoc=all]{hyperref}
|
||||
|
112
main.tex
112
main.tex
@ -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}
|
||||
|
Loading…
Reference in New Issue
Block a user