Комплексные числа
Если макроконстанта |
(начиная с C11) |
Язык программирования C, начиная с C99, поддерживает математику комплексных чисел с тремя встроенными типами double _Complex, float _Complex и long double _Complex (см. _Complex). При включении заголовочного файла <complex.h>
три комплексных типа также доступны под именами double complex, float complex, long double complex.
В добавление к комплексным типам могут поддерживаться три мнимых типа: double _Imaginary, float _Imaginary и long double _Imaginary (см. _Imaginary). При включении заголовочного файла <complex.h>
три мнимых типа также доступны под именами double imaginary, float imaginary, and long double imaginary.
Стандартные арифметические операторы +, -, *, / могут использоваться с действительными, комплексными и мнимыми типами в любом сочетании.
Рекомендуется использовать компилятор, который определяет |
(начиная с C99) (до C11) |
Мнимые числа поддерживаются, если определены |
(начиная с C11) |
Определены в заголовочном файле
<complex.h> | ||
Типы | ||
(C99) |
макрос мнимого типа (ключевое слово-макрос) | |
(C99) |
макрос комплексного типа (ключевое слово-макрос) | |
Мнимые константы | ||
(C99) |
константа мнимая единица i (макроконстанта) | |
(C99) |
комплексная константа i (макроконстанта) | |
(C99) |
комплексная или мнимая константа i (макроконстанта) | |
Обработка | ||
(C11)(C11)(C11) |
порождает комплексное число из действительной и мнимой частей (функция-макрос) | |
(C99)(C99)(C99) |
вычисляет действительную часть комплексного числа Оригинал: computes the real part of a complex number Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
(C99)(C99)(C99) |
вычисляет мнимая часть комплексного числа Оригинал: computes the imaginary part a complex number Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
(C99)(C99)(C99) |
вычисляет величину комплексного числа Оригинал: computes the magnitude of a complex number Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
(C99)(C99)(C99) |
вычисляется фазовый угол комплексного числа Оригинал: computes the phase angle of a complex number Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
(C99)(C99)(C99) |
вычисляет комплексное сопряжение Оригинал: computes the complex conjugate Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
(C99)(C99)(C99) |
вычисляет проекции на сферу Римана Оригинал: computes the projection on Riemann sphere Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
Показательные функции | ||
(C99)(C99)(C99) |
вычисляет базовый комплекс-е экспоненциальным Оригинал: computes the complex base-e exponential Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
(C99)(C99)(C99) |
вычисляет комплексный натуральный логарифм Оригинал: computes the complex natural logarithm Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
Степенные функции | ||
(C99)(C99)(C99) |
вычисляет сложной степенной функции Оригинал: computes the complex power function Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
(C99)(C99)(C99) |
вычисляет комплексный квадратный корень Оригинал: computes the complex square root Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
Тригонометрические функции | ||
(C99)(C99)(C99) |
вычисляет комплексный синус Оригинал: computes the complex sine Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
(C99)(C99)(C99) |
вычисляет косинус комплекса Оригинал: computes the complex cosine Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
(C99)(C99)(C99) |
вычисляет комплексной касательной Оригинал: computes the complex tangent Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
(C99)(C99)(C99) |
вычисляет комплексный синус дуги Оригинал: computes the complex arc sine Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
(C99)(C99)(C99) |
вычисляет комплекса арккосинус Оригинал: computes the complex arc cosine Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
(C99)(C99)(C99) |
вычисляет комплексной касательной дуги Оригинал: computes the complex arc tangent Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
Гиперболические функции | ||
(C99)(C99)(C99) |
вычисляет комплексных гиперболических синуса Оригинал: computes the complex hyperbolic sine Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
(C99)(C99)(C99) |
вычисляет комплексный гиперболический косинус Оригинал: computes the complex hyperbolic cosine Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
(C99)(C99)(C99) |
computes the complex hyperbolic tangent (функция) | |
(C99)(C99)(C99) |
вычисляет сложные дуги гиперболического синуса Оригинал: computes the complex arc hyperbolic sine Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
(C99)(C99)(C99) |
вычисляет сложные дуги гиперболический косинус Оригинал: computes the complex arc hyperbolic cosine Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
(C99)(C99)(C99) |
вычисляет комплексный обратный гиперболический тангенс (функция) |
[править] Замечания
Следующие имена функций потенциально (начиная с C23) зарезервированы для будущего добавления в complex.h
и не доступны для использования в программах, которые включают этот заголовочный файл: cerf
, cerfc
, cexp2
, cexpm1
, clog10
, clog1p
, clog2
, clgamma
, ctgamma
, csinpi
, ccospi
, ctanpi
, casinpi
, cacospi
, catanpi
, ccompoundn
, cpown
, cpowr
, crootn
, crsqrt
, cexp10m1
, cexp10
, cexp2m1
, clog10p1
, clog2p1
, clogp1
(начиная с C23) вместе с их -f и -l вариантами.
Хотя стандартные имена обратных гиперболических функций в C это "комплексный гиперболический арксинус" и т. д., обратные гиперболические функции это функции площади. Их аргумент это площадь гиперболического сектора, а не дуга. Правильные названия это "комплексный обратный гиперболический синус" и т. д. Некоторые авторы используют "комплексный площадной гиперболический синус" и т. д.
Комплексное или мнимое число есть бесконечность, если одна из его частей бесконечность, даже если другая часть NaN.
Комплексное или мнимое чи��ло конечно, если обе части ни бесконечности, ни NaN.
Комплексное или мнимое число есть ноль, если обе части положительные или отрицательные нули.
[править] Пример
#include <stdio.h> #include <complex.h> #include <tgmath.h> int main(void) { double complex z1 = I * I; // мнимая единица в квадрате printf("I * I = %.1f%+.1fi\n", creal(z1), cimag(z1)); double complex z2 = pow(I, 2); // мнимая единица в квадрате printf("pow(I, 2) = %.1f%+.1fi\n", creal(z2), cimag(z2)); double PI = acos(-1); double complex z3 = exp(I * PI); // Формула Эйлера printf("exp(I*PI) = %.1f%+.1fi\n", creal(z3), cimag(z3)); double complex z4 = 1+2*I, z5 = 1-2*I; // сопряжённые числа printf("(1+2i)*(1-2i) = %.1f%+.1fi\n", creal(z4*z5), cimag(z4*z5)); }
Вывод:
I * I = -1.0+0.0i pow(I, 2) = -1.0+0.0i exp(I*PI) = -1.0+0.0i (1+2i)*(1-2i) = 5.0+0.0i
[править] Ссылки
- Стандарт C17 (ISO/IEC 9899:2018):
- 6.10.8.3/1/2
__STDC_NO_COMPLEX__
(стр. 128)
- 6.10.8.3/1/2
- 6.10.8.3/1/2
__STDC_IEC_559_COMPLEX__
(стр. 128)
- 6.10.8.3/1/2
- 7.3 Комплексные числа
<complex.h>
(стр. 136-144)
- 7.3 Комплексные числа
- 7.25 Объединённая математика
<tgmath.h>
(стр. 272-273)
- 7.25 Объединённая математика
- 7.31.1 Комплексные числа
<complex.h>
(стр. 391)
- 7.31.1 Комплексные числа
- Приложение G (нормативное) Комплексные числа, совместимые с IEC 60559 (стр. 469-479)
- Стандарт C11 (ISO/IEC 9899:2011):
- 6.10.8.3/1/2
__STDC_NO_COMPLEX__
(стр. 177)
- 6.10.8.3/1/2
- 6.10.8.3/1/2
__STDC_IEC_559_COMPLEX__
(стр. 177)
- 6.10.8.3/1/2
- 7.3 Комплексные числа
<complex.h>
(стр. 188-199)
- 7.3 Комплексные числа
- 7.25 Объединённая математика
<tgmath.h>
(стр. 373-375)
- 7.25 Объединённая математика
- 7.31.1 Комплексные числа
<complex.h>
(стр. 455)
- 7.31.1 Комплексные числа
- Приложение G (нормативное) Комплексные числа, совместимые с IEC 60559 (стр. 532-545)
- Стандарт C99 (ISO/IEC 9899:1999):
- 6.10.8/2
__STDC_IEC_559_COMPLEX__
(стр. 161)
- 6.10.8/2
- 7.3 Комплексные числа
<complex.h>
(стр. 170-180)
- 7.3 Комплексные числа
- 7.22 Объединённая математика
<tgmath.h>
(стр. 335-337)
- 7.22 Объединённая математика
- 7.26.1 Комплексные числа
<complex.h>
(стр. 401)
- 7.26.1 Комплексные числа
- Приложение G (информационное) IEC 60559-compatible complex arithmetic (стр. 467-480)
[править] См. также
Документация C++ по комплексным числам
|