8

現在、単純な DFT アルゴリズムをコーディングしていますが、複素数 i を複素指数で使用したいと考えています。誰かが#include<complex>andを使用しているのを見た後、など#include<cmath>のオーバーロードされたシンボルを使用しました。しかし、私のビジュアル スタジオ コンパイラでは機能しないようです。では、複雑な指数関数を使用する簡単な例を誰か挙げることができますか? ありがとう!Iexp(2*I)

4

6 に答える 6

11

私も最近この質問を受け、将来の読者のために簡単な方法を見つけました。

<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) ;
}
于 2015-09-15T23:55:12.580 に答える
6

短い完全な例を次に示します。

#include <iostream>
#include <complex>
#include <cmath>

using namespace std;
typedef complex<double> dcomp;

int 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++ でテスト済み

于 2013-07-29T14:10:26.383 に答える
1

次の 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() は、複素数を処理するためにオーバーロードされています。[nb このコード サンプルは単純な DFT の一部です]

このマクロを使用すると、コードが読みやすくなります。

于 2015-08-18T02:57:24.917 に答える