C 库 - catan() 函数
C complex 库中的 catan() 函数用于计算给定复数的反正切(arctangent)。该函数定义在头文件 <complex.h> 下,自 C99 版本起可用。
语法
以下是 catan() 函数的 C 库语法 -
double complex catan(double complex z);
参数
此函数仅接受一个参数 (z),该参数标识为复数。
返回值
此函数返回 z 的复数反正切值。
示例 1
以下是演示 catan() 函数用法的 C 库程序。
#include <stdio.h> #include <complex.h> #include <math.h> int main() { double complex z = 1.0 + 2.0 * I; double complex result = catan(z); printf("catan(%lf + %lfi) = %lf + %lfi", creal(z), cimag(z), creal(result), cimag(result)); return 0; }
输出
执行上述代码后,我们得到以下结果 -
catan(1.000000 + 2.000000i) = 1.338973 + 0.402359i
示例 2
以下程序创建一个自定义函数 catan_fun(),该函数接受两个参数:z(复数)和 n(项数),用于执行级数公式。这两个参数会影响复数的近似值。
#include <stdio.h> #include <complex.h> double complex catan_fun(double complex z, int n) { double complex sum = z; double complex term = z; for (int i = 1; i <= n; ++i) { term *= -(z * z) / (2 * i + 1); sum += term; } return sum; } int main() { double complex z = 1.0 + 2.0 * I; int terms = 10; double complex result = catan_fun(z, terms); printf("catan(%lf + %lfi) = %lf + %lfi (approximated with %d terms)", creal(z), cimag(z), creal(result), cimag(result), terms); return 0; }
输出
执行上述代码后,我们得到以下结果 -
catan(1.000000 + 2.000000i) = 5.249622 + -2.709977i (approximated with 10 terms)
示例 3
在这里,我们将再次使用相同的原理,即递归。通过此过程,用户可以控制项参数以获得不同的精度级别。我们观察到参数 z 表示输入复数,并以项值的形式返回结果。
#include <stdio.h> #include <complex.h> double complex catan_recursive(double complex z, int n) { if (n == 0) { return z; } double complex term = -(z * z) / (2 * n + 1) * catan_recursive(z, n - 1); return term; } int main() { double complex z = 1.0 + 2.0 * I; // 递归中的项数的输入值 int terms = 10; double complex result = catan_recursive(z, terms); printf("catan(%lf + %lfi) = %lf + %lfi (approximated with %d terms)", creal(z), cimag(z), creal(result), cimag(result), terms); return 0; }
输出
上述代码产生以下结果 -
catan(1.000000 + 2.000000i) = -0.000487 + -0.001512i (approximated with 10 terms)