"""Линейные уравнения четырёхполюсника.

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

import numpy as np

# Собственные и взаимное комплексные сопротивления обмоток заданы в омах.
# Напряжение источника в правой части — комплексная амплитуда, В.
z11, z22, mutual, load = 2 + 20j, 1 + 5j, 9j, 10.0
# Нагрузка включена во второе уравнение в соответствии с направлением вторичного тока.
matrix = np.array([[z11, mutual], [mutual, z22 + load]])
rhs = np.array([100 + 0j, 0 + 0j])
# Решаем два уравнения для комплексных амплитуд токов обеих обмоток.
current = np.linalg.solve(matrix, rhs)
i1, i2 = current[0], current[1]
# Порядок вывода: первичный ток, А; вторичный ток, А; напряжение нагрузки, В.
print(i1, i2, -load * i2)
# Повторно вычисляем обе невязки, В; они должны быть близки к нулю.
# Так проверяется составление системы, а не только выполнение библиотечной команды.
print("Невязка 1:", z11 * i1 + mutual * i2 - 100)
print("Невязка 2:", mutual * i1 + (z22 + load) * i2)
