Merge pull request 'Исправление замечаний (№1)' (#1) from dev into master
Reviewed-on: #1
This commit is contained in:
commit
897e02bcd0
@ -42,3 +42,6 @@ Python \cite{links:python} --- один из самых популярных н
|
|||||||
|
|
||||||
В данной работе используются язык Python, библиотеки numpy и
|
В данной работе используются язык Python, библиотеки numpy и
|
||||||
scipy версий \(3.11\), \(1.25\) и \(1.11\) соответственно.
|
scipy версий \(3.11\), \(1.25\) и \(1.11\) соответственно.
|
||||||
|
|
||||||
|
Курсовой проект включает введение, две главы,
|
||||||
|
заключение, библиографический список и приложение.
|
||||||
|
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{Метод Ньютона (метод касательных)}
|
||||||
|
@ -31,17 +31,17 @@
|
|||||||
}}
|
}}
|
||||||
\vspace{2em}
|
\vspace{2em}
|
||||||
|
|
||||||
Курсовой проект по дисциплине <<Численные методы>>
|
Курсовой проект по дисциплине <<\cwdiscipline>>
|
||||||
\end{center}
|
\end{center}
|
||||||
\vfill
|
\vfill
|
||||||
\begin{table}[ht]
|
\begin{table}[ht]
|
||||||
\centering
|
\centering
|
||||||
\begin{tabularx}{\textwidth}{>{\raggedright}p{.5\textwidth}X}
|
\begin{tabularx}{\textwidth}{>{\raggedright\arraybackslash}X>{\raggedright\arraybackslash}X}
|
||||||
Выполнил студент группы \mbox{ПМИб-3301-52-00} \vspace{1mm} & { {\rule{3cm}{0.1mm}}~/\cwauthor}/ \\
|
Выполнил студент группы \mbox{\cwauthorPosition} \vspace{1mm} & {{\rule{3cm}{0.1mm}}~/\cwauthor}/ \\
|
||||||
К.п.н. \mbox{кафедры} ПМИ \vspace{1cm} & {{\rule{3cm}{0.1mm}}~/А.Н.~Соколова/} \\
|
\cwdirectorPosition \vspace{10mm} & {{\rule{3cm}{0.1mm}}~/\cwdirector/} \\
|
||||||
Работа защищена с оценкой & {\rule{3cm}{0.1mm}} \hfill {\rule{1cm}{0.1mm}}.{\rule{1cm}{0.1mm}} \the\year\ г. \vspace{1cm} \\
|
Работа защищена с оценкой & {\rule{3cm}{0.1mm}} \hspace{3mm} {\rule{1cm}{0.1mm}}.{\rule{1cm}{0.1mm}} \the\year\ г. \vspace{1cm} \\
|
||||||
Члены комиссии \vspace{2mm} & {\rule{3cm}{0.1mm}} \hfill /{\rule{3.5cm}{0.1mm}}/ \\
|
Члены комиссии \vspace{2mm} & {\rule{3cm}{0.1mm}} \hspace{3mm} /{\rule{3.5cm}{0.1mm}}/ \\
|
||||||
\null & {\rule{3cm}{0.1mm}} \hfill /{\rule{3.5cm}{0.1mm}}/ \\
|
\null & {\rule{3cm}{0.1mm}} \hspace{3mm} /{\rule{3.5cm}{0.1mm}}/ \\
|
||||||
\end{tabularx}
|
\end{tabularx}
|
||||||
\end{table}
|
\end{table}
|
||||||
\vfill
|
\vfill
|
||||||
|
4
vars.tex
4
vars.tex
@ -1,2 +1,6 @@
|
|||||||
\newcommand{\cwtitle}[0]{Исследование возможностей библиотек numpy и scipy для реализации численных методов}
|
\newcommand{\cwtitle}[0]{Исследование возможностей библиотек numpy и scipy для реализации численных методов}
|
||||||
|
\newcommand{\cwauthorPosition}[0]{ПМИб-3301-52-00}
|
||||||
\newcommand{\cwauthor}[0]{Г.Е.~Ступников}
|
\newcommand{\cwauthor}[0]{Г.Е.~Ступников}
|
||||||
|
\newcommand{\cwdirectorPosition}[0]{Руководитель к.пед.н., доцент \mbox{кафедры ПМИ}}
|
||||||
|
\newcommand{\cwdirector}[0]{А.Н.~Соколова}
|
||||||
|
\newcommand{\cwdiscipline}[0]{Численные методы}
|
||||||
|
Loading…
Reference in New Issue
Block a user