Стандартная библиотека 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)。

Пример

double complex z = 3.0 + 4.0 * I; // Представляет комплексное число 3 + 4i

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 <stdio.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))
Другие расширения