【问题标题】:How to represent sqrt(-1) in programming?如何在编程中表示 sqrt(-1)?
【发布时间】:2011-10-19 09:47:44
【问题描述】:

我想用 C++ 表示sqrt(-1),因为我正在尝试实现 FFT 算法。有没有很好的表示方式?

【问题讨论】:

  • 出于兴趣,您是否有充分的理由要自己编写 FFT 例程而不是使用 FFTW 之类的东西?
  • 我只是在阅读算法书籍介绍算法(麻省理工学院出版社),所以不再训练了
  • 您可以随时询问Marvin(请参阅页面底部的最后一个大黄框文本)

标签: c++ math


【解决方案1】:

我猜你正在寻找#include <complex> 例如:

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

您实际上可以将std::sqrt 与此complex 类型一起使用来计算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;
}

对于wn=exp((2*pi*i)/n),您可以这样做:

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));

【讨论】:

  • complex&lt;double&gt; i(0, 1); 是所需的值。
  • 我们知道的一个问题,在 FFT 方法中 wn=exp((2*pi*i)/n) 那么它会如何呢?
  • @user466534 - 为此添加了一个示例
  • @awoodland / 不能用复数,为什么?
  • @user466534: wn 应该是 std::complex&lt;double&gt;,而不是 double
【解决方案2】:

我相信你应该包含一个 Complex 类:http://www.cplusplus.com/reference/std/complex/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-20
    • 2011-09-28
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    相关资源
    最近更新 更多