Add Newton method to theory
This commit is contained in:
parent
5ab4a6e67c
commit
cc89b81190
76
main.tex
76
main.tex
@ -94,6 +94,7 @@
|
|||||||
|
|
||||||
После применение метода на заданных входных данных получим множество
|
После применение метода на заданных входных данных получим множество
|
||||||
решений уравнения \(Ans = \{x, x \in \textbf{R}\}, |Ans| \geq 1\).
|
решений уравнения \(Ans = \{x, x \in \textbf{R}\}, |Ans| \geq 1\).
|
||||||
|
|
||||||
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
\subsubsection{Реализации метода в библиотеках numpy, scipy}
|
||||||
Библиотека scipy содержит функцию \textbf{bisect} из модуля
|
Библиотека scipy содержит функцию \textbf{bisect} из модуля
|
||||||
\textbf{scipy.optimize} \cite{links:scipy_doc}, которая реализует
|
\textbf{scipy.optimize} \cite{links:scipy_doc}, которая реализует
|
||||||
@ -147,10 +148,83 @@
|
|||||||
\end{enumerate}
|
\end{enumerate}
|
||||||
|
|
||||||
\subsection{Метод Ньютона (метод касательных)}
|
\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{Метод простой итерации}
|
\subsection{Метод простой итерации}
|
||||||
\chapter{Экспериментальное исследование возможностей библиотек}
|
\chapter{Экспериментальное исследование возможностей библиотек}
|
||||||
|
|
||||||
|
|
||||||
\chapter*{Заключение}
|
\chapter*{Заключение}
|
||||||
\addcontentsline{toc}{chapter}{Заключение}
|
\addcontentsline{toc}{chapter}{Заключение}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user