FEMM 5

Модули и функции · встроенный MicroPython FEMM 5

scipy.optimize

Модуль предоставляет методы поиска корней и одномерного минимума вещественной функции.

Условия работы

scipy.optimize.bisectИщет корень делением интервала пополам.

scipy.optimize.bisect

scipy.optimize.bisect(f, a, b, *, xtol=2.4e-7, maxiter=100)

Ищет корень делением интервала пополам.

Аргументы

Аргументы вызова scipy.optimize.bisect
ИмяНазначение и допустимые значения
fНепрерывная вещественная функция одного аргумента.
aНачало интервала.
bКонец интервала; f(a) и f(b) должны иметь разные знаки.
xtolАбсолютный допуск по x, по умолчанию 2.4e-7.
maxiterПредельное число итераций, по умолчанию 100.

Возвращаемое значение

float — найденное приближение корня.

Пример

MicroPython FEMM 5
"Пример scipy.optimize.bisect.\nСреда: встроенный MicroPython FEMM 5.\nИщет корень делением интервала пополам.\nРезультат: float — найденное приближение корня."

import scipy as sp
def f(x):
    return x*x-2
r=sp.optimize.bisect(f,1,2,xtol=1e-10)
assert abs(f(r))<1e-8
print(r)

Ожидаемый результат. Корень около 1,414.

Скачать пример · Ссылка на функцию

Этот пример выполнен в установленном FEMM 5.

scipy.optimize.newtonИщет корень с численной оценкой производной по соседним значениям функции.

scipy.optimize.newton

scipy.optimize.newton(f, x0, *, tol=2.4e-7, rtol=0.0, maxiter=50)

Ищет корень с численной оценкой производной по соседним значениям функции.

Аргументы

Аргументы вызова scipy.optimize.newton
ИмяНазначение и допустимые значения
fВещественная функция одного аргумента.
x0Начальное приближение; выбирайте ненулевое.
tolАбсолютный допуск изменения x.
rtolОтносительный допуск изменения x, по умолчанию 0.
maxiterПоложительное максимальное число итераций, по умолчанию 50.

Возвращаемое значение

float — последнее приближение корня.

Особенности вызова

  • Явный аргумент производной здесь отсутствует. Начальная разность пропорциональна abs(x0), поэтому x0=0 не подходит.

Пример

MicroPython FEMM 5
"Пример scipy.optimize.newton.\nСреда: встроенный MicroPython FEMM 5.\nИщет корень с численной оценкой производной по соседним значениям функции.\nРезультат: float — последнее приближение корня."

import scipy as sp
def f(x):
    return x*x-2
r=sp.optimize.newton(f,1.0,tol=1e-10)
assert abs(f(r))<1e-8
print(r)

Ожидаемый результат. Корень около 1,414.

Скачать пример · Ссылка на функцию

Этот пример выполнен в установленном FEMM 5.

scipy.optimize.fminМинимизирует одномерную функцию симплексным методом.

scipy.optimize.fmin

scipy.optimize.fmin(f, x0, *, xatol=2.4e-7, fatol=2.4e-7, maxiter=200)

Минимизирует одномерную функцию симплексным методом.

Аргументы

Аргументы вызова scipy.optimize.fmin
ИмяНазначение и допустимые значения
fВещественная функция одного вещественного аргумента.
x0Скалярное начальное приближение.
xatolАбсолютная точность по аргументу.
fatolТочность по значению функции.
maxiterПредельное число итераций, по умолчанию 200.

Возвращаемое значение

float — аргумент найденного локального минимума.

Особенности вызова

  • Скалярный алгоритм не задаёт границы допустимой области автоматически.
  • Остановка происходит, когда выполнено хотя бы одно условие: разность значений функции меньше fatol ИЛИ разность аргументов меньше xatol. Подбирайте оба допуска с учётом масштаба f и проверяйте результат отдельно.

Пример

MicroPython FEMM 5
"Пример scipy.optimize.fmin.\nСреда: встроенный MicroPython FEMM 5.\nМинимизирует одномерную функцию симплексным методом.\nРезультат: float — аргумент найденного локального минимума."

import scipy as sp
def loss(x):
    return (x-2)**2
# fatol имеет единицы функции, xatol — единицы аргумента.
x=sp.optimize.fmin(loss,1.0,xatol=1e-10,fatol=1e-16)
assert abs(x-2)<1e-7 and loss(x)<1e-14
print(x,loss(x))

Ожидаемый результат. Минимум около x=2; квадрат отклонения меньше 10 × 10⁻¹⁵.

Скачать пример · Ссылка на функцию

Этот пример выполнен в установленном FEMM 5.

Имена в установленной сборке

Перечень получен во встроенном интерпретаторе. Он включает функции, классы и константы. Ссылки ведут к контрактам; для прямого доступа ulab учитывайте условия этого раздела.