привет. вопрос по комплексным числам.
есть комплексные числа, все с модулем 1, и с такими аргументами [12, 15, 13, 9, 16]
нужно вычислить средний угол(аргумент). делаю так
1. вычисляю угол поворота на 1 градус выраженный в экспоненциальной форме и называю его base
2. далее возвожу этот base в степень равную величине угла(в градусах) для каждого из [12, 15, 13, 9, 16] и складываю их
3. у полученного комплексного числа делю мнимую и вещественную части на кол-во элементов
4. получил комплексное число представляющее среднее значение
далее, в оригинальном варианте, предлагают вычислить угол так cmath.log(avg, base).real
я это представляю себе сяк math.degrees(cmath.phase(avg))
и при этом результаты совпадают.
вроде как лоагрифм есть функция обратная экспоненте, но я ещё не сильно в этом разбираюсь. объясните пожалуйста как вариант cmath.log(avg, base).real работает?
тут и логарифмирование по основанию base и взятие вещественной части..сложно)
import cmath
import math
def c_avg(angles):
base = cmath.e ** ((1j) * 2 * cmath.pi / 360)
total = 0
for a in angles:
total += base ** a
avg = total / len(angles)
# ???
res1 = cmath.log(avg, base)
res2 = math.degrees(cmath.phase(avg))
print(res1.real, res2)
# output: 13.000304779886221 13.000304779886221
c_avg([12, 15, 13, 9, 16])