При решении некоторых практических задач или проведении исследований
При решении некоторых практических задач или проведении исследований
может быть получена математическая модель, которая включает
может быть получена математическая модель, которая включает
непрерывную функцию \(F(x), x \in\Re\), и необходимо определить корни уравнения
непрерывную функцию \(F(x), x \in\textbf{R}\), и необходимо определить корни уравнения
\(F(x)=0\). Если данное уравнение не имеет вид \(ax + b =0\),
\(F(x)=0\). Если данное уравнение не имеет вид \(ax + b =0\),
где \(a,b\) -- константы, то оно будет нелинейным.
где \(a,b\) -- константы, то оно будет нелинейным.
Для решения нелинейных уравнений существует несколько методов, в данной работе будут рассмотрены итерационные.
Для решения нелинейных уравнений существует несколько методов, в данной работе будут рассмотрены итерационные.
Каждый из итерационных методов, перечисленных ниже, соответствует
Каждый из итерационных методов, перечисленных ниже, соответствует
следующему алгоритму из двух этапов \cite[с. 15]{book:nm-examples}:
следующему алгоритму из двух этапов \cite[с. 15]{book:nm-examples}.
\begin{enumerate}
\begin{enumerate}
\itemотыскание приближенного значения корня или содержащего
\itemОтыскание приближенного значения корня или содержащего
его отрезка;
его отрезка.
\itemуточнения значения до некоторой степени точности.
\itemУточнения значения до некоторой степени точности.
\end{enumerate}
\end{enumerate}
Начальное приближение определяется исходя из физических соображений
Начальное приближение определяется, исходя из физических соображений
решений похожих задач или графических методов. Если ни один из этих
решений похожих задач или графических методов. Если ни один из этих
способов не доступен или не позволяет получить начальное приближение,
способов не доступен или не позволяет получить начальное приближение,
удовлетворяющее требованиям, то применяют следующий алгоритм
удовлетворяющее требованиям, то применяют следующий алгоритм
@@ -54,7 +54,10 @@
отрезка.
отрезка.
\end{enumerate}
\end{enumerate}
Так как выполняется условие \(F(a)\cdot F(b) < 0\) и \(F(x)\) непрерывна, то обязательно найдется такое \(x_k \in(a,b)\), что \(F(x_k)=0\) либо \(|F(x_k)| < \epsilon\), где \(\epsilon\) --- погрешность искомого решения.
Так как выполняется условие \(F(a)\cdot F(b) < 0\) и \(F(x)\)
непрерывна, то обязательно найдется такое \(x_k \in(a,b)\), что
\(F(x_k)=0\) либо \(|F(x_k)| < \varepsilon\), где \(\varepsilon\)
--- погрешность искомого решения.
\subsection{Метод деления отрезка пополам}
\subsection{Метод деления отрезка пополам}
Данный метод использует технику поиска решения, похожую на бинарный
Данный метод использует технику поиска решения, похожую на бинарный
\item Для каждого из взятых отрезков переходим к п.\ref{list:hls_begin},
\label{list:hls_prepare}
с увеличением номера итерации на \(1\) и установленными
\item Для каждого из взятых отрезков переходим к
относительно взятого отрезка значениями из п.\ref{list:hls_prepare}.
п.\ref{list:hls_begin}, с увеличением номера итерации
на \(1\) и установленными относительно взятого
отрезка значениями из п.\ref{list:hls_prepare}.
\end{enumerate}
\end{enumerate}
После применение метода на заданных входных данных получим множество
После применение метода на заданных входных данных получим множество
решений уравнения \(Ans =\{x, x \in\Re\}, |Ans| \geq1\).
решений уравнения \(Ans =\{x, x \in\textbf{R}\}, |Ans| \geq1\).
\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}, которая реализует
@@ -96,8 +103,9 @@
\begin{enumerate}
\begin{enumerate}
\item\(f\) --- function
\item\(f\) --- function
Функция Python, возвращающая число.\(f\) должна быть непрерывной, а\(f(a)\) и \(f(b)\) должны иметь противоположные знаки.
Функция Python, возвращающая число.\(f\) должна быть
непрерывной, а \(f(a)\) и \(f(b)\) должны иметь
противоположные знаки.
\item\(a\) --- scalar
\item\(a\) --- scalar
Первый конец интервала \([a,b]\).
Первый конец интервала \([a,b]\).
@@ -106,22 +114,36 @@
Второй конец интервала \([a,b]\).
Второй конец интервала \([a,b]\).
\item\(xtol\) --- number, необязательный
\item\(xtol\) --- number, необязательный
Вычисленный корень \(x0\) будет удовлетворять\verb|np.allclose(x, x0,| \verb|atol=xtol,| \verb|rtol=rtol)|, где \(x\) --- точный корень. Параметр должен быть положительным.
Вычисленный корень \(x0\) будет удовлетворять
\verb|np.allclose(x, x0,| \verb|atol=xtol,|
\verb|rtol=rtol)|, где \(x\) --- точный корень.
Параметр должен быть положительным.
\item\(rtol\) --- number, необязательный
\item\(rtol\) --- number, необязательный
Вычисленный корень \(x0\) будет удовлетворять\verb|np.allclose(x, x0,| \verb|atol=xtol, rtol=rtol)|, где \(x\) --- точный корень. Параметр не может быть меньше значения по умолчанию \verb|4*np.finfo(float).eps|.
где \(x\) --- точный корень. Параметр не может быть
меньше значения по умолчанию \verb|4*np.finfo(float).eps|.
\item\(maxiter\) --- int, необязательный
\item\(maxiter\) --- int, необязательный
Если сходимость не достигается в итерациях \(maxiter\), возникает ошибка. Должен быть \(\geq0\).
Если сходимость не достигается в итерациях \(maxiter\),
возникает ошибка. Должен быть \(\geq0\).
\item\(args\) --- tuple, необязательный
\item\(args\) --- tuple, необязательный
Содержит дополнительные аргументы для функции \(f\).\(f\) вызывается с помощью \verb|apply(f, (x)+args)|.
Содержит дополнительные аргументы для функции \(f\).
\(f\) вызывается с помощью \verb|apply(f, (x)+args)|.
\item\(full\_output\) --- bool, необязательный
\item\(full\_output\) --- bool, необязательный
Если \(full\_output\) имеет значение \verb|False|, возвращается корень. Если \(full\_output\) имеет значение \verb|True|, возвращаемое значение равно \verb|(x, r)|, где \(x\) --- это корень, а\(r\) --- объект \verb|RootResults|.
Если \(full\_output\) имеет значение \verb|False|,
возвращается корень. Если \(full\_output\) имеет значение
\verb|True|, возвращаемое значение равно \verb|(x, r)|, где
\(x\) --- это корень, а\(r\) --- объект \verb|RootResults|.
\item\(disp\) --- bool, необязательный
\item\(disp\) --- bool, необязательный
Если \verb|True|, будет сгенерировано исключение\verb|RuntimeError|, если алгоритм не сошелся. В противном случае статус сходимости записывается в возвращаемый объект \verb|RootResults|.
Если \verb|True|, будет сгенерировано исключение
\verb|RuntimeError|, если алгоритм не сошелся. В противном
случае статус сходимости записывается в возвращаемый объект
\newcommand{\cwdirectorPosition}[0]{Руководитель к.пед.н., доцент \mbox{кафедры ПМИ}}
\newcommand{\cwdirector}[0]{А.Н.~Соколова}
\newcommand{\cwdiscipline}[0]{Численные методы}
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.