私は現在、手動で計算したフーリエベクトルが正しいかどうかを確認するのに役立つ小さなツールを書いています。ここで、で指定されたn番目のUnityのルートが必要omega = exp(2*pi*i / n)
です。omega
誰かがこれをcomplex
C++で表現する方法を教えてもらえますか?
1276 次
3 に答える
4
オイラーの公式を使用します。
exp(2πi/n) = cos(2π/n) + i sin(2π/n)
それなら簡単です:
complex<double> rootOfUnity(cos(TWOPI/n), sin(TWOPI/n));
(TWOPIを、システムで使用可能なマクロ、または適切と思われる2πの値に置き換えます)。
于 2011-09-15T21:20:22.887 に答える
2
さて、ツイドルファクターオメガの実数部と虚数部は次のとおりです。
double angle = 2*pi/n;
double real = cos(angle);
double imaj = sin(angle);
complex<double> omega(real, imaj);
于 2011-09-15T21:18:06.160 に答える
2
極座標を使用して複素数を返す関数があります。
#include<complex>
complex polar(const T& rho)
complex polar(const T& rho, const T& theta)
ここrho
で、は大きさ、theta
はラジアン単位の角度です。
この場合、rho
は常に1.0です。
const double pi = 3.141592653589793238462643383279;
double omega = polar(1.0, 2*pi*i/n);
于 2011-09-15T23:17:34.343 に答える