[content] Add 2 methods, add spline interpolation
This commit is contained in:
parent
9315741d73
commit
4887f3ba2a
100
main.tex
100
main.tex
@ -729,13 +729,14 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения
|
||||
\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)}_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 +
|
||||
@ -745,12 +746,16 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения
|
||||
\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 \\
|
||||
\end{aligned}
|
||||
\label{formula:SnLE-Newton-sys}
|
||||
\end{equation}
|
||||
\begin{equation*}
|
||||
\begin{aligned}
|
||||
& \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}
|
||||
\end{equation*}
|
||||
Данную систему можно решить любым наиболее подходящим с учетом доступных
|
||||
ресурсов методом.
|
||||
|
||||
@ -784,23 +789,100 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения
|
||||
с помощью подходящего метода.
|
||||
|
||||
Для определения коэффициентов существует два основных подхода ---
|
||||
интерполяция (когда \(y_i = \widetilde{x_i}\)), и сглаживание, когда
|
||||
интерполяция (когда \(\widetilde{y}(x_i) = y_i\)), и сглаживание, когда
|
||||
требуется лишь минимизировать отклонение от известных значений.
|
||||
|
||||
Первые три метода решают поставленную задачу с помощью интерполяции,
|
||||
последний --- с помощью сглаживания.
|
||||
\subsection{Интерполяционный полином в форме Лагранжа}
|
||||
\subsection{Интерполяционный полином Лагранжа}
|
||||
\subsubsection{Описание метода}
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
Для известных пар значений \((x_i,y_i), x_i \in [a,b]; i = 1,2,3,\dots,n\)
|
||||
строится полином \(P(x)\), удовлетворяющий условию \(P(x_i) = y_i\).
|
||||
|
||||
\subsection{Интерполяционный полином в форме Ньютона}
|
||||
Полином \(P(x)\) определяется следующей формулой:
|
||||
\begin{equation*}
|
||||
P(x) = L_{n-1}(x) = \sum_{i=1}^{n}y_i\cdot l_i(x)
|
||||
\end{equation*}
|
||||
\(l_i(x)\) --- фундаментальные полиномы Лагранжа, которые удовлетворяют равенству (\ref{formula:ip-lagr-eq1}), и имеют следующий вид:
|
||||
\begin{equation*}
|
||||
l_i(x) = \frac{(x-x_1)\dots (x-x_{i-1})(x-x_{i+1})\dots(x-x_n)}{(x_i-x_1)\dots(x_i-x_{i-1})(x_i-x_{i+1})\dots(x_i-x_n)}
|
||||
\end{equation*}
|
||||
\begin{equation}
|
||||
l_k(x_i) = \left\{
|
||||
\begin{aligned}
|
||||
& 1, i = k \\
|
||||
& 0, i \ne k. \\
|
||||
\end{aligned}
|
||||
\right.
|
||||
\label{formula:ip-lagr-eq1}
|
||||
\end{equation}
|
||||
|
||||
Из формулы полинома видно, что его степень не превышает \(n-1\).
|
||||
Данное свойство сохранится и для следующего метода.
|
||||
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
Данный метод реализован в библиотеке scipy в виде функции
|
||||
\textbf{lagrange} в модуле \textbf{scipy.interpolate}.
|
||||
Одной из ее особенностей является низкая устойчивость --- авторы не
|
||||
рекомендуют запускать алгоритм на более чем 20 парах \((x,y)\) входных
|
||||
значений \cite{links:scipy_doc}.
|
||||
|
||||
Данная функция имеет следующие параметры:
|
||||
\begin{enumerate}
|
||||
\item \(x\) --- array\_like
|
||||
|
||||
\(x\) представляет координаты \(x\) набора точек данных.
|
||||
\item \(w\) --- array\_like
|
||||
|
||||
\(w\) представляет координаты \(y\) набора точек данных,
|
||||
т. е. \(f(x)\).
|
||||
\end{enumerate}
|
||||
|
||||
Данная функция возвращает полином (тип --- \verb|poly1d| из
|
||||
библиотеки \textbf{numpy} \cite{links:numpy_doc}).
|
||||
|
||||
\subsection{Интерполяционный полином Ньютона}
|
||||
\subsubsection{Описание метода}
|
||||
Интерполяционный полином Ньютона имеет вид
|
||||
\begin{align*}
|
||||
N_{n-1}(x) = \Delta^{0}(x_{1}) + \Delta^{1}(x_{1},x_{2})(x-x_{1}) + \Delta^{2}(x_{1},x_{2},x_{3})(x-x_{1})(x-x_{2}) + \\
|
||||
+ \dots + \Delta^{n-1}(x_{1},x_{2},\dots,x_{n-1})(x-x_{1})(x-x_{2})\dots(x-x_{n-1})
|
||||
\end{align*}
|
||||
где \(\Delta^{0}(x_{1})\dots\Delta^{n-1}(x_{1},x_{2},\dots,x_{n-1})\) ---
|
||||
конечные разницы порядка \(0,\dots, n-1\), которые вычисляются следующим
|
||||
образом:
|
||||
\begin{nospaceflalign*}
|
||||
& \Delta^{0}(x_i) = y_i & \\
|
||||
& \Delta^{1}(x_i,x_k) = \frac{\Delta^{0}(x_i) - \Delta^{0}(x_k)}{x_i-x_k} & \\
|
||||
& \Delta^{2}(x_i,x_j,x_k) = \frac{\Delta^{1}(x_i,x_j) - \Delta^{1}(x_j,x_k)}{x_i-x_k}
|
||||
\end{nospaceflalign*}
|
||||
и т.д.
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
|
||||
Реализаций данного метода в в библиотеках numpy, scipy не найдено.
|
||||
\subsection{Сплайн-интерполяция}
|
||||
\subsubsection{Описание метода}
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
Между парами значений \((x_{i-1},y_{i-1}),(x_i,y_i)\) строятся
|
||||
функции-сплайны \(f_1(x),\dots,f_n(x)\), соответствущие условиям
|
||||
непрерывности. Комбинация таких функций образует исходную:
|
||||
\begin{equation*}
|
||||
\widetilde{y}(x) = \left\{
|
||||
\begin{aligned}
|
||||
& f_1(x),\; x_0 \le x < x_1 \\
|
||||
& f_2(x),\; x_1 \le x < x_2 \\
|
||||
& \ \dots \qquad \quad \dots \\
|
||||
& f_n(x),\; x_{n-1} \le x < x_n \\
|
||||
\end{aligned}
|
||||
\right.
|
||||
\end{equation*}
|
||||
|
||||
Иногда выбирают сплайны такого вида, что непрерывными будут и их
|
||||
производные, вплоть до нужного порядка (например, если в роли сплайнов
|
||||
выбрать полиномы 3 степени, то они будут соответствовать условиями
|
||||
непрерывности вместе с 1 и 2 производными). В зависимости от цели,
|
||||
на сплайны могут быть наложены и иные ограничения.
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
В библиотеке scipy существует множество реализаций данного метода,
|
||||
которые отличаются используемым видом сплайна.
|
||||
\subsection{Сглаживание. Метод наименьших квадратов}
|
||||
\subsubsection{Описание метода}
|
||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||
|
Loading…
Reference in New Issue
Block a user