Сейчас я пишу простой алгоритм DFT и хочу использовать комплексное число i в комплексной экспоненте. Я видел, как кто-то использует #include<complex>
а также #include<cmath>
, а затем они использовали перегруженный символ I
такие как exp(2*I)
, Но, похоже, это не работает в моем компиляторе Visual Studio. Итак, кто-нибудь может привести простой пример использования сложной экспоненты? Спасибо!
Вот короткий полный пример:
#include <iostream>
#include <complex>
#include <cmath>
using namespace std;
typedef complex<double> dcomp;
main() {
dcomp i;
dcomp a;
double pi;
pi = 2 * asin(1);
i = -1;
i = sqrt(i);
a = exp(2*pi*i);
cout << "i is " << i << "and Euler was right: e(i pi) = " << a << endl;
}
Протестировано с g ++
Я также недавно получил этот вопрос и нахожу легкий путь для будущего читателя:
Просто используйте <complex>
библиотека вроде следующего
#include <iostream>
#include <complex>
using namespace std ;
int main(int argc, char* argv[])
{
const complex<double> i(0.0,1.0);
cout << i << endl ;
return(0) ;
}
Вы можете найти детали Вот
Простой подход будет
#include <complex>
using std::complex;
const double pi = 3.1415;
void foo()
{
complex<double> val(polar(1, pi/2.0); Create a complex from its olar representation
}
Следующий код на C ++ показывает макрос для реализации мнимого числа j. Хорошо известно, что при программировании термины i и j обычно используются в качестве переменных счетчика. Вместо этого я использую заглавную букву J для обозначения воображаемого числа, чтобы избежать путаницы.
/ * dcomplex.h
#ifndef DCOMPLEX_H_
#define DCOMPLEX_H_
#define J dcomplex(0.0,1.0)
typedef std::complex<double> dcomplex;
#endif /* DCOMPLEX_H_ */
Используя этот макрос, мнимое число J [вместе со сложной библиотекой] может использоваться в основном коде. Пример его использования показан ниже:
....
....
#include <complex>
#include "dcomplex.h"
....
....
tmp = tmp + t[n]*exp( (2.0*PI*(double)n*(double)l/(double)tab_size)*J );
....
….
где tmp, t [n] — переменные комплексного типа, а J — мнимое число. Переменные n, l и tab_size имеют целочисленный тип. Константа PI — это общеизвестная константа 3.14 … Функция exp () перегружена для обработки комплексных чисел. [Нотабене этот пример кода является частью простого DFT]
Используя этот макрос, код становится более читабельным.
число Пи, будучи иррациональным числом, не может быть точно представлено двойной. соз неточного приближения числа пи, скорее всего, даст результат, близкий, но, возможно, не совсем равный 1. Аналогично грех неточного приближения неточного приближения число Пи это как результат, чтобы получить число имеет очень маленькую величину, которая, возможно, не точно 0. Почему бы просто не определить I быть стандартный :: комплекс (0,0, 1,0) и избежать необоснованной неточности.