Fix punctuation; style. Replace math symbols

This commit is contained in:
AVAtarMod 2023-08-15 12:20:32 +03:00
parent d6d49c20c8
commit 5ab4a6e67c
Signed by: stud128245
GPG Key ID: 43198AE4D0774328

View File

@ -27,20 +27,20 @@
\section{Численное решение нелинейных уравнений} \section{Численное решение нелинейных уравнений}
При решении некоторых практических задач или проведении исследований При решении некоторых практических задач или проведении исследований
может быть получена математическая модель, которая включает может быть получена математическая модель, которая включает
непрерывную функцию \(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{Метод деления отрезка пополам}
Данный метод использует технику поиска решения, похожую на бинарный Данный метод использует технику поиска решения, похожую на бинарный
поиск. поиск.
@ -65,11 +68,13 @@
применяем следующий алгоритм: применяем следующий алгоритм:
\begin{enumerate} \begin{enumerate}
\item Рассмотрим отрезки \([a;x_i], [x_i;b]\), \(i = 0 \dots k\) \item Рассмотрим отрезки \([a;x_i], [x_i;b]\), \(i = 0 \dots k\)
--- номер итерации. На первой итерации \(i = 0\). \label{list:hls_begin} --- номер итерации. На первой итерации \(i = 0\).
\label{list:hls_begin}
\item Из рассмотренных отрезков берем те, что удовлетворяют условию \item Из рассмотренных отрезков берем те, что удовлетворяют условию
\(F(a) \cdot F(b) < 0\), где \(a,b\) --- границы отрезка. \label{list:hls_test} \(F(a) \cdot F(b) < 0\), где \(a,b\) --- границы отрезка.
\label{list:hls_test}
\item Для каждого из взятых в п.\ref{list:hls_test} отрезков \item Для каждого из взятых в п.\ref{list:hls_test} отрезков
вычисляем их длину \(l\). Если \(l < \epsilon\), вычисляем их длину \(l\). Если \(l < \varepsilon\),
тогда дальнейшее выполнение данного алгоритма для данного тогда дальнейшее выполнение данного алгоритма для данного
отрезка прекращается. За решение уравнения принимается отрезка прекращается. За решение уравнения принимается
число \((a+b)/2\), округленное с учетом заданной погрешности. число \((a+b)/2\), округленное с учетом заданной погрешности.
@ -79,25 +84,28 @@
устанавливаем значения устанавливаем значения
\(a,b,x_{i+1}\). Для левого отрезка эти значения будут равны \(a,b,x_{i+1}\). Для левого отрезка эти значения будут равны
\(a = a,b = x_i,x_{i+1} = (a+x_i)/2\), для правого --- \(a = a,b = x_i,x_{i+1} = (a+x_i)/2\), для правого ---
\(a = x_i,b = b,x_{i+1} = (b+x_i)/2\). \label{list:hls_prepare} \(a = x_i,b = b,x_{i+1} = (b+x_i)/2\).
\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| \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}, которая реализует
данный метод. данный метод.
Функция имеет следующие параметры (задаются в порядке перечисления): Функция имеет следующие параметры (задаются в порядке перечисления):
\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|. Вычисленный корень \(x0\) будет удовлетворять
\verb|np.allclose(x, x0,| \verb|atol=xtol, rtol=rtol)|,
где \(x\) --- точный корень. Параметр не может быть
меньше значения по умолчанию \verb|4*np.finfo(float).eps|.
\item \(maxiter\) --- int, необязательный \item \(maxiter\) --- int, необязательный
Если сходимость не достигается в итерациях \(maxiter\), возникает ошибка. Должен быть \(\geq 0\). Если сходимость не достигается в итерациях \(maxiter\),
возникает ошибка. Должен быть \(\geq 0\).
\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|, если алгоритм не сошелся. В противном
случае статус сходимости записывается в возвращаемый объект
\verb|RootResults|.
\end{enumerate} \end{enumerate}
\subsection{Метод Ньютона (метод касательных)} \subsection{Метод Ньютона (метод касательных)}