complex - основы
комплексной
математики
#include <complex.h>
Комплексные
числа — это
числа вида z =
a+b*i, где a и b
являются
вещественными
числами, и i =
sqrt(-1), где i*i = -1.
Существуют
и другие
способы
представления
комплексных
чисел. Пара
вещественных
чисел (a,b)
может быть
представлена
как точка
на
плоскости,
которая
задаётся
координатными
осями X и Y.
Эта же
самая
точка
может быть
также
описана
парой
вещественных
чисел (r,phi), где r
— это
расстояние
от нулевой
точки
отсчёта 0, а phi
— угол
между осью X
и прямой 0z.
Итак, z = r*exp(i*phi) = r*(cos(phi)+i*sin(phi)).
Основные
операции с
комплексными
числами,
заданными
в виде z = a+b*i и w = c+d*i,
следующие:
- сложение:
z+w = (a+c) + (b+d)*i
- умножение:
z*w = (a*c - b*d) + (a*d + b*c)*i
- деление:
z/w = ((a*c + b*d)/(c*c + d*d)) + ((b*c - a*d)/(c*c + d*d))*i
Почти все
математические
функции
имеют
своих
комплексных
собратьев,
но есть и
только
комплексные
функции.
Ваш
C-компилятор
может
работать с
комплексными
числами,
если он
поддерживает
стандарт C99.
Компоновку
программы
нужно
производить
с
параметром
-lm. Здесь
мнимая
единица
представлена
как I.
/* проверка что exp(i * pi) == -1 */
#include <math.h> /* для atan */
#include <stdio.h>
#include <complex.h>
int
main(void)
{
double pi = 4 * atan(1.0);
double complex z = cexp(I * pi);
printf("%f + %f * i\n", creal(z), cimag(z));
}
cabs(3),
cacos(3),
cacosh(3),
carg(3),
casin(3),
casinh(3),
catan(3),
catanh(3),
ccos(3),
ccosh(3),
cerf(3),
cexp(3),
cexp2(3),
cimag(3),
clog(3),
clog10(3),
clog2(3),
conj(3),
cpow(3),
cproj(3),
creal(3),
csin(3),
csinh(3),
csqrt(3),
ctan(3),
ctanh(3)
Русский
перевод
этой
страницы
руководства
был сделан
Azamat Hackimov <
[email protected]>, Dmitriy S. Seregin
<
[email protected]>, Dmitry Bolkhovskikh <
[email protected]>,
Katrin Kutepova <
[email protected]>, Yuri Kozlov
<
[email protected]> и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]