C++で複素数を扱う。ヘッダー
#include <complex>
を読み込んで
std::complex<double> z1(1.0, 1.0);
とすれば
\begin{align}
z_{1}=1+j
\end{align}
が定義できる。
演算やノルム、共役複素数の計算方法はサンプルコードを参照。
#include <iostream>
#include <complex>
int main()
{
std::complex<double> z1(1.0, 1.0);
std::complex<double> z2(2.0, 4.0);
double real = z1.real(); // 実部
double imag = z1.imag(); // 虚部
std::cout << "Re(z1) = " << real << std::endl;
std::cout << "Im(z1) = " << imag << std::endl;
std::cout << std::endl;
std::cout << "z1 + z2 : " << z1 + z2 << std::endl;
std::cout << "z1 - z2 : " << z1 - z2 << std::endl;
std::cout << "z1 * z2 : " << z1 * z2<< std::endl;
std::cout << "z1 / z2 : " << z1 / z2 << std::endl;
std::cout << std::endl;
std::cout << "|z1| = " << std::abs(z1) << std::endl;
std::cout << "|z2| = " << std::abs(z2) << std::endl;
std::cout << std::endl;
std::cout << "arg(z1) : " << std::arg(z1) << std::endl;
std::cout << "arg(z2) : " << std::arg(z2) << std::endl;
std::cout << std::endl;
std::cout << "norm(z1) : " << std::norm(z1) << std::endl;
std::cout << "norm(z2) : " << std::norm(z2) << std::endl;
std::cout << std::endl;
std::cout << "conj(z1) =" << std::conj(z1) << std::endl;
std::cout << "conj(z2) =" << std::conj(z2) << std::endl;
}
実行結果
Re(z1) = 1
Im(z1) = 1
z1 + z2 : (3,5)
z1 - z2 : (-1,-3)
z1 * z2 : (-2,6)
z1 / z2 : (0.3,-0.1)
|z1| = 1.41421
|z2| = 4.47214
arg(z1) : 0.785398
arg(z2) : 1.10715
norm(z1) : 2
norm(z2) : 20
conj(z1) =(1,-1)
conj(z2) =(2,-4)
コメント