Комплексная арифметика

Комплексным числом называется выражение вида x + i*y, где x и y – любые действительные числа, а i – специальное число, которое называется мнимой единицей. Величины x и y называются действительной и мнимой частью комплексного числа. Комплексные числа нашли применение в ряде областей математики и физики (в частности, в расчетах цепей переменного тока). В библиотеке OSCAT комплексные числа представляют собой экземпляры структуры COMPLEX, которая состоит из двух переменных: re (целая часть комплексного числа) и im (мнимая часть действительного числа). В данной главе описаны функции, используемые для работы с комплексными числами.

CABS

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CABS

REAL

Модуль комплексного числа

Используемые модули

HYPOT

Функция CABS возвращает модуль комплексного числа X, вычисленный по формуле

Graphic

Пример

VAR z : OSCAT_BASIC.COMPLEX; (* z = 2.5 + i*0.5 *) m : REAL; (* |z| *) END_VAR z.re := 2.5; z.im := 0.5; m := OSCAT_BASIC.CABS(X := z); (* m ≈ 2.5495098 *) END_PROGRAM

CACOS

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CACOS

COMPLEX

Арккосинус комплексного числа

Используемые модули

CACOSH

Функция CACOS возвращает арккосинус комплексного числа X. Действительная часть полученного результата принадлежит интервалу [0, π], мнимая принадлежит интервалу [- Ꝏ,Ꝏ].

Пример

VAR z : OSCAT_BASIC.COMPLEX; (* z = 2.5 + i*0.5 *) res : OSCAT_BASIC.COMPLEX; (* res = CACOS(z) *) END_VAR z.re := 2.5; z.im := 0.5; res := OSCAT_BASIC.CACOS(X := z); (* результат комплексный: res.re ≈ 0.214, res.im ≈ -1.59*) END_PROGRAM

CACOSH

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CACOSH

COMPLEX

Гиперболический арккосинус комплексного числа

Используемые модули

CSQRT, CLOG

Функция CACOSH возвращает гиперболический арккосинус комплексного числа X. Мнимая часть полученного результата принадлежит интервалу [- π, π].

Пример

VAR z : OSCAT_BASIC.COMPLEX; (* z = 2.5 + i*0.5 *) res : OSCAT_BASIC.COMPLEX; (* res = CACOSH(z) *) END_VAR z.re := 2.5; z.im := 0.5; res := OSCAT_BASIC.CACOSH(X := z); (* результат комплексный: res.re ≈ 1.59, res.im ≈ 0.214*) END_PROGRAM

CADD

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Y

COMPLEX

Комплексное число

Выходы

CADD

COMPLEX

Сумма комплексных чисел

Функция CADD возвращает сумму комплексных чисел X и Y.

Пример

VAR x : OSCAT_BASIC.COMPLEX := (re := 2.5, im := 0.5); y : OSCAT_BASIC.COMPLEX := (re := 4.5, im := 1.5); res : OSCAT_BASIC.COMPLEX; res_re : REAL; res_im : REAL; END_VAR res := OSCAT_BASIC.CADD(X := x, Y := y); (* res.re = 7.0, res.im = 2.0*) res_re := res.re; res_im := res.im; END_PROGRAM

CARG

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CARG

REAL

Угол между осью действительных чисел и радиус-вектором геометрического представления комплексного числа X в радианах

Используемые модули

ATAN2

Функция CARG возвращает значение угла (в радианах) между осью действительных чисел и радиус-вектором геометрического представления комплексного числа X.

Graphic
Геометрическое представление комплексного числа

Пример

VAR z : OSCAT_BASIC.COMPLEX; (* z = 2.5 + i*0.5 *) ang : REAL; (* аргумент z, рад *) END_VAR z.re := 2.5; z.im := 0.5; ang := OSCAT_BASIC.CARG(X := z); (* ang = atan2(0.5, 2.5) ≈ 0.19739556 рад *) END_PROGRAM

CASIN

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CASIN

COMPLEX

Арксинус комплексного числа

Используемые модули

CASINH

Функция CASIN возвращает арксинус комплексного числа X. Мнимая часть полученного результата принадлежит интервалу Graphic.

Пример

VAR z : OSCAT_BASIC.COMPLEX; (* z = 2.5 + i*0.5 *) res : OSCAT_BASIC.COMPLEX; (* результат CASIN(z) *) END_VAR z.re := 2.5; z.im := 0.5; res := OSCAT_BASIC.CASIN(X := z); END_PROGRAM

CASINH

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CASINH

COMPLEX

Гиперболический арксинус комплексного числа

Функция CASINH возвращает гиперболический арксинус комплексного числа X. Мнимая часть полученного результата принадлежит интервалу [- π, π].

Пример

VAR z : OSCAT_BASIC.COMPLEX; (* входное комплексное число *) res : OSCAT_BASIC.COMPLEX; (* результат CASINH(z) *) END_VAR z.re := 2.5; z.im := 0.5; res := OSCAT_BASIC.CASINH(X := z); (* res.re ≈ 1.66, res.re ≈ 0.184 *) END_PROGRAM

CATAN

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CATAN

COMPLEX

Арктангенс комплексного числа

Функция CATAN возвращает арктангенс комплексного числа X. Мнимая часть полученного результата принадлежит интервалу Graphic.

Пример

VAR z : OSCAT_BASIC.COMPLEX; (* z = 2.5 + i*0.5 *) res : OSCAT_BASIC.COMPLEX; (* res = CATAN(z) *) END_VAR z.re := 2.5; z.im := 0.5; res := OSCAT_BASIC.CATAN(X := z); (* результат комплексный res.re ≈ -0.369, res.im ≈ 0.0671 *) END_PROGRAM

CATANH

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CATANH

COMPLEX

Гиперболический арктангенс комплексного числа

Функция CATANH возвращает гиперболический арктангенс комплексного числа X. Мнимая часть полученного результата принадлежит интервалу Graphic.

Пример

VAR z : OSCAT_BASIC.COMPLEX; (* z = 2.5 + i*0.5 *) res : OSCAT_BASIC.COMPLEX; (* res = CATANH(z) *) END_VAR z.re := 2.5; z.im := 0.5; res := OSCAT_BASIC.CATANH(X := z); (* результат комплексный res.re ≈ 0.402, res.im ≈ -0.0899 *) END_PROGRAM

CCON

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CCON

COMPLEX

Сопряженное число

Функция CCON возвращает сопряженное число для комплексного числа X.

Graphic

Graphic
Геометрическое представление сопряженных чисел

Пример

VAR z : OSCAT_BASIC.COMPLEX; conj : OSCAT_BASIC.COMPLEX; END_VAR z.re := 2.5; z.im := 0.5; conj := OSCAT_BASIC.CCON(X := z); (* conj = 2.5 + i*(-0.5) *) END_PROGRAM

CCOS

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CCOS

COMPLEX

Косинус комплексного числа

Используемые модули

CCOSH, CSET

Функция CCOS возвращает косинус комплексного числа X.

Пример

VAR z : OSCAT_BASIC.COMPLEX; (* z = 2.5 + i*0.5 *) res : OSCAT_BASIC.COMPLEX; (* res = cos(z) *) END_VAR z.re := 2.5; z.im := 0.5; res := OSCAT_BASIC.CCOS(X := z); (* результат комплексный res.re ≈ -0.903, res.im ≈ -0.312 *) END_PROGRAM

CCOSH

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CCOSH

COMPLEX

Гиперболический косинус комплексного числа

Используемые модули

COSH, SINH

Функция CCOSH возвращает гиперболический косинус комплексного числа X.

Пример

VAR z : OSCAT_BASIC.COMPLEX; (* z = 2.5 + i*0.5 *) res : OSCAT_BASIC.COMPLEX; (* res = cosh(z) *) END_VAR z.re := 2.5; z.im := 0.5; res := OSCAT_BASIC.CCOSH(X := z); (* результат комплексный res.re ≈ 5.38, res.im ≈ 2.9 *) END_PROGRAM

CDIV

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Y

COMPLEX

Комплексное число

Выходы

CDIV

COMPLEX

Частное комплексных чисел

Функция CDIV возвращает частное комплексных чисел X и Y.

Пример

VAR X : OSCAT_BASIC.COMPLEX := (Re := 2.5, Im := 0.5); Y : OSCAT_BASIC.COMPLEX := (Re := 4.5, Im := 1.5); res : OSCAT_BASIC.COMPLEX; (* Результат деления *) END_VAR (* Вызов функции CDIV для деления X на Y *) res := OSCAT_BASIC.CDIV(X := X, Y := Y); (*res.re ≈ 0.533, res.im ≈ -0.0667 *) END_PROGRAM

CEXP

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CEXP

COMPLEX

Экспонента комплексного числа

Функция CEXP возвращает значение экспоненты комплексного числа X.

Пример

VAR x : OSCAT_BASIC.COMPLEX; (* входное комплексное число *) y : OSCAT_BASIC.COMPLEX; (* результат вычисления экспоненты *) END_VAR x.re := 2.5; x.im := 0.5; y := OSCAT_BASIC.CEXP(x := x); (* y.re ≈ 10.691, y.im ≈ 5.84 *) END_PROGRAM

CINV

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CINV

COMPLEX

Обратное комплексное число

Функция CINV возвращает обратное число для комплексного числа X.

Пример

VAR x : OSCAT_BASIC.COMPLEX; (* входное комплексное число *) y : OSCAT_BASIC.COMPLEX; (* результат *) END_VAR x.re := 2.5; x.im := 0.5; y := OSCAT_BASIC.CINV(x := x); (* y.re ≈ 0.385, y.im ≈ -0.0769 *) END_PROGRAM

CLOG

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CLOG

COMPLEX

Натуральный логарифм комплексного числа

Используемые модули

HYPOT, ATAN2

Функция CLOG возвращает значение натурального логарифма для комплексного числа X.

Пример

VAR x : OSCAT_BASIC.COMPLEX; (* входное комплексное число *) y : OSCAT_BASIC.COMPLEX; (* значение натурального логарифма *) END_VAR x.re := 2.5; x.im := 0.5; y := OSCAT_BASIC.CLOG(x := x); (* y.re ≈ 0.936, y.im ≈ 0.197 *) END_PROGRAM

CMUL

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Y

COMPLEX

Комплексное число

Выходы

CMUL

COMPLEX

Произведение комплексных чисел

Функция CMUL возвращает произведение комплексных чисел X и Y.

Пример

VAR x : OSCAT_BASIC.COMPLEX := (re := 2.5, im := 0.5); y : OSCAT_BASIC.COMPLEX := (re := 4.5, im := 1.5); res : OSCAT_BASIC.COMPLEX; res_re : REAL; res_im : REAL; END_VAR res := OSCAT_BASIC.CMUL(X := x, Y := y); (* res.re = 10.5, res.im = 6.0*) res_re := res.re; res_im := res.im; END_PROGRAM

CPOL

Тип модуля: функция

Переменная

Тип

Описание

Входы

L

REAL

Радиус-вектор

A

REAL

Угол между осью действительных чисел и радиус-вектором в радианах

Выходы

CPOL

COMPLEX

Комплексное число

Функция CPOL возвращает комплексное число, представленное в геометрическом виде радиус-вектором L и углом (в радианах) между осью действительных чисел и радиус-вектором A.

Graphic
Геометрическое представление комплексного числа
VAR L : REAL := 5.0; (* радиус-вектор*) A : REAL := 0.785; (* угол в радианах (≈ 45 градусов)*) res : OSCAT_BASIC.COMPLEX; END_VAR (* вызов функции для преобразования полярных координат в комплексное число*) res := OSCAT_BASIC.CPOL(L := L, A := A); (* res ≈ 3.5355 + 3.5355i*) END_PROGRAM

CPOW

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Y

COMPLEX

Показатель степени комплексного числа

Выходы

CPOW

COMPLEX

Комплексное число, возведенное в степень

Используемые модули

CEXP, CMUL, CLOG

Функция CPOW возвращает комплексное число X, возведенное в степень Y. Показатель степени Y также является комплексным числом.

Пример

VAR x : OSCAT_BASIC.COMPLEX := (re := 2.5, im := 0.5); y : OSCAT_BASIC.COMPLEX := (re := 4.5, im := 1.5); res : OSCAT_BASIC.COMPLEX; res_re : REAL; res_im : REAL; END_VAR res := OSCAT_BASIC.CPOW(X := x, Y := y); (* res.re ≈ -33.1, res.im ≈ 37.7*) res_re := res.re; res_im := res.im; END_PROGRAM

CSET

Тип модуля: функция

Переменная

Тип

Описание

Входы

RE

REAL

Действительная часть комплексного числа

IM

REAL

Мнимая часть комплексного числа

Выходы

CSET

COMPLEX

Комплексное число

Функция CSET возвращает комплексное число c действительной частью X и мнимой частью Y.

VAR RE : REAL := 2.5; (* радиус-вектор*) IM : REAL := 0.5; (* угол в радианах (≈ 45 градусов)*) res : OSCAT_BASIC.COMPLEX; END_VAR (* вызов функции для преобразования вещественных чисел в комплексное число*) res := OSCAT_BASIC.CSET(RE := RE, IM := IM); (* res = 2.5 + 0.5i*) END_PROGRAM

CSIN

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CSIN

COMPLEX

Синус комплексного числа

Используемые модули

CCOSH, CSINH

Функция CSIN возвращает синус комплексного числа X.

Пример

VAR z : OSCAT_BASIC.COMPLEX; (* z = 2.5 + i*0.5 *) res : OSCAT_BASIC.COMPLEX; (* res = sin(z) *) END_VAR z.re := 2.5; z.im := 0.5; res := OSCAT_BASIC.CSIN(X := z); (* результат комплексный res.re ≈ 0.675, res.im ≈ -0.417 *) END_PROGRAM

CSINH

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CSINH

COMPLEX

Гиперболический синус комплексного числа

Используемые модули

COSH, SINH

Функция CSINH возвращает гиперболический синус комплексного числа X.

Пример

VAR z : OSCAT_BASIC.COMPLEX; (* z = 2.5 + i*0.5 *) res : OSCAT_BASIC.COMPLEX; (* res = CSINH(z) *) END_VAR z.re := 2.5; z.im := 0.5; res := OSCAT_BASIC.CSINH(X := z); (* результат комплексный: res.re ≈ 5.31, res.im ≈ 2.94 *) END_PROGRAM

CSQRT

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CSQRT

COMPLEX

Квадратный корень комплексного числа

Используемые модули

HYPOT, SGN

Функция CSQRT возвращает квадратный корень комплексного числа X.Пример

VAR z : OSCAT_BASIC.COMPLEX; (* z = 2.5 + i*0.5 *) res : OSCAT_BASIC.COMPLEX; (* квадратный корень комплексного числа *) END_VAR z.re := 2.5; z.im := 0.5; res := OSCAT_BASIC.CSQRT(X := z); (* результат комплексный: res.re ≈ 1.59, res.im ≈ 0.157 *) END_PROGRAM

CSUB

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Y

COMPLEX

Комплексное число

Выходы

CSUB

COMPLEX

Разность комплексных чисел

Функция CSUB возвращает разность комплексных чисел X и Y.

Пример

VAR x : OSCAT_BASIC.COMPLEX := (re := 2.5, im := 0.5); y : OSCAT_BASIC.COMPLEX := (re := 4.5, im := 1.5); res : OSCAT_BASIC.COMPLEX; res_re : REAL; res_im : REAL; END_VAR res := OSCAT_BASIC.CSUB(X := x, Y := y); (* res.re = -2.0, res.im = -1.0*) res_re := res.re; res_im := res.im; END_PROGRAM

CTAN

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CTAN

COMPLEX

Тангенс комплексного числа

Используемые модули

COSH, SINH

Функция CTAN возвращает тангенс комплексного числа X.

Пример

VAR z : OSCAT_BASIC.COMPLEX; (* z = 2.5 + i*0.5 *) res : OSCAT_BASIC.COMPLEX; (* res = tan(z) *) END_VAR z.re := 2.5; z.im := 0.5; res := OSCAT_BASIC.CTAN(X := z); (* результат комплексный res.re ≈ -0.525, res.im ≈ 0.643 *) END_PROGRAM

CTANH

Тип модуля: функция

Переменная

Тип

Описание

Входы

X

COMPLEX

Комплексное число

Выходы

CTANH

COMPLEX

Гиперболический тангенс комплексного числа

Используемые модули

COSH, SINH

Функция CTANH возвращает гиперболический тангенс комплексного числа X.

Пример

VAR z : OSCAT_BASIC.COMPLEX; (* z = 2.5 + i*0.5 *) res : OSCAT_BASIC.COMPLEX; (* res = CTANH(z) *) END_VAR z.re := 2.5; z.im := 0.5; res := OSCAT_BASIC.CTANH(X := z); (* результат комплексный res.re ≈ 0.993, res.im ≈ 0.0113 *) END_PROGRAM