"""Проверить силу двухзазорной цепи.

Среда: встроенный MicroPython FEMM 5.
Самостоятельный аналитический контроль; полевой решатель не вызывается.
"""
import math
mu0 = 4 * math.pi * 1e-7
n, area, iron_length, mur, current = 300, 2e-4, .20, 2000, 1.0
# Координата gap растёт при открытии обоих зазоров; энергия в Дж.
def coenergy(gap):
    return .5 * mu0 * n * n * area * current * current / (2 * gap + iron_length / mur)
gap = .001
# Центральная производная использует шаг в метрах при фиксированном токе.
for step in [.0001, .00005]:
    print("Шаг, м; сила, Н:", step, (coenergy(gap + step) - coenergy(gap - step)) / (2 * step))
print("Точная цепная сила, Н:", -mu0 * n * n * area * current * current / (2 * gap + iron_length / mur)**2)
