함수는 예측이다.
프로그래머들에게 있어서 함수라는 개념은 아주 중요하다고 할 수 있습니다.
모든 프로그램언어들이 함수의 구조로 이루어져 있고 이를 연결하고 논리적으로 구조화하는 것이 프로그램이라고 생각합니다.
그래서 공식보다 중요한 것이 함수의 기본적인 개념이고 함수가 어디에 사용이 되며 어떻게 활용할 수 있는지에 대해서 중점적으로 이야기 해볼 생각입니다.
수학에서, 함수(函數, 영어: function) 또는 사상(寫像, 영어: map)은 첫 번째 집합의 임의의 한 원소를 두 번째 집합의 오직 한 원소에 대응시키는 대응 관계이다.
위의 정의는 위키피디아에 나와 있는 함수의 정의입니다.
뭔지 모르게 어렵게 함수를 정의 했다고 생각합니다. 조금 쉽게 풀어서 이야기하면 하나의 값은 오직 하나의 값을 갖는다는 이야기입니다.
그래서 함수란 어떤 값을 연산했을 때 특별한 조건없이 어떤 값이 나올지 알 수 있습니다.
예를 들면, 빵 만드는 기계에 밀가루를 넣으면 빵이 나온다는 것을 우리는 예측할 수 있습니다.
만약에 어떤한 기계에 밀가루를 넣었을 때 나오는 결과가 빵이 나올지 국수가 나올지 모른다면 이는 함수라고 할 수 없습니다.
프로그램도 같습니다. 어떠한 함수의 결과가 int 일지 string일지 알 수 없다면 그 함수는 사용을 할 수 없을 것입니다.
이렇게 함수는 어떠한 입력값에 의해서 나오는 결과값을 예측할 수 있어야 하고 예측을 할 수 있을 때 우리는 함수라고 합니다.
y=x는 함수입니다. 하나의 x값에 대해서 하나의 y값을 갖는 반면 왼쪽의 원은 하나의 x값에 대해서 두개의 y값을 갖습니다.
그래서 원을 우리는 함수라고 하지 않고 원의 방정식이라고 합니다.
이렇게 하나의 값에 대해서 두개 이상의 값을 갖는 형태를 도형의 방정식이라고 합니다.
이처럼 좌표에 시각적으로 표현할 수 있는 수학적인 영역이 함수와 도형입니다.
수학에 있어서 치환이라는 개념은 수학적인 표현의 간결성을 만들어주는 아주 중요한 부분입니다.
프로그램도 객체라는 개념이 치환이라는 개념과 거의 동일한 의미를 가지고 있습니다.
객체지향프로그램(OOP)을 간단하게 이야기 하자면 프로그램을 작성할 때 반복되는 부분을 하나의 객체화하여 재사용성을 높이는 방법이라고 할 수 있겠습니다.
수학에서 치환이란 객체지향과 비슷한 방법입니다. 반복되어 사용하는 수학적인 형태를 하나의 문자로 변환하여 수식의 차원이나 형태를 변형하여 간단하게 만들 수 있습니다.
이렇게 4차원의 방정식을 2차원의 방정식으로 바꿔서 판단을 할 수 있습니다.
연산을 하는데 있어서 반복되는 형태를 묶어주면 손쉬게 연산을 할 수 있습니다.
(a+b+c)(a+b-c) 라는 곱셈공식이 있을 때 a+b=A라고 치환을 하면
(A+c)(A-c)의 합차공식으로 변형할 수 있습니다.
또한 핵심적으로 사용하는 부분은 치환적분법입니다. 적분의 계산을 하는 공식으로 편미분을 이용하여 치환을 이용하는 방법으로 자세한 부분은 나중에 적분법에서 이야기 하겠습니다.
이러한 치환은 수학적인 해석이나 문제해결의 방법론, 구조적인 부분에서는 중요합니다.