수학에서 구간의 정의
정의
- 두 실수 에 대해 위와 같은 집합을 구간interval이라 한다.
- 특히 위와 같이 양 끝점 를 포함하면 대괄호 []를 써서 라 적고 클로즈드closed됐다고 한다.
- 양 끝점 를 포함하지 않으면 소괄호 ()를 써서 라 적고 오픈open됐다 한다.
- 두 끝점 중 하나만 포함하지 않으면 클로픈clopen이라 하고, 만을 포함할때는 라 적고 만을 포함할 때는 라 적는다.
- 한쪽 끝이 없을 경우, 즉 무한대일 경우엔 다음과 같은 표현을 사용한다.
설명
구간은 우리가 가장 잘 아는 집합 중 하나인 1차원 유클리드 공간 에서 연결성을 가지는 부분집합으로써, 이해하기 쉽고 친숙하며 어떤 공부를 하든 오래도록 보게 된다.
수치해석
수치해석과 같은 분야에선 점이 처럼 딱 두개도 아니고 순서 없이 섞인 여러개의 점을 다룰 때가 있다. 그래서 여러개의 점의 집합 을 포함하는 가장 작은 구간을 다음과 같이 나타내곤 한다. 구간을 가지고 하는 연산에 관심을 가지는 분야로는 아예 구간 산술interval Arithmetic이라고 하는 분야가 있다고 한다1.
프로그래밍 언어
코딩을 하다가 문득 궁금해서 찾다가 재미있는 글을 본 적이 있다2. 요약하자면 프로그래밍에서는 왜 이나 이 아니라 클로픈 인터벌 을 쓰냐는 건데, 동의하는 내용만 대충 간추려서 수학자의 관점에서 다시 써보려 한다.
n = 10
for i in 0:n
print(n)
파이썬이나 매트랩을 위시한 수많은 프로그래밍 언어에서는 위와 유사한 코드가 쓰이곤 하는데, 대개의 경우 저 코드의 실행결과는 다음과 같다. (참고로 이 코드는 파이썬도 아니고 매트랩도 아닌 가상의 언어다.)
0123456789
이게 무슨 말이냐면, 0:n
만큼 제어한다고 한다면 그것을 클로픈 인터벌 으로 생각한다는 것이다. 이러한 사고, 컨벤션의 장점은 대부분의 언어에서 인덱스를 부터 쓰는데 까지 돈다면 그 ‘반복 횟수 자체’는 기가 막히게 으로 떨어진다는 것이다. 이렇게 직관적인(?) 표기를 사용하면 실수가 크게 줄어들게 되고, 실용적인 습관이 된다.
그리고 C 언어 등에서는 같은 표현을 for(i=0, i<10, i++)
와 같이 작성해야하는데, 1부터 시작해서 정확히 10에 끝나는 for(i=1, i<=10, i++)
과 비교해보면 연산자 자체가 <
에서 <=
로 더러워졌고, 사실 C에서 사용하는 배열에 접근할 땐 0
도 포함되어야 하기 때문에 방금 같은 반복문은 for(i=0, i<=(10-1), i++)
과 같이 멍청하게 써야할지도 모른다.
말하자면 코딩 배우는 사람을 헷갈리게 하고 1씩 어긋나는 건 꼭 여러분을 괴롭히려는 게 아니라, 나름대로 그럴싸할 이유가 있을지도 모른다는 것이다.