From cc89b8119066492982739e57a4adfe7ff4390f6b Mon Sep 17 00:00:00 2001 From: AVAtarMod Date: Fri, 18 Aug 2023 10:50:55 +0300 Subject: [PATCH] Add Newton method to theory --- main.tex | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) diff --git a/main.tex b/main.tex index ee5ad5e..4c1d0c6 100644 --- a/main.tex +++ b/main.tex @@ -94,6 +94,7 @@ После применение метода на заданных входных данных получим множество решений уравнения \(Ans = \{x, x \in \textbf{R}\}, |Ans| \geq 1\). + \subsubsection{Реализации метода в библиотеках numpy, scipy} Библиотека scipy содержит функцию \textbf{bisect} из модуля \textbf{scipy.optimize} \cite{links:scipy_doc}, которая реализует @@ -147,10 +148,83 @@ \end{enumerate} \subsection{Метод Ньютона (метод касательных)} +Данный итерационный метод позволит найти единственное решение +уравнения (если оно существует) для каждого из выбранных начальных +приближений. +\subsubsection{Описание метода} +На итерации \(i, i = 1\dots k\), строится касательная к кривой +\(y = F(x)\) в точке \((x_i;F(x_i))\), затем находится \(x_{i+1}\) +--- пересечение данной касательной с осью \(Ox\). Процесс продолжается +пока не будет достигнута заданная точность (\(| F ( x_i ) |< \varepsilon\) +или \(| x_{i+1} - x_i | < \varepsilon\)). + +\subsubsection{Реализации метода в библиотеках numpy, scipy} +Библиотека scipy содержит функцию \textbf{newton} из модуля +\textbf{scipy.optimize} \cite{links:scipy_doc}, которая реализует +данный метод. + +Функция имеет следующие параметры (задаются в порядке перечисления): +\begin{enumerate} + \item \(f\) --- function + + Функция, корень которой требуется. Это должна быть функция + одной переменной вида \(f(x,a,b,c \dots)\), где \(a,b,c \dots\) + --- дополнительные аргументы, которые можно передать в параметре + \(args\). + \item \(x0\) --- float, sequence, или ndarray + + Начальная оценка корня, которая должна быть где-то рядом с + фактическим корнем. Если \(f\) не скалярная, то \(f\) должна + быть векторизована и возвращать последовательность или массив + той же формы, что и ее первый аргумент. + \item \(fprime\) --- callable, необязательный + + Производная функции, когда она доступна и удобна. Если это + \verb|None| (по умолчанию), то используется метод секущей. + \item \(args\) --- tuple, необязательный + + Дополнительные аргументы для использования при вызове функции. + \item \(tol\) --- float, необязательный + + Допустимая погрешность значения корня. Если + \(y=f(x),y \in \textbf{Z}\), рекомендуется большее значение + \(tol\), так как и действительная, и мнимая части \(x\) + вносят вклад в \(|x - x0|\). + \item \(maxiter\) --- int, необязательный + + Максимальное количество итераций. + \item \(fprime2\) --- callable, необязательный + + Производная функции второго порядка, если она доступна и удобна. + Если это \verb|None| (по умолчанию), то используется обычный + метод Ньютона или метод секущих. Если не \verb|None|, то + используется метод Галлея. + \item \(x1\) float, необязательный + + Еще одна оценка корня, которая должна быть где-то рядом с фактическим корнем. Используется, если \(fprime\) не указан. + \item \(rtol\) --- float, необязательный + + Допустимое отклонение (относительное) для прерывания работы. + \item \(full\_output\) --- bool, необязательный + + Если \(full\_output\) имеет значение \verb|False| (по умолчанию), + возвращается корень. Если \verb|True| и \(x0\) --- скаляр, + возвращаемое значение равно \verb|(x, r)|, где \(x\) --- это + корень, а \(r\) --- объект \verb|RootResults|. Если \verb|True| + и \(x0\) --- не скаляр, возвращаемое значение равно + \verb|(x, converged, zero_der)|, где: + \begin{itemize} + \item converged --- ndarray из значений bool. Указывает, какие элементы сошлись успешно. + \item zero\_der --- ndarray из значений bool. Указывает, какие элементы имеют нулевую производную. + \end{itemize} + \item \(disp\) --- bool, необязательный + + Если \verb|True| и алгоритм не сошелся, будет сгенерировано исключение \verb|RuntimeError|, с сообщением, содержащим количество итераций и текущее значение функции. В противном случае статус сходимости записывается в возвращаемый объект \verb|RootResults|. Игнорируется, если \verb|x0| не является скалярным. Примечание: это не имеет ничего общего с отображением, однако ключевое слово \verb|disp| нельзя переименовать для сохранения обратной совместимости. +\end{enumerate} + \subsection{Метод простой итерации} \chapter{Экспериментальное исследование возможностей библиотек} - \chapter*{Заключение} \addcontentsline{toc}{chapter}{Заключение}