C 库 - clog() 函数

❮ C 标准库 - <complex.h>


C complex 库中的 clog() 函数用于计算 z(复数)的复数自然对数(底为 e),其分支沿负实轴切割。

此函数取决于 z(复数)的类型。如果 z 是"float"类型,我们可以使用 clogf() 计算复数对数;对于 long double 类型,请使用 clogl();对于 double 类型,请使用 clog()

注意:复数 z 的自然对数可以用其极坐标 (r,) 表示,其中 r 是 z 的模(或模),是幅角(或相位角)。在这些极坐标系下,自然对数 ln(z) 的公式为:ln(z)=ln(r)+i(+2n)

语法

以下是 clog() 函数的 C 库语法 -

double complex clog( double complex z )

参数

此函数接受一个参数 -

  • Z - 它表示一个复数,我们需要计算它的自然对数。

返回值

此函数返回 z(复数)的复数自然对数,范围为区间 [iπ, +iπ] 内的一条带状区域,沿虚轴方向,在数学上不受实轴限制。

示例 1

以下是一个简单的 C 程序,用于演示如何对复数使用 clog()

#include <stdio.h>
#include <complex.h>

int main() {
   double complex z = 3.0 + 4.0*I; 
   
   // Compute ln(z)
   double complex result = clog(z);
   printf("clog(%f + %fi) = %f + %fi", creal(z), cimag(z), creal(result), cimag(result));
   return 0;
}

输出

以下是输出 -

clog(3.000000 + 4.000000i) = 1.609438 + 0.927295i

示例 2

计算实部为负数的自然对数。

我们来看另一个示例,使用 clog() 计算以 e 为底的自然对数。

#include <stdio.h>
#include <complex.h>

int main() {
   double complex z = -3.0 + 4.0*I; 
   
   // Compute ln(z)
   double complex result = clog(z);
   printf("clog(%f + %fi) = %f + %fi", creal(z), cimag(z), creal(result), cimag(result));
   return 0;
}

输出

以下是输出 -

clog(-3.000000 + 4.000000i) = 1.609438 + 2.214297i

示例 3

计算负实数和负虚数的自然对数

现在,我们来计算 (-3.0 + -4.0*I) 的自然对数(以 e 为底)

#include <stdio.h>
#include <complex.h>

int main() {
   double complex z = -3.0 + -4.0*I; 
   
   // Compute ln(z)
   double complex result = clog(z);
   printf("clog(%f + %fi) = %f + %fi", creal(z), cimag(z), creal(result), cimag(result));
   return 0;
}

输出

以下是输出 -

clog(-3.000000 + -4.000000i) = 1.609438 + -2.214297i

❮ C 标准库 - <complex.h>