Python. Модуль cmath. Робота з комплексними числами. Тригонометричні функції

Модуль 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;
  • 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

 


Споріднені теми