求复数的指数

Find exponential of a complex number

本文关键字:指数      更新时间:2023-10-16

我想计算一个复数的指数,比如2+3i

我已经知道这个公式

exp(iz)=cos(z)+isin(z)

OpenCV中是否有内置函数?如果是,你能举个例子向我解释一下吗?

complex.h中声明的cexp( )函数有什么问题?为什么要使用OpenCV而不是标准库?

#include <complex.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
    double complex z = 2 + 3*I;
    double complex w = cexp(z);
    printf("%f + %fin", creal(w), cimag(w));
    return 0;
}

如果你的目标平台不提供复杂的类型或操作,你可以使用以下快速而肮脏的解决方案:

struct mycomplex { double real; double imag; }
struct mycomplex my_exp(struct mycomplex z) {
    struct mycomplex w;
    w.real = exp(z.real)*cos(z.imag);
    w.imag = exp(z.real)*sin(z.imag);
    return w;
}

最后,由于您使用的是MSVC,一个非常基本的C++示例:

#include <complex>
#include <iostream>
int main(int argc, char *argv[]) {
    auto z = std::complex<double>(2,3);
    auto w = std::exp(z);
    std::cout << w << std::endl;
    return 0;
}

我认为您要查找的函数是atan2。例如,对于数字2+3i,您可以将角度计算为

T = atan2( 3.0, 2.0 );

我不认为c中有任何内置函数可以解决这个问题。事实上,当我们在c中进行FFT变换时,我们使用了基本的cos+jsin版本