Модули и функции · встроенный MicroPython FEMM 5
scipy.integrate
Средства численного интегрирования предназначены для функции одного вещественного аргумента, заданной вызываемым объектом.
Условия работы
- Функция интегрируется как f(x) на интервале [a,b]. Единицы результата равны единицам f, умноженным на единицы x.
- Это интегралы от заданной функции. Интегралы по геометрическим блокам модели FEMM выполняют соответствующие команды постпроцессора.
- Контрольная оценка ошибки алгоритма не учитывает ошибки исходных данных и полевого расчёта.
scipy.integrate.quadscipy.integrate.rombergscipy.integrate.simpsonscipy.integrate.tanhsinhscipy.integrate.quadАдаптивная квадратура Гаусса—Кронрода.
scipy.integrate.quad
scipy.integrate.quad(f, a, b, *, order=5, eps=1e-14)Адаптивная квадратура Гаусса—Кронрода.
Аргументы
| Имя | Назначение и допустимые значения |
|---|---|
f | Вызываемая функция f(x), которая возвращает вещественное число. |
a | Вещественная нижняя граница. |
b | Вещественная верхняя граница. |
order | Порядок/глубина адаптивной квадратуры; по умолчанию 5. |
eps | Числовой параметр интерфейса; по умолчанию 10 × 10⁻¹⁵. В данной реализации quad он принимается и передаётся во внутренний алгоритм, но не участвует в критерии остановки. |
Возвращаемое значение
Кортеж (value,error): два float.
Особенности вызова
- Особенность встроенной реализации: изменение eps не задаёт требуемую точность quad. Глубину рекурсивного разбиения ограничивает order; оценивайте результат по возвращённой оценке error и повторному расчёту с другим order.
Пример
"Пример scipy.integrate.quad.\nСреда: встроенный MicroPython FEMM 5.\nАдаптивная квадратура Гаусса—Кронрода.\nРезультат: Кортеж (value,error): два float."
import scipy as sp
def f(i):
# Учебное потокосцепление psi=2I; интеграл по току — коэнергия, Дж.
return 2*i
r=sp.integrate.quad(f,0.0,2.0,eps=1e-8)
v,error=r
assert abs(v-4)<1e-6
print(v,error)
Ожидаемый результат. Интеграл равен 4 Дж с допуском 1e-6.
Скачать пример · Ссылка на функцию
Этот пример выполнен в установленном FEMM 5.
scipy.integrate.rombergУточнение трапеций экстраполяцией Ромберга.
scipy.integrate.romberg
scipy.integrate.romberg(f, a, b, *, steps=100, eps=1e-14)Уточнение трапеций экстраполяцией Ромберга.
Аргументы
| Имя | Назначение и допустимые значения |
|---|---|
f | Вызываемая функция f(x), которая возвращает вещественное число. |
a | Вещественная нижняя граница. |
b | Вещественная верхняя граница. |
steps | Предельное число шагов уточнения; по умолчанию 100. |
eps | Численная точность; исходный default для double равен 1e-14. В примере задаётся явно. |
Возвращаемое значение
float — оценка интеграла.
Пример
"Пример scipy.integrate.romberg.\nСреда: встроенный MicroPython FEMM 5.\nУточнение трапеций экстраполяцией Ромберга.\nРезультат: float — оценка интеграла."
import scipy as sp
def f(i):
# Учебное потокосцепление psi=2I; интеграл по току — коэнергия, Дж.
return 2*i
r=sp.integrate.romberg(f,0.0,2.0,eps=1e-8)
assert abs(r-4)<1e-6
print(r)
Ожидаемый результат. Интеграл равен 4 Дж с допуском 1e-6.
Скачать пример · Ссылка на функцию
Этот пример выполнен в установленном FEMM 5.
scipy.integrate.simpsonАдаптивное интегрирование по формуле Симпсона.
scipy.integrate.simpson
scipy.integrate.simpson(f, a, b, *, steps=100, eps=1e-14)Адаптивное интегрирование по формуле Симпсона.
Аргументы
| Имя | Назначение и допустимые значения |
|---|---|
f | Вызываемая функция f(x), которая возвращает вещественное число. |
a | Вещественная нижняя граница. |
b | Вещественная верхняя граница. |
steps | Предельное число шагов уточнения; по умолчанию 100. |
eps | Численная точность; исходный default для double равен 1e-14. В примере задаётся явно. |
Возвращаемое значение
float — оценка интеграла.
Особенности вызова
- В локальном scipy.integrate.simpson первый аргумент — функция f(x), а не таблица отсчётов. Для таблицы используйте np.trapz.
Пример
"Пример scipy.integrate.simpson.\nСреда: встроенный MicroPython FEMM 5.\nАдаптивное интегрирование по формуле Симпсона.\nРезультат: float — оценка интеграла."
import scipy as sp
def f(i):
# Учебное потокосцепление psi=2I; интеграл по току — коэнергия, Дж.
return 2*i
r=sp.integrate.simpson(f,0.0,2.0,eps=1e-8)
assert abs(r-4)<1e-6
print(r)
Ожидаемый результат. Интеграл равен 4 Дж с допуском 1e-6.
Скачать пример · Ссылка на функцию
Этот пример выполнен в установленном FEMM 5.
scipy.integrate.tanhsinhДвойное экспоненциальное преобразование tanh-sinh.
scipy.integrate.tanhsinh
scipy.integrate.tanhsinh(f, a, b, *, levels=6, eps=1e-14)Двойное экспоненциальное преобразование tanh-sinh.
Аргументы
| Имя | Назначение и допустимые значения |
|---|---|
f | Вызываемая функция f(x), которая возвращает вещественное число. |
a | Вещественная нижняя граница. |
b | Вещественная верхняя граница. |
levels | Максимальное число уровней; положительное целое, по умолчанию 6. |
eps | Численная точность; исходный default для double равен 1e-14. В примере задаётся явно. |
Возвращаемое значение
Кортеж (value,error): два float.
Пример
"Пример scipy.integrate.tanhsinh.\nСреда: встроенный MicroPython FEMM 5.\nДвойное экспоненциальное преобразование tanh-sinh.\nРезультат: Кортеж (value,error): два float."
import scipy as sp
def f(i):
# Учебное потокосцепление psi=2I; интеграл по току — коэнергия, Дж.
return 2*i
r=sp.integrate.tanhsinh(f,0.0,2.0,eps=1e-8)
v,error=r
assert abs(v-4)<1e-6
print(v,error)
Ожидаемый результат. Интеграл равен 4 Дж с допуском 1e-6.
Скачать пример · Ссылка на функцию
Этот пример выполнен в установленном FEMM 5.