"""Гармоническая последовательная RL-ветвь с действующими фазорами.

Вход: f [Гц], R [Ом], L [Гн], U_RMS [В]. Выход: I_RMS [А], P [Вт],
Q [вар] и фаза тока [градусы]. Принято exp(jωt): индуктивное сопротивление
положительно мнимое. Линейная сосредоточенная цепь; полевой API не вызывается.
"""

import math
import cmath

# 1. Все параметры в СИ; напряжение задано действующим значением.
frequency_hz = 50.0
resistance_ohm = 10.0
inductance_h = 0.02
voltage_rms_v = 100.0

# 2. Вычисляем Z = R + jωL, затем I = U/Z по комплексному закону Ома.
impedance_ohm = resistance_ohm + 1j * 2 * math.pi * frequency_hz * inductance_h
current_rms_a = voltage_rms_v / impedance_ohm

# Комплексная мощность S = U·conj(I): для RMS множитель 1/2 не нужен.
power_va = voltage_rms_v * current_rms_a.conjugate()

# cmath.phase возвращает радианы; переводим угол в градусы.
phase_deg = cmath.phase(current_rms_a) * 180 / math.pi

# 3. Проверяем закон Ома, тепловую мощность I²R и отставание тока.
assert abs(current_rms_a * impedance_ohm - voltage_rms_v) < 1e-10
assert abs(power_va.real - abs(current_rms_a) ** 2 * resistance_ohm) < 1e-10
assert phase_deg < 0
print('Действующий ток, А:', current_rms_a, sep=' ')
print('Активная мощность, Вт:', power_va.real, sep=' ')
print('Реактивная мощность, вар:', power_va.imag, sep=' ')
print('Фаза тока, градусы:', phase_deg, sep=' ')
