2011-10-19 24 views
6

Tôi muốn đại diện cho sqrt(-1) trong C++, bởi vì tôi đang cố triển khai thuật toán FFT. Có cách nào tốt để đại diện cho điều này?Làm thế nào để đại diện cho sqrt (-1) trong lập trình?

+1

Không quan tâm là có lý do chính đáng tại sao bạn muốn viết một thói quen FFT cho mình thay vì sử dụng một cái gì đó như [FFTW] (http://www.fftw.org /)? – Flexo

+0

tôi chỉ đọc sách giới thiệu thuật toán cho thuật toán (báo chí MIT), vì vậy chỉ cần đào tạo không còn –

+0

Bạn luôn có thể hỏi [Marvin] (http://kasmana.people.cofc.edu/MATHFICT/mfview.php?callnumber=mf458) (xem văn bản đóng hộp màu vàng lớn cuối cùng ở cuối trang) – Skizz

Trả lời

17

Tôi đoán bạn đang tìm kiếm #include <complex> ví dụ:

std::complex<double> num(0,1); 

Bạn thực sự có thể sử dụng std::sqrt với complex loại hình này để tính toán sqrt(-1):

#include <complex> 
#include <iostream> 

int main() { 
    const std::complex<double> result = std::sqrt(std::complex<double>(-1,0)); 
    std::cout << result << std::endl; 
} 

Đối wn=exp((2*pi*i)/n) bạn có thể làm:

const double pi = std::acos(-1.0); 
const std::complex<double> i(0,1); 

std::complex<double> wn = std::exp((2*pi*i)/double(n)); 
+0

Và 'phức tạp i (0, 1);' là giá trị mong muốn. – Joren

+1

@ Joren: Tôi nghĩ rằng anh ấy đã nói rằng ... –

+0

một câu hỏi mà chúng tôi biết rằng, trong phương pháp FFT wn = exp ((2 * pi * i)/n) vậy làm thế nào nó sẽ được? –

Các vấn đề liên quan