본문 바로가기

IT/Winform & Devexpress

C# 복소수 i( √ -1, 루트 -1) 표현하는 방법, 'System' 네임스페이스에 'Numerics' 형식 또는 네임스페이스 이름이 없습니다. 어셈블리 참조가 있는지 확인하세요


1. 복소수의 간단한 의미부터 알아보고 시작해보겠습니다.

복소수 i 제곱하면 -1이 되는 수 루트 -1을 의미합니다. 조금더 자세한 설명을 위해 아래처럼 나무위키를 참조해 보겠습니다.

수학에서 실수와 허수의 합의 꼴로써 나타내는 수. 두 실수 x, yx,y에 대하여 x+iyx+iy (ii는 허수단위)[1]로 나타내는 체(field)를 여러(複)개의 단위(素)로 이루어진 수(數)라는 데에서 복소수(複素數, complex number)라 하며, xx를 실수부, yy를 허수부라고 한다. 한다. 보통 대한민국 교육 과정에선 고등학교 1학년 공통 수학에서 배운다.

첫 글자인 C를 볼드체로 C나 \mathbb{C}C를 겹쳐서 써서 나타내기도 한다. 허수 부분 yy가 0인 것이 실수, 0이 아닌 것이 허수이며, 허수 중 실수부분 xx가 0인 수를 순허수라고 한다.


2. C#에서 복소수 사용을 위해서는 Complex 구조체를 아래와 같이 사용하면 됩니다.


Complex c1 = new Complex(12, 6);

Console.WriteLine(c1);

// 출력값      (12, 6)


차례대로 실수(12), 허수(6) 부분입니다. 그러니까 12 + 6i 를 코드에서는 Complex(12,6) 으로 표현할 수있는 것입니다.

Complex 구조체 안에 다양한 메서드를 통해 연산도 가능하니 MSDN을 참조하여 잘 활용하면 된다.(절대값, 아크코사인 아크사인 아크탄젠트 등, 삼각함수 각도, 복소수의 합, 제곱근 등)


3. Complex 를 사용하기 위해서는 네임스페이스:   System.Numerics가 필요합니다.

클래스 상단에 using System.Numerics; 를 선언하고 사용하시면 됩니다. 그런데 이렇게 네임스페이스를 선언해 주면 아래와 같은 오류가 발생합니다.

'System' 네임스페이스에 'Numerics' 형식 또는 네임스페이스 이름이 없습니다. 어셈블리 참조가 있는지 확인하세요'

'system.numerics namespace not recognized'

이는 참조가 없어서 발생하는 오류입니다. 위 사진처럼 아래 순서대로 해결 할 수 있습니다.


프로젝트 참조 클릭 → 참초 추가 → 프레임워크 → System.Numerics 찾아서 선택 후 확인


복소수는 주로 전자제품에서 위상각을 활용하여 개선을 위할때 사용한다고 들었는데, C#에서 복소수를 활용하는 경우는 주로 신호처리와 관련된 대학 과제 이던가 신호처리 관련 S/W를 개발하는 개발자 분들이 고속푸리에변환 [fast Fourier transform, 高速─變換]를 적용할 때 사용할 가능성이 높은데 시간이 된다면(혹은 댓글을 통한 요청이 있다면) FFT에 대해서 포스팅 하도록 하겠습니다.

반응형