複素数を使います。 oct-cmplx.hをインクルードし、Complexクラスを利用します。 このComplexはC++標準ライブラリcomplexのcomplexテンプレートをリネームしたものです。
typedef std::complex< double > Complex;
複素数の加減乗除算や指数関数、三角関数などが利用できます。
#include <iostream> #include <octave/config.h> #include <octave/oct-cmplx.h> using namespace std; int main() { cout.precision(3); cout.setf(ios::fixed); Complex a(1.0, -0.5); cout << "a = " << a << endl; cout << "real(a) = " << real(a) << endl; cout << "imag(a) = " << imag(a) << endl; cout << "a.real()= " << a.real() << endl; cout << "a.imag()= " << a.imag() << endl; cout << "abs(a) = " << abs(a) << endl; cout << "arg(a) = " << arg(a) << endl; cout << "norm(a) = " << norm(a) << endl; cout << "conj(a) = " << conj(a) << endl; cout << "sqrt(a) = " << sqrt(a) << endl; cout << "sin(a) = " << sin(a) << endl; Complex const IU(0.0, 1.0); Complex b = 1.0 + IU; cout << "b = " << b << endl; cout << "a + b = " << a + b << endl; cout << "a * b = " << a * b << endl; cout << "a / b = " << a / b << endl; }
a = (1.000,-0.500) real(a) = 1.000 imag(a) = -0.500 a.real()= 1.000 a.imag()= -0.500 abs(a) = 1.118 arg(a) = -0.464 norm(a) = 1.250 conj(a) = (1.000,0.500) sqrt(a) = (1.029,-0.243) sin(a) = (0.949,-0.282) b = (1.000,1.000) a + b = (2.000,0.500) a * b = (1.500,0.500) a / b = (0.250,-0.750)
&ref(): File not found: "wikilogo1.png" at page "複素数を使いたい"; |