diff --git a/main.tex b/main.tex index b9e55ee..9ca1edd 100644 --- a/main.tex +++ b/main.tex @@ -1273,7 +1273,7 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения \verb|False|. \item \(nan\_policy\) --- {\verb|"raise"|, \verb|"omit"|, \verb|None|}, необязательный - Определяет, как действовать, если входные данные содержат nan. Доступны следующие параметры (по умолчанию --- \verb|None|): + Определяет, как действовать, если входные данные содержат \verb|NaN|. Доступны следующие параметры (по умолчанию --- \verb|None|): \begin{itemize} \item \verb|"raise"|: выдает ошибку @@ -1313,7 +1313,7 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения дополнительную информацию о работе алгоритма. \item \(mesg\) --- str - Cтроковое сообщение с информацией о решении. + Строковое сообщение с информацией о решении. \item \(ier\) --- int Целочисленный флаг. Если он равен 1, 2, 3 или 4, решение @@ -1495,7 +1495,7 @@ LU-разложение \cite[с. 259]{book:levitin}. Для получения (он позволяет находить точное решение для любых f\(x\), если \(f^{(4)}(x) = 0, x \in [a;b] \), в соответствии с формулой Джузеппе Пеано). Из его недостатков можно отметить низкую -точность на пикообразных функциях (т.е. значение которой резко +точность на пилообразных функциях (т.е. значение которой резко возрастают на отрезках малой длины). При этом, если количество точек, по которым строится \(P_m(x)\), четно, то метод трапеций может оказаться удобнее, тем самым прекрасно дополняя @@ -1522,10 +1522,10 @@ f\(x\), если \(f^{(4)}(x) = 0, x \in [a;b] \), в соответствии \begin{enumerate} \item \(y\) --- array\_like - Массив входных данных по которым будет вычислятся интеграл + Массив входных данных по которым будет вычисляться интеграл \item \(x\) --- array\_like, необязательный - Массив значений \(x\), соответсвующих \(y\). Если \verb|None| + Массив значений \(x\), соответствующих \(y\). Если \verb|None| (по умолчанию), то в роли \(x\) будет создан массив равноотстоящих значений (\(h = dx\)) \item \(dx\) --- scalar, необязательный @@ -1561,7 +1561,7 @@ f\(x\), если \(f^{(4)}(x) = 0, x \in [a;b] \), в соответствии \int_{x_{i-1}}^{x_{i+1}} P_2(x)\, dx = \frac{h}{3} \left( f(x_{i-1})+4f(x_i)+f(x_{i+1}) \right), \quad h = \frac{b-a}{N} \end{equation*} -В результате, значение интерграла \(I\) будет вычислятся по формуле +В результате, значение интеграла \(I\) будет вычисляться по формуле \begin{equation*} I \approx \frac{h}{3} \sum_{i=0}^{n-1}(f(x_{2i})+4f(x_{2i+1})+f(x_{2i+2})) \end{equation*} @@ -1718,8 +1718,8 @@ f\(x\), если \(f^{(4)}(x) = 0, x \in [a;b] \), в соответствии В библиотеке scipy реализована модификации явного метода Рунге-Кутта --- явные методы Рунге-Кутта-Фельберга \cite{article:fehlberg}, в функции \textbf{solve\_ivp} модуля \textbf{scipy.integrate}. -Метод Рунге-Кутты-Фельберга порядка \(n(m)\) нужно понимать как метод -Рунге-Кутты порядка \(n\) с погрешностью \(O(h^m)\). +Метод Рунге-Кутта-Фельберга порядка \(n(m)\) нужно понимать как метод +Рунге-Кутта порядка \(n\) с погрешностью \(O(h^m)\). Дополнительно, существуют классы для низкоуровневого управления вычислениями: @@ -1733,7 +1733,7 @@ f\(x\), если \(f^{(4)}(x) = 0, x \in [a;b] \), в соответствии ОДУ, и включает в себя реализации нескольких методов. Далее будут описаны только те значения параметров, которые необходимы для решения задачи исследуемым методом (Рунге-Кутта). Также стоит учесть, что при -описании параметров, вместо \(x\) будет использваться \(t\), как и +описании параметров, вместо \(x\) будет использоваться \(t\), как и принято в зарубежных источниках. Данная функция имеет следующие параметры: \begin{enumerate} @@ -1746,7 +1746,7 @@ f\(x\), если \(f^{(4)}(x) = 0, x \in [a;b] \), в соответствии См. \(vectorized\) для получения более детальной информации. \item \(t\_span\) --- пара значений float - Интервал интегрирования \((t0, tf)\). Решатель (\(method\)) начинает выполнение с \(t=t0\) и осуществляет интегририрование, пока не выполнится условие \(t=tf\). И \(t0\), и \(tf\) должны быть числами с плавающей запятой или значениями, интерпретируемыми функцией преобразования чисел с плавающей запятой. + Интервал интегрирования \((t0, tf)\). Решатель (\(method\)) начинает выполнение с \(t=t0\) и осуществляет интегрирование, пока не выполнится условие \(t=tf\). И \(t0\), и \(tf\) должны быть числами с плавающей запятой или значениями, интерпретируемыми функцией преобразования чисел с плавающей запятой. \item \(y0\) --- array\_like формы (n,) Начальное состояние. Для задач на комплексной плоскости необходимо передавать комплексные \(y0\) (даже если начальное значение чисто вещественное). @@ -1754,26 +1754,26 @@ f\(x\), если \(f^{(4)}(x) = 0, x \in [a;b] \), в соответствии Используемый метод интеграции: \begin{itemize} - \item \verb|"RK45"| (по умолчанию): Явный метод Рунге-Кутты порядка 5(4). Погрешность контролируется в предположении точности метода четвертого порядка, но шаги выполняются с использованием формулы точности пятого порядка (проводится локальная экстраполяция). При включенном \(dense\_output\) используется интерполяционный полином четвертой степени. Может применяться на комплексной плоскости. + \item \verb|"RK45"| (по умолчанию): Явный метод Рунге-Кутта порядка 5(4). Погрешность контролируется в предположении точности метода четвертого порядка, но шаги выполняются с использованием формулы точности пятого порядка (проводится локальная экстраполяция). При включенном \(dense\_output\) используется интерполяционный полином четвертой степени. Может применяться на комплексной плоскости. - \item \verb|"RK23"|: Явный метод Рунге-Кутты порядка 3(2). Погрешность контролируется в предположении точности метода второго порядка, но шаги выполняются с использованием формулы точности третьего порядка (проводится локальная экстраполяция). Для плотного вывода используется кубический полином Эрмита. Может применяться на комплексной плоскости. + \item \verb|"RK23"|: Явный метод Рунге-Кутта порядка 3(2). Погрешность контролируется в предположении точности метода второго порядка, но шаги выполняются с использованием формулы точности третьего порядка (проводится локальная экстраполяция). Для плотного вывода используется кубический полином Эрмита. Может применяться на комплексной плоскости. - \item \verb|"DOP853"|: Явный метод Рунге-Кутты восьмого порядка. Является Python-реализацией алгоритма "DOP853", первоначально написанного на Fortran. При включенном \(dense\_output\) используется интерполяционный полином 7-го порядка с точностью до 7-го порядка. Может применяться на комплексной плоскости. + \item \verb|"DOP853"|: Явный метод Рунге-Кутта восьмого порядка. Является Python-реализацией алгоритма "DOP853", первоначально написанного на FORTRAN. При включенном \(dense\_output\) используется интерполяционный полином 7-го порядка с точностью до 7-го порядка. Может применяться на комплексной плоскости. - \item \verb|"Radau"|: Неявный метод Рунге-Кутты семейства Radau IIA порядка 5. Погрешность контролируется с помощью встроенной формулы третьего порядка точности. Кубический полином, который удовлетворяет условиям коллокация, используется при включенном \(dense\_output\). + \item \verb|"Radau"|: Неявный метод Рунге-Кутта семейства Radau IIA порядка 5. Погрешность контролируется с помощью встроенной формулы третьего порядка точности. Кубический полином, который удовлетворяет условиям коллокация, используется при включенном \(dense\_output\). \end{itemize} - Явные методы Рунге-Кутты (\verb|"RK23"|, \verb|"RK45"|, \verb|"DOP853"|) следует использовать для нежестких уравнений, неявные методы (\verb|"Radau"|) --- для жестких. Среди методов Рунге-Кутты для решения с высокой точностью (низкие значения \(rtol\) и \(atol\)) рекомендуется \verb|"DOP853"|. + Явные методы Рунге-Кутта (\verb|"RK23"|, \verb|"RK45"|, \verb|"DOP853"|) следует использовать для нежестких уравнений, неявные методы (\verb|"Radau"|) --- для жестких. Среди методов Рунге-Кутта для решения с высокой точностью (низкие значения \(rtol\) и \(atol\)) рекомендуется \verb|"DOP853"|. Если не уверены, сначала попробуйте запустить \verb|"RK45"|. Если он делает необычно много итераций, расходится или терпит неудачу, ваша проблема, вероятно, будет сложной, и вам следует использовать \verb|"Radau"|. Вы также можете передать произвольный класс, производный от \(OdeSolver\), который реализует решатель. \item \(t\_eval\)--- array\_like / \verb|None|, необязательный - Значения \(t\), для которых нужно сохранить вычисленные значения решения, должны быть отсортированы и находиться в пределах \(t\_span\). Если \verb|None| (по умолчанию), использутся точки, выбранные решателем. + Значения \(t\), для которых нужно сохранить вычисленные значения решения, должны быть отсортированы и находиться в пределах \(t\_span\). Если \verb|None| (по умолчанию), используются точки, выбранные решателем. \item \(dense\_output\) --- bool, необязательный Определяет, следует ли вычислять непрерывное решение. По умолчанию --- \verb|False|. - \item \(events\) --- callable / list из callables, необязательный + \item \(events\) --- callable / list из callable, необязательный События для отслеживания. Если \verb|None| (по умолчанию), события отслеживаться не будут. Событие происходит, когда