"""Аналитическая проверка центральной производной.

Среда: встроенный MicroPython FEMM 5.
Аналитический учебный пример; полевой решатель не вызывается.
Параметры, единицы величин и порядок вывода пояснены по стадиям.
"""


# Учебная нелинейная характеристика первой обмотки; токи в А, потокосцепление в Вб.
def linkage1(i1, i2):
    return 0.1 * i1 + 0.02 * i2 + 0.002 * i1**3


# Уменьшаем возмущение тока вдвое для независимой проверки шага производной.
for step in [0.1, 0.05]:
    # Центральная разность по первому току при неизменном втором токе 1 А.
    # Расстояние между двумя режимами равно 2·step; результат имеет размерность Гн.
    derivative = (linkage1(2 + step, 1) - linkage1(2 - step, 1)) / (2 * step)
    # Порядок вывода: шаг тока, А; дифференциальная индуктивность, Гн.
    print(step, derivative)
