Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Комплексные числа на python. Библиотека cmath
Тема "Комплексные числа в Python" была мной пропущена, ну просто пропустил, думал потом, но совсем забыл. Но ведь есть такая штука в математике. Значит нужно её упомянуть в моём канале.
Если вы не знаете, что такое комплексные числа, то лучше в них в начале по разбираться. А тем, кто знает (точнее знал) что это такое, напомню, что комплексные числа появились как расширение множества действительных чисел числами, являющимися корнем квадратным из отрицательных чисел. Комплексное число в общем случае имеет две компоненты: действительную и мнимую части. Обычно в математике это записывалось так a + bi, где a - действительная часть, b - мнимая часть. Если b = 0, то мы получаем обычное действительное число, если a = 0, то получаем чисто мнимое число. К слову сказать, корень квадратный из -1 это просто i.
А теперь о комплексный числах в Python. Как они могут появиться в программе?
Мы можем просто записать таk с = a + bj, где a и b действительные числа.
#!/usr/bin/python3
c = 23.44 + 21.6665j
print(c)
print(c.real, c.imag)
Результат выполнения
(23.44+21.6665j)
23.44 21.6665
Т.е. 1). Python понял, что перед нами комплексное число. 2). Свойство real - даёт действительную часть числа, свойство imag даёт мнимую часть числа.
Второй способ задания объекта "комплексное число" - это использовать глобальную функцию complex().
#!/usr/bin/python3
a = 23.44
b = 21.6665
c = complex(a, b)
print(c)
print(c.real, c.imag)
Результат выполнения программы
(23.44+21.6665j)
23.44 21.6665
Второй способ более удобен так как позволяет использовать при создании комплексного числа и переменные.
Функция complex() также как функции int() или float() может преобразовывать из одного типа переменной в другую
#!/usr/bin/python3
a = 12.345
b = 45
ac = complex(a)
bc = complex(b)
print(ac)
print(bc)
s = '123'
sc = complex(s)
print(sc)
Результат выполнения программы
(12.345+0j)
(45+0j)
(123+0j)
Python может выполнять все стандартные действия над комплексными числами
#!/usr/bin/python3
a = 23.44
b = 21.6665
c = complex(a, b)
a1 = 2.144
b1 = 16.777
c1 = complex(a1, b1)
c2 = c + c1
print(c2)
c2 = c - c1
print(c2)
c2 = c * c1
print(c2)
c2 = c / c1
print(c2)
c2 = c1 ** 3
print(c2)
Результат выполнения программы
(25.584000000000003+38.4435j)
(21.296+4.889499999999998j)
(-313.2435105+439.70585600000004j)
(1.4463670994578093-1.2123138188449938j)
(-1800.5450309440002-4490.825769817j)
Я не объясняю как вообще можно было бы реализовать эти действия программно, надеюсь, читатель подумает над этим, ну а если нет, Python, как видим, всё сделает за вас.
Если вам нужно выполнять более сложные действия над комплексными числами, то в вашем распоряжении стандартная библиотека cmath.
Библиотека cmath подключается обычным образом и в сущности является расширением библиотеки math на комплексные числа. Поэтому я не буду давать справочник функций этой библиотеки, а просто приведу пример программы с вычислениями.
#!/usr/bin/python3
import cmath
a = 2.34 + cmath.sqrt(-2)
print(a)
b = cmath.sqrt(a)
print(b)
c = cmath.sin(b)
print(c)
d = cmath.log(c)
print(d)
Результат выполнения
(2.34+1.4142135623730951j)
(1.5928205090718879+0.44393374969698746j)
(1.0999007490827197-0.010100786988359457j)
(0.09526211291980499-0.00918310407923879j)
Ну, пока всё!
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.