Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 복소수 proj() 함수 완벽 가이드 – 문법, 예제, 실행 결과

C++의 proj() 함수는 복소수에 대한 리만 구(Riemann sphere) 투영(projection)을 수행하는 함수입니다. 이 글에서는 proj() 함수의 기본 문법과 동작 원리를 예제 코드와 함께 자세히 알아보겠습니다.

proj() 함수 문법

proj() 함수는 <complex> 헤더에 정의되어 있으며, 다음과 같은 템플릿 형태로 선언됩니다.

template <class T> complex<T>
proj (const complex<T>& z);

proj() 함수의 동작 방식

proj() 함수는 복소수 하나를 매개변수로 받아 해당 복소수의 투영 결과를 반환합니다. 수학적으로 이는 리만 구로의 투영에 해당하며, 유한한 값을 가진 복소수는 입력값이 그대로 반환됩니다. 반면 실부나 허부 중 하나라도 무한대(INFINITY)를 포함하는 복소수는 (inf, ±0) 형태로 통일되어 반환됩니다.

예제 코드

아래 예제에서는 세 가지 서로 다른 복소수를 proj() 함수에 전달하여 결과를 비교해 봅니다.

#include <iostream>
#include <complex>
using namespace std;

int main(){
    std::complex<double> c1(3, 5);
    cout << "Proj" << c1 << " = " << proj(c1) << endl;

    std::complex<double> c2(0, -INFINITY);
    cout << "Proj" << c2 << " = " << proj(c2) << endl;

    std::complex<double> c3(INFINITY, -1);
    cout << "Proj" << c3 << " = " << proj(c3) << endl;
}

proj() 함수를 사용하려면 소스 코드에 <complex> 헤더 파일을 반드시 포함해야 합니다. 이 헤더에는 투영 함수의 구현 정의가 포함되어 있기 때문입니다. 위 코드에서 첫 번째 복소수는 일반적인 유한 값 (3, 5)이고, 두 번째는 허부가 음의 무한대인 (0, -inf), 세 번째는 실부가 양의 무한대인 (inf, -1)입니다.

실행 결과

코드를 성공적으로 컴파일하고 실행하면 다음과 같은 출력을 확인할 수 있습니다.

Proj(3,5) = (3,5)
Proj(0,-inf) = (inf,-0)
Proj(inf,-1) = (inf,-0)

실행 결과를 보면 유한 복소수 (3, 5)는 그대로 반환되지만, 무한대가 포함된 복소수들은 모두 (inf, -0)으로 투영됩니다. 이처럼 proj() 함수는 리만 구 모델에서 무한대 지점을 일관성 있게 처리해야 할 때 유용하게 활용됩니다.