GSL Polar 复数看起来极为不同
GSL Polar Complex Numbers Appear to be extremely different
使用 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
值得注意的是,在矩形复杂结构上执行完全相同的测试没有错误。
你有错误的期望。函数 gsl_complex_polar()
从以极复数形式给出的分量初始化一个复数:
This function returns the complex number z = r \exp(i \theta) = r (\cos(\theta) + i \sin(\theta)) from the polar representation (r,theta)
很好,但是 GSL_REAL()
宏 returns 是复数的实部。这与极坐标表示的 r
组件不同。事实上,我已经引用的文档告诉你它到底是什么:r cos(theta)
.
使用 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
值得注意的是,在矩形复杂结构上执行完全相同的测试没有错误。
你有错误的期望。函数 gsl_complex_polar()
从以极复数形式给出的分量初始化一个复数:
This function returns the complex number z = r \exp(i \theta) = r (\cos(\theta) + i \sin(\theta)) from the polar representation (r,theta)
很好,但是 GSL_REAL()
宏 returns 是复数的实部。这与极坐标表示的 r
组件不同。事实上,我已经引用的文档告诉你它到底是什么:r cos(theta)
.