Меня немного смущает, как правильно обращаться с комплексными числами в полярной форме и как разделить их действительную и мнимую части.
Обратите внимание, что я ожидаю, что в качестве действительной части будет радиус, а в качестве мнимой части — угол.
Встроенные функции re
и im
всегда получают действительную и мнимую часть декартова представления комплексного числа.
Вот пример
from sympy import I, pi, re, im, exp, sqrt
# complex num in Cartesian form
z = -4 + I*4
print(re(z), im(z))
# 4 -4
# complex num in polar form
z = 4* sqrt(2) * exp(I * pi * 3/4)
print(re(z), im(z))
# 4 -4 but expacting 4*sqrt(2), pi*3/4
Каков наиболее SymPytonic способ решения такой проблемы?
🤔 А знаете ли вы, что...
Python имеет множество фреймворков для веб-разработки, такие как Django и Flask.
Может быть, вы ищете функции Abs
и arg
?
z = -4 + I*4
print(Abs(z), arg(z))
# 4*sqrt(2) 3*pi/4
z = 4* sqrt(2) * exp(I * pi * 3/4)
print(Abs(z), arg(z))
# 4*sqrt(2) 3*pi/4
Комплексные числа не находятся «в полярной форме» или «в декартовом представлении», они просто есть. Вы можете преобразовать их в полярную форму или в декартово представление.
re
и im
преобразуются в такое декартово представление. Если вы хотите преобразовать в полярную форму, вам действительно нужно это сделать. В Sympy для этого есть пара функций: sp.Abs для получения величины комплексного числа и sp.arg для получения комплексного аргумента.