Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ฟังก์ชัน arg() สำหรับจำนวนเชิงซ้อนใน C++

จำนวนเชิงซ้อนและ 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)ส่วนจริง/จินตภาพ