Добавление информации о методах (№1) #2

Merged
stud128245 merged 42 commits from dev into master 2023-10-27 08:28:22 +00:00
Showing only changes of commit 0f23ddeecc - Show all commits

View File

@ -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| (по умолчанию),
события отслеживаться не будут. Событие происходит, когда