Стандартная библиотека C<complex.h>
<complex.h>является заголовочным файлом в стандартной библиотеке C, используемым для поддержки операций с комплексными числами.
<complex.h>Введённый в стандарте C99, он предоставляет набор типов, макросов и функций для определения и обработки комплексных чисел.
1, Комплексные типы
<complex.h>Определены следующие типы комплексных чисел:
-
float complexКомплексное число одинарной точности. -
double complexКомплексное число двойной точности. -
long double complex: комплексное число long double.
Эти типы на самом деле являются макросами, определёнными в стандартной библиотеке C, которые разворачиваются соответственно в:_Complex float、_Complex doubleи_Complex long double。
2, Комплексные константы
<complex.h>Следующие макросы определены для представления мнимой единицы:i:
-
IПредставляет мнимую единицуi, i.e.sqrt(-1)。
Пример
3, Функции операций над комплексными числами
<complex.h>Он предоставляет набор функций для работы с комплексными числами, включая арифметические операции, тригонометрические функции, экспоненциальные функции и логарифмические функции и т. д. Ниже приведены некоторые часто используемые функции:
Арифметические операции
| Функция | Описание |
|---|---|
creal(z) |
Возвращает комплексное числоzвещественная часть |
cimag(z) |
Возвращает комплексное числоzмнимая часть |
cabs(z) |
Возвращает комплексное числоzМодуль (абсолютное значение) |
carg(z) |
Возвращает комплексное числоzАргумент (фаза) |
conj(z) |
Возвращает комплексное числоzкомплексно-сопряжённое |
cproj(z) |
Возвращает комплексное числоzпроекция |
Тригонометрические функции
| Функция | Описание |
|---|---|
csin(z) |
Возвращает комплексное числоzзначение синуса |
ccos(z) |
Возвращает комплексное числоzзначение косинуса |
ctan(z) |
Возвращает комплексное числоzзначение тангенса |
Экспоненциальные и логарифмические функции
| Функция | Описание |
|---|---|
cexp(z) |
Возвращает комплексное числоzзначение экспоненты |
clog(z) |
Возвращает комплексное числоzнатуральный логарифм ⟦0⟧ |
функция возведения в степень
| Функция | Описание |
|---|---|
cpow(z1, z2) |
Возвращает комплексное числоz1изz2степень |
функция квадратного корня
| Функция | Описание |
|---|---|
csqrt(z) |
Возвращает комплексное числоzквадратный корень из ⟦0⟧ |
4, Пример
Ниже показано использование<complex.h>Пример ..., показывающий, как определять комплексные числа и выполнять операции над ними:
Пример
#include <complex.h>
int main() {
// Определение комплексных чисел
double complex z1 = 3.0 + 4.0 * I;
double complex z2 = 1.0 - 2.0 * I;
// Арифметические операции
double complex sum = z1 + z2;
double complex product = z1 * z2;
// Вывод результатов
printf("z1 = %.2f + %.2fi\n", creal(z1), cimag(z1));
printf("z2 = %.2f + %.2fi\n", creal(z2), cimag(z2));
printf("Сумма = %.2f + %.2fi\n", creal(sum), cimag(sum));
printf("Произведение = %.2f + %.2fi\n", creal(product), cimag(product));
// Модуль и аргумент
printf("|z1| = %.2f\n", cabs(z1));
printf("Фаза z1 = %.2f радиан\n", carg(z1));
// Экспоненциальная функция
double complex exp_z1 = cexp(z1);
printf("exp(z1) = %.2f + %.2fi\n", creal(exp_z1), cimag(exp_z1));
return 0;
}
Вывод результата:
z1 = 3.00 + 4.00i z2 = 1.00 + -2.00i Sum = 4.00 + 2.00i Product = 11.00 + -2.00i |z1| = 5.00 Phase of z1 = 0.93 radians exp(z1) = -13.13 + -15.20i
5, Примечания
-
<complex.h>Это доступно только в C99 и более поздних версиях. -
Использование типов и функций комплексных чисел требует включения
<complex.h>Заголовочный файл. -
Производительность операций с комплексными числами может быть ниже, чем операций с вещественными числами, особенно при большом объеме вычислений.
6, Математические основы операций с комплексными числами
Общая форма комплексного числа имеет видa + bi, где:
-
a— действительная часть,bявляется мнимой частью. -
i— мнимая единица, удовлетворяющаяi² = -1。
Модуль (абсолютная величина) комплексного числа равен:
|z| = sqrt(a² + b²)
Аргумент (фаза) комплексного числа равен:
arg(z) = atan2(b, a)
Показательная форма комплексного числа имеет вид:
exp(z) = exp(a) * (cos(b) + i * sin(b))Другие расширения