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

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

Пример
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
Функция CASIN возвращает арксинус комплексного числа X. Мнимая часть полученного результата принадлежит интервалу
.
Пример
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
Функция 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
Функция CATAN возвращает арктангенс комплексного числа X. Мнимая часть полученного результата принадлежит интервалу
.
Пример
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
Функция CATANH возвращает гиперболический арктангенс комплексного
числа X. Мнимая часть полученного результата принадлежит интервалу
.
Пример
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
Функция CCON возвращает сопряженное число для комплексного числа X.


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

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
Функция 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 | Комплексное число |
Функция 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
Функция 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
Функция 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
Функция 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
Функция 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
Функция 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
Функция 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 |