Fix punctuation; style. Replace math symbols
This commit is contained in:
parent
d6d49c20c8
commit
5ab4a6e67c
70
main.tex
70
main.tex
@ -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{Метод Ньютона (метод касательных)}
|
||||||
|
Loading…
Reference in New Issue
Block a user