Модуль cmath. Работа с комплексными числами. Тригонометрические функции. Гиперболические функции. Функции классификаций
Содержание
Поиск на других ресурсах:
1. Тригонометрические функции
Модуль cmath содержит 6 тригонометрических функций, которые обрабатывают комплексные числа:
- cmath.acos(x) — возвращает арккосинус от аргумента x;
- cmath.asin(x) — возвращает арксинус от аргумента x;
- cmath.atan(x) — определяет арктангенс от аргумента x;
- cmath.cos(x) — возвращает косинус от аргумента x;
- cmath.sin(x) — возвращает синус от аргумента x;
- cmath.tan(x) — возвращает тангенс от аргумента x.
⇑
1.1. Функции cmath.acos(), cmath.asin(), cmath.atan(). Получить арккосинус, арксинус, арктангенс аргумента
Функции
cmath.acos(x) cmath.asin(x)
возвращают соответственно арккосинус и арксинус от аргумента x. Каждая из функций имеет два разреза разветвления. Первый простирается от 1 до ∞ вдоль вещественной оси, непрерывный снизу. Второй простирается влево от -1 до -∞ вдоль вещественной оси, непрерывный сверху.
Функция
cmath.atan(x)
позволяет получить арктангенс от аргумента x.
Функция имеет два разреза разветвления. Первый простирается от 1j вдоль мнимой оси до ∞j непрерывно справа. Второй простирается от -1 до -∞ и является непрерывный слева.
Пример.
# Тригонометрические функции acos(), asin(), atan() # 1. Подключить модуль cmath import cmath # 2. Получить комплексное число с клавиатуры re = int(input('re = ')) im = int(input('im = ')) z = complex(re, im) # 3. Вычислить арккосинус аргумента z и вывести его arc_cos = cmath.acos(z) print('arc_cos = ', arc_cos) # 4. Вычислить арксинус от z arc_sin = cmath.asin(z) print('arc_sin = ', arc_sin) # 5. Вычислить арктангенс от z arc_tan = cmath.atan(z) print('arc_tan = ', arc_tan)
Тестовый пример
re = 3 im = -4 arc_cos = (0.9368124611557198+2.305509031243477j) arc_sin = (0.6339838656391766-2.305509031243477j) arc_tan = (1.4483069952314644-0.15899719167999918j)
⇑
1.2. Функции cmath.cos(), cmath.sin(), cmath.tan(). Получить косинус, синус и тангенс аргумента
Функции
cmath.cos(x) cmath.sin(x) cmath.tan(x)
возвращают косинус, синус и тангенс аргумента x.
Пример.
# Функции cos(), sin(), tan() # Подключить модуль cmath import cmath # Создать комплексное число z = 7-8j z = complex(7, -8) # Вычислить косинус, синус, тангенс sin_res = cmath.sin(z) cos_res = cmath.cos(z) tan_res = cmath.tan(z) print('sin_res = ', sin_res) print('cos_res = ', cos_res) print('tan_res = ', tan_res)
Тестовый пример
sin_res = (979.2248346123021-1123.6753468137035j) cos_res = (1123.675599719735+979.2246142178511j) tan_res = (2.2295633684101687e-07-0.9999999692244822j)
⇑
2. Гиперболические функции
Модуль cmath содержит реализацию следующих гиперболических функций, которые оперируют комплексными числами:
- cmath.acosh(x) — возвращает гиперболический арккосинус от аргумента x;
- cmath.asinh(x) — возвращает гиперболический арксинус от аргумента x;
- cmath.atanh(x) — возвращает гиперболический арктангенс от аргумента x;
- cmath.cosh(x) — возвращает гиперболический косинус от аргумента x;
- cmath.sinh(x) — возвращает гиперболический синус от аргумента x;
- cmath.tanh(x) — возвращает гиперболический тангенс от аргумента x.
⇑
2.1. Функции cmath.acosh(), cmath.asinh(), cmath.atanh(). Гиперболический арккосинус, арксинус, арктангенс
Для вычисления гиперболического арккосинуса от аргумента x используется функция
cmath.acosh(x)
Для данной функции существует один разрез ветви, который простирается слева от -1 вдоль вещественной оси к -∞. Этот разрез непрерывен сверху.
Для вычисления гиперболического арксинуса от аргумента x используется функция
cmath.asinh(x)
Здесь есть два разветвления. Первое разветвление простирается от 1j вдоль мнимой оси к ∞j.
Это разветвление является непрерывным справа. Второе разветвление простирается от -1j вдоль мнимой оси к -∞j и есть непрерывным справа.
Для вычисления гиперболического арктангенса от аргумента x используется функция
cmath.atanh(x)
Здесь есть два разветвления. Одно разветвление расширяется от 1 вдоль вещественной оси до ∞ и непрерывно снизу. Второе расширяется от -1 вдоль вещественной оси до -∞ и непрерывно сверху.
Пример.
В примере реализовано вычисление гиперболического арккосинуса, гиперболического арксинуса и гиперболического арктангенса. Также демонстрируется вывод результата для гиперболического арккосинуса в удобной форме с точностью 2 знака после запятой.
# Тригонометрические функции acosh(), asinh(), atanh() # 1. Подключить модуль cmath import cmath # 2. Получить комплексное число с клавиатуры re = int(input('re = ')) # вещественная часть im = int(input('im = ')) # мнимая часть z = complex(re, im) # 3. Вычислить гиперболический арккосинус аргумента z # и вывести его с точностью 2 знака после запятой # 3.1. Получить значение arc_cosh = cmath.acos(z) # 3.2. Сформировать составляющие комплексного числа re_str = '%.2f' % arc_cosh.real # вещественная часть комплексного числа arc_cosh im_str = '%.2f' % arc_cosh.imag # мнимая часть # 3.3. Вывести на экран в удобной форме if arc_cosh.imag>0: print('arc_cosh = ' + re_str + '+' + im_str + 'j') elif arc_cosh.imag==0: print('arc_cosh = ' + re_str) else: print('arc_cosh = ' + re_str + im_str + 'j') # 4. Вычислить и вывести гиперболический арктангенс arc_tanh = cmath.atanh(z) print('arc_tanh = ', arc_tanh) # 5. Вычислить и вывести гиперболический арксинус arc_sinh = cmath.asinh(z) print('arc_sinh = ', arc_sinh)
Тестовый пример
re = 3 im = -4 arc_cosh = 0.94+2.31j arc_tanh = (0.1175009073114339-1.4099210495965755j) arc_sinh = (2.2999140408792695-0.9176168533514787j)
⇑
2.2. Функции cmath.cosh(), cmath.sinh(), cmath.tanh(). Гиперболический косинус, синус, тангенс
Для вычисления гиперболического косинусу, синуса и тангенса соответственно используются функции
cmath.cosh(x) cmath.sinh(x) cmath.tanh(x)
Пример.
# Тригонометрические функции cosh(), sinh(), tanh() # 1. Подключить модуль cmath import cmath # 2. Получить комплексное число с клавиатуры re = int(input('re = ')) # вещественная частина im = int(input('im = ')) # мнимая частина z = complex(re, im) # 3. Вычислить гиперболический косинус аргумента z # и вывести его с точностью 2 знака после запятой # 3.1. Получить значение cosh = cmath.cosh(z) # 3.2. Сформировать составляющие комплексного числа re_str = '%.2f' % cosh.real # вещественная часть комплексного числа cosh im_str = '%.2f' % cosh.imag # мнимая часть # 3.3. Вывести на экран в удобной форме res_str = re_str if cosh.imag>0: res_str += '+' res_str += im_str + 'j' print('cosh = ' + res_str) # 4. Вычислить и вывести гиперболический тангенс tanh = cmath.tanh(z) print('tanh = ', tanh) # 5. Вычислить и вывести гиперболический синус sinh = cmath.sinh(z) print('sinh = ', sinh)
Тестовый пример
re = 4 im = -3 cosh = -27.03-3.85j tanh = (0.999355987381473+0.0001873462046294784j) sinh = (-27.016813258003932-3.8537380379193773j)
⇑
3. Функции классификаций
К функциям классификаций модуля cmath относятся следующие:
- cmath.isinfinite(x) — определяет, есть ли конечной вещественная и мнимая часть комплексного числа x;
- cmath.isinf(x) — определяет, есть ли бесконечной вещественная или мнимая части комплексного числа x;
- cmath.isnan(x) — определяет, имеют ли значение Nan вещественная или мнимая части комплексного числа x;
- cmath.isclose(x) — определяет близость двух значений между собой.
⇑
3.1. cmath.isfinite(). Конечность комплексного числа
Функция
cmath.isfinite(x)
возвращает True, если вещественная и мнимая части комплексного числа есть конечными. В противном случае функция возвращает False.
Пример.
# Функция isfinite() # 1. Подключить модуль cmath import cmath # 2. Получить комплексное число с клавиатуры re = int(input('re = ')) # вещественная часть im = int(input('im = ')) # мнимая часть z = complex(re, im) # 3. Использование функции isfinite() res = cmath.isfinite(z) if res: print('Both parts are finite.') else: print('Both parts are not finite.')
Тестовый пример
re = 5 im = -2 Both parts are finite.
⇑
3.2. cmath.isinf(). Конечность составляющих комплексного числа
Функция
cmath.isinf(x)
возвращает True, если вещественная (x.real) или мнимая (x.imag) части комплексного числа есть бесконечными. В противном случае, возвращается False.
Пример.
# Функция isinf() # 1. Подключить модуль cmath import cmath # 2. Получить комплексное число с клавиатуры re = int(input('re = ')) # вещественная часть im = int(input('im = ')) # мнимая часть z = complex(re, im) # 3. Использование функции isinf() res = cmath.isinf(z) if res: print('Both parts are not finite.') else: print('Both parts are finite.')
Тестовый пример
re = 5 im = -3 Both parts are finite.
⇑
3.3. cmath.isnan(). Проверка составляющих комплексного числа на значение Nan
Функция
cmath.isnan(x)
возвращает True, если одна из частей (вещественная или мнимая) комплексного числа имеет значение Nan. В противном случае функция возвращает False.
Пример.
# Функция isnan() # 1. Подключить модуль cmath import cmath # 2. Получить комплексное число с клавиатуры re = int(input('re = ')) # вещественная часть im = int(input('im = ')) # мнимая часть z = complex(re, im) # 3. Использование функции isnan() res = cmath.isnan(z) if res: print('One of the parts is equal to the Nan value.') else: print('Both parts are not equal to Nan.')
Тестовый пример
re = 2 im = -7 Both parts are not equal to Nan.
⇑
3.4. cmath.isclose(). Определение близости двух значений между собой
Функция cmath.isclose() позволяет определить близость двух значений между собой на основе заданной точности. Согласно документации Python синтаксис объявления функции следующий:
cmath.isclose(a, b, rel_tol=1e-09, abs_tol = 0.0)
здесь
- a, b — комплексные числа, которые сравниваются между собой. Если значения близки (равны с указанной точностью), то функция возвращает True, иначе функция возвращает False;
- rel_tol — необязательный параметр, задает относительную погрешность при сравнении;
- abs_tol — необязательный параметр, который определяет абсолютную погрешность между значениями элементов.
Пример.
# Функция isclose() # Подключить модуль cmath import cmath # Случай 1. Два комплексных числа не равны z1 = complex(2.5, 3.2) # z = 2.5+3.2j z2 = complex(2.5000001, 3.2) # z = 2.5000001+3.2j # Использование функции isclose() res = cmath.isclose(z1, z2) # False if res: print('z1 == z2') else: print('z1 != z2') # Случай 2. Два комплексных числа равны z1 = complex(7.2, -1.7) # z1 = 7.2-1.7j z2 = complex(7.2, -1.7) # z2 = 7.2-1.7j # Использование функции isclose() res = cmath.isclose(z1, z2) # True if res: print('z1 == z2') else: print('z1 != z2') # Случай 3. Два комплексных числа равны с указанной относительной точностью z1 = complex(3.001, 2.8) z2 = complex(3.0, 2.8) # Использование функции isclose(), указывается относительная точность 0.01 res = cmath.isclose(z1, z2, rel_tol=0.01) # z1 == z2 if res: print('z1 == z2') else: print('z1 != z2') # Случай 4. Два комплексных числа равны с указанной абсолютной точностью z1 = complex(1.0001, 5.5) z2 = complex(1.0, 5.5) # Вызов функции isclose(), указывается абсолютная точность 0.001 res = cmath.isclose(z1, z2, abs_tol=0.001) # z1 == z2 if res: print('z1 == z2') else: print('z1 != z2')
Тестовый пример
z1 != z2 z1 == z2 z1 == z2 z1 == z2
⇑
Связанные темы
- Комплексные числа. Модуль cmath. Создание комплексного числа. Класс complex. Функции и константы модуля cmath
- Функции преобразования в полярные координати и наоборот. Степенные и логарифмические функции
- Представление чисел разных форматов. Базовые числовые типы. Функции преобразования чисел
⇑