Re: Осваиваем Python по-быстрому №2
Добавлено: 12 дек 2021, 13:23
Q: Одно и то же комплексное значение может представляться в 2-х различных формах:
- алгебраическая (координатная) форма z = a + j * b, когда вещественная часть и мнимая часть являются проекциями на соответствующие оси координат 2D плоскости X и Y
- экспоненциальная форма z = |z| * exp( j * φ ), где модуль (длина вектора) |z| = sqrt( a2 + b2 ), а φ (фаза) — угол поворота вектора, отсчитываемый против часовой стрелки относительно оси X.
Напишите краткий тест преобразование нескольких комплексных значений в экспоненциальную форму, и обратно из экспоненциальной формы в алгебраическую, и сравнить с исходным значением. A:
Код: Выделить всё
#!/usr/bin/python3
from cmath import sqrt, polar, phase, exp, pi
z = (0, -3, 2.0, 1j, -sqrt(3j), 4j,
2 + 3j, 4.0 + 1j, -3 - 3j, sqrt(2) - 1j )
for x in z:
print("{} => {} : {}*exp(j*{}*π) => {}".
format(x,polar(x), abs(x), phase(x), abs(x)*exp(1j*phase(x))))
Код: Выделить всё
olej@R420:~/2021/own.BOOKs/tasks-Python/DRAFT$ ./complex.3.py
0 => (0.0, 0.0) : 0*exp(j*0.0*π) => 0j
-3 => (3.0, 3.141592653589793) : 3*exp(j*3.141592653589793*π) => (-3+3.6739403974420594e-16j)
2.0 => (2.0, 0.0) : 2.0*exp(j*0.0*π) => (2+0j)
1j => (1.0, 1.5707963267948966) : 1.0*exp(j*1.5707963267948966*π) => (6.123233995736766e-17+1j)
(-1.224744871391589-1.2247448713915892j) => (1.7320508075688772, -2.356194490192345) : 1.7320508075688772*exp(j*-2.356194490192345*π) => (-1.224744871391589-1.2247448713915892j)
4j => (4.0, 1.5707963267948966) : 4.0*exp(j*1.5707963267948966*π) => (2.4492935982947064e-16+4j)
(2+3j) => (3.605551275463989, 0.982793723247329) : 3.605551275463989*exp(j*0.982793723247329*π) => (2+3j)
(4+1j) => (4.123105625617661, 0.24497866312686414) : 4.123105625617661*exp(j*0.24497866312686414*π) => (4+1j)
(-3-3j) => (4.242640687119285, -2.356194490192345) : 4.242640687119285*exp(j*-2.356194490192345*π) => (-2.9999999999999996-3j)
(1.4142135623730951-1j) => (1.7320508075688774, -0.6154797086703873) : 1.7320508075688774*exp(j*-0.6154797086703873*π) => (1.4142135623730951-1j)