จำนวนเชิงซ้อนและ Argument
จำนวนเชิงซ้อน z = x + iy โดย x = real part, y = imaginary part
Argument (arg) คือมุมระหว่างแกน real บวกกับเวกเตอร์ของจำนวนเชิงซ้อน วัดเป็นเรเดียน ช่วง (-π, π]
สูตร: arg(z) = atan2(y, x)
ฟังก์ชัน std::arg()
อยู่ใน header `
template<class T> T arg(const complex<T>& z);
ตัวอย่างโค้ด C++
#include <iostream>
#include <complex>
#include <cmath>
using namespace std;
int main() {
double x = 12.0, y = 56.0;
complex<double> z(x, y);
cout << "Complex number: " << z << endl; // (12,56)
cout << "Real part: " << z.real() << endl; // 12
cout << "Imag part: " << z.imag() << endl; // 56
cout << "Magnitude (abs): " << abs(z) << endl; // sqrt(12²+56²) ≈ 57.27
cout << "Argument (arg): " << arg(z) << " rad" << endl; // ~1.3597 rad
cout << "Argument (deg): " << arg(z) * 180 / M_PI << "°" << endl; // ~77.9°
// ตัวอย่างพิเศษ
cout << "\nSpecial cases:" << endl;
cout << "arg(1+0i) = " << arg(complex<double>(1, 0)) << " rad (0°)" << endl;
cout << "arg(0+1i) = " << arg(complex<double>(0, 1)) << " rad (90°)" << endl;
cout << "arg(-1+0i) = " << arg(complex<double>(-1, 0)) << " rad (180°)" << endl;
cout << "arg(0-1i) = " << arg(complex<double>(0, -1)) << " rad (-90°)" << endl;
return 0;
}
ผลลัพธ์
Complex number: (12,56) Real part: 12 Imag part: 56 Magnitude (abs): 57.2713 Argument (arg): 1.3597 rad Argument (deg): 77.90° Special cases: arg(1+0i) = 0 rad (0°) arg(0+1i) = 1.5708 rad (90°) arg(-1+0i) = 3.14159 rad (180°) arg(0-1i) = -1.5708 rad (-90°)
ฟังก์ชันที่เกี่ยวข้องใน <complex>
| ฟังก์ชัน | คำอธิบาย |
|---|---|
| abs(z) | ค่าสัมบูรณ์/ขนาด (magnitude) |
| arg(z) | อาร์กิวเมนต์ (มุม) |
| norm(z) | กำลังสองของขนาด |z|² |
| conj(z) | คอนจูเกต (x - iy) |
| polar(r, θ) | สร้าง complex จาก r, θ |
| real(z), imag(z) | ส่วนจริง/จินตภาพ |