GSL Polar Complex Number看起来非常不同

时间:2015-08-30 20:43:59

标签: c complex-numbers gsl

使用minunit.h测试内置的gsl结构。

我写了以下测试:

static
char * test_gsl_polar_complex_number_struct()
{
  double r = 0.325784;
  double theta = 0.421329;

  gsl_complex test_polr_complex_number = gsl_complex_polar ( r, theta ); 

  printf("expected r: %f, actual r: %f\n", r, GSL_REAL(test_polr_complex_number));
  mu_assert("real part of polar complex number does not match expected", 
  GSL_REAL(test_polr_complex_number) == r);

  return 0;
}

我的测试失败,输出如下:

expected r: 0.325784, actual r: 0.297293
expected theta: 0.421329, actual theta: 0.133237
real part of polar complex number does not match expected

值得注意的是,完全相同的测试在矩形复杂结构上执行时没有错误。

1 个答案:

答案 0 :(得分:2)

你有错误的期望。函数gsl_complex_polar()使用极坐标复合形式给出的组件初始化复数:

  

此函数从极坐标表示(r,theta)返回复数z = r \ exp(i \ theta)= r(\ cos(\ theta)+ i \ sin(\ theta))

GSL documentation

没关系,但GSL_REAL()宏返回复数的实部。这与极坐标表示的r分量不同。事实上,我引用的文档确切地告诉你它是什么:r cos(theta)