Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在c++;_C++_Complex Numbers - Fatal编程技术网

C++ 在c++;

C++ 在c++;,c++,complex-numbers,C++,Complex Numbers,嗨,我得到了错误的预期结果,我想这是对std::complex的结果,这是我应该得到的结果,如果你运行下面的代码,这是我得到的结果,基本上一切都是NAN,我哪里出错了 #include<cmath> #include<complex> #include<new> #include<iostream> int sign(double x){ if(x > 0) { return 1;

嗨,我得到了错误的预期结果,我想这是对std::complex的结果,这是我应该得到的结果,如果你运行下面的代码,这是我得到的结果,基本上一切都是NAN,我哪里出错了

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



    int sign(double x){
        if(x > 0)    {
            return 1;
        }
        else if(x < 0)    {
            return -1;
        }
        else    {
            return 0;
        }
    }

    int main(){

      double alpha = 1.8;
      double beta = .35;
      double sigma = 1;
      double mu = 0.5;
      double PI = 3.1416; 
      int N = 8192;
      double h = 0.01;
      std::complex<double>phi[N]; 
      double* in_t2= new double[N]; 


     double* abs_t = new double [N]; 
     double* sign_t = new double [N];

     std::complex<double> I(0,1);
     double s = 0.01;

     s = 1/(h*N);
     std::cout<<s;
     for (int i=1; i<=N; i++) {
       in_t2[i-1] = 2*PI * (i - 1 - N/2)*s; // x1

     }

     for (int i = 0; i < N; i++){
       abs_t[i] = std::abs(in_t2[i]);
     }

     for (int i = 0; i < N; i++){
       sign_t[i] = sign(in_t2[i]);
     }

      for (int i = 0; i < N; i++){ 
        //where i suspect the error is..


        phi[i] = pow(abs_t[i],sign_t[i]);
       }


      for ( int i = 0; i< N; i++){
        if (in_t2[i] == 0){
          phi[i] = 0;
        }
        phi[i] = std::exp(phi[i]);
      }


      return 0;
    }
#包括
#包括
#包括
#包括
整数符号(双x){
如果(x>0){
返回1;
}
else如果(x<0){
返回-1;
}
否则{
返回0;
}
}
int main(){
双α=1.8;
双贝塔=0.35;
双西格玛=1;
双μ=0.5;
双PI=3.1416;
int N=8192;
双h=0.01;
std::complexphi[N];
双精度*in_t2=新双精度[N];
双精度*abs_t=新双精度[N];
双精度*符号t=新双精度[N];
配合物Ⅰ(0,1);
双s=0.01;
s=1/(h*N);

std::cout此处调用的
pow
函数

pow((-1.0*abs_t[i]), alpha)

是用于
double
参数和结果的函数,它返回一个NaN作为负基数。

此处调用的
pow
函数

pow((-1.0*abs_t[i]), alpha)

是用于双参数和结果的参数,它返回负基数的NaN。

std::pow
将返回传递给它的相同类型

如果需要从
std::pow()
返回
std::complex
,则必须将
std::complex
传递给函数

您可以通过铸造任何表达式轻松解决此问题

pow( expression )
致:


std::pow
将返回传递给它的相同类型

如果需要从
std::pow()
返回
std::complex
,则必须将
std::complex
传递给函数

您可以通过铸造任何表达式轻松解决此问题

pow( expression )
致: