몬테카를로 트리 서치가 모든 경우를 다 펼치지 않고 좋은 후보를 더 깊게 보는 방식이라면, 르장드르 근사는 복잡한 함수를 전부 기억하지 않고 중요한 모양만 남기는 방식이다. 둘은 문제를 푸는 방향이 다르지만, 공통점은 분명하다. 계산을 감당 가능한 형태로 바꾸고, 전체를 완전히 다루지 않아도 쓸 만한 결론을 만든다.
르장드르 다항식은 직교 다항식의 한 종류다. 직교라는 말은 두 방향이 서로 겹치지 않는다는 뜻에 가깝다. 벡터에서 x축 방향과 y축 방향이 서로 독립적인 것처럼, 함수 공간에서도 서로 겹치지 않는 함수들을 기저처럼 사용할 수 있다. 르장드르 다항식은 구간 [-1, 1] 위에서 이런 역할을 하는 대표적인 다항식이다.

르장드르 다항식의 낮은 차수 그래프. 출처: Boost C++ Libraries
내가 이 글에서 정리하려는 핵심은 하나다. 어떤 복잡한 함수가 있을 때, 그 함수를 르장드르 다항식들의 합으로 바꾸면 함수의 상황을 적은 수의 계수로 요약할 수 있다. 이 계수들은 함수가 상수처럼 움직이는지, 직선처럼 기울어지는지, 곡선처럼 휘어지는지 같은 정보를 단계별로 담는다. 그래서 르장드르 근사는 연속적인 함수를 다루는 문제에서 일종의 근사 추론 메커니즘으로 사용할 수 있다.
함수 근사는 무엇을 줄이는 일인가
함수 f(x)가 있다고 하자. 이 함수가 단순하면 직접 계산하면 된다. 문제는 실제 함수가 늘 단순하지 않다는 데 있다. 측정값으로만 주어질 수도 있고, 계산 비용이 클 수도 있으며, 모양은 알지만 닫힌 형태의 식으로 다루기 어려울 수도 있다.
함수 근사는 이런 상황에서 원래 함수를 더 다루기 쉬운 함수로 바꾸는 일이다. 예를 들어 sin(x)를 어떤 구간에서 낮은 차수의 다항식으로 바꾸거나, 실험 데이터의 경향을 직선이나 곡선으로 요약하는 일이 모두 함수 근사다.
여기서 중요한 관점은 완전한 복제가 아니다. 근사는 원본과 똑같은 함수를 만드는 작업이 아니라, 주어진 목적에 충분한 정보를 남기는 작업이다. 계산량을 줄이고, 잡음을 줄이고, 이후 추론에 필요한 구조를 뽑아내는 쪽에 가깝다.

함수 근사는 원래 곡선을 계산하기 쉬운 다항식으로 바꾸는 과정이다. 출처: Expii
초보자가 가장 먼저 잡아야 할 비유는 압축이다. 원본 함수가 긴 음원 파일이라면, 르장드르 근사는 그 음원을 몇 개의 중요한 주파수 성분으로 요약하는 일과 비슷하다. 다만 푸리에 근사가 삼각함수를 기저로 쓰는 데 비해, 르장드르 근사는 르장드르 다항식을 기저로 쓴다.
르장드르 다항식의 기본 모양
르장드르 다항식은 보통 P_n(x)로 쓴다. 여기서 n은 차수다. P_0(x)는 0차, P_1(x)는 1차, P_2(x)는 2차 다항식이다.
처음 몇 개는 다음과 같다.
P_0(x) = 1
P_1(x) = x
P_2(x) = (1/2)(3x^2 - 1)
P_3(x) = (1/2)(5x^3 - 3x)
P_4(x) = (1/8)(35x^4 - 30x^2 + 3)
이 목록만 보면 그냥 특이한 다항식처럼 보인다. 하지만 이 다항식들은 아무렇게나 만든 것이 아니다. 구간 [-1, 1]에서 서로 직교하도록 만들어져 있다.
직교성은 다음 식으로 표현된다.
∫[-1,1] P_m(x) P_n(x) dx = 0, m != n
서로 다른 차수의 르장드르 다항식을 곱해서 -1부터 1까지 적분하면 0이 된다. 다시 말해 P_1 방향의 정보와 P_2 방향의 정보가 서로 섞이지 않는다. 이 성질 때문에 복잡한 함수를 여러 성분으로 안정적으로 나누기 좋다.

직교 기저에서는 성분을 서로 독립적으로 나누어 볼 수 있다. 출처: QuantEcon
Digital Library of Mathematical Functions은 르장드르 다항식을 고전적 직교 다항식의 한 계열로 정리한다. 르장드르 다항식은 물리, 수치해석, 근사 이론에서 자주 등장한다. 구간 위의 함수를 다항식 기저로 분해해야 할 때 구조가 단순하고 계산이 안정적이기 때문이다.
직교 다항식이라는 말의 의미
직교 다항식이라는 표현은 처음 들으면 어렵다. 하지만 핵심은 단순하다. 서로 역할이 겹치지 않는 다항식 묶음이라는 뜻이다.
2차원 벡터를 생각하면 쉽다. 어떤 점 (a, b)는 a만큼 x축으로 가고, b만큼 y축으로 가면 표현된다. x축과 y축은 서로 직교하기 때문에 x축 성분을 구할 때 y축 성분이 섞이지 않는다.
함수도 비슷하게 볼 수 있다. 어떤 함수 f(x)를 여러 기저 함수의 합으로 표현할 수 있다면, 각 기저 함수가 맡는 역할을 따로 계산할 수 있다. 르장드르 다항식은 다음과 같은 형태의 표현을 가능하게 한다.
f(x) ≈ a_0 P_0(x) + a_1 P_1(x) + a_2 P_2(x) + ... + a_N P_N(x)
여기서 a_0, a_1, a_2 같은 값이 계수다. 계수는 원래 함수가 각 르장드르 다항식 방향으로 얼마나 강하게 나타나는지를 뜻한다.

함수 근사도 원래 대상을 기저 방향으로 투영한다는 관점에서 이해할 수 있다. 출처: QuantEcon
이 관점에서 르장드르 근사는 함수를 계수 벡터로 바꾸는 일이다. 원래 함수는 무한히 많은 점에서 값을 가질 수 있지만, 근사에서는 N+1개의 계수만 남긴다. 이 계수 벡터가 함수 상황의 요약본이 된다.
계수는 어떻게 구하는가
르장드르 근사의 계수는 직교성을 이용해서 계산한다. 구간 [-1, 1]에서 함수 f(x)를 르장드르 다항식으로 근사할 때 계수 a_n은 다음과 같이 구한다.
a_n = (2n + 1) / 2 * ∫[-1,1] f(x) P_n(x) dx
이 식의 의미는 어렵지 않다. 원래 함수 f(x)와 P_n(x)를 곱해서 전체 구간에서 얼마나 겹치는지 본다. 많이 겹치면 해당 계수가 커지고, 거의 겹치지 않으면 계수가 작아진다.
예를 들어 어떤 함수가 대체로 오른쪽으로 갈수록 커지는 모양이면 P_1(x) = x 성분이 크게 나온다. 좌우 양끝은 크고 가운데는 작은 모양이면 2차 성분이 의미 있게 나타날 수 있다. 더 복잡하게 흔들리는 모양은 더 높은 차수의 다항식이 설명한다.
계수를 구한 뒤에는 필요한 차수까지만 더한다. 3차까지만 쓰면 다음과 같은 근사 함수가 된다.
f(x) ≈ a_0 P_0(x) + a_1 P_1(x) + a_2 P_2(x) + a_3 P_3(x)
이때 a_0은 전체 평균에 가까운 성분이다. a_1은 큰 방향성, a_2는 휘어짐, a_3은 더 복잡한 비대칭 곡률을 담는다. 차수가 높아질수록 더 세밀한 모양을 표현할 수 있지만, 계산량도 늘고 잡음까지 따라갈 가능성도 커진다.
작은 예시로 보는 르장드르 근사
간단히 f(x) = x^2를 생각해 볼 수 있다. x^2는 이미 다항식이므로 어렵지 않다. 르장드르 다항식 중 P_2(x)는 다음과 같다.
P_2(x) = (1/2)(3x^2 - 1)
이 식을 x^2에 대해 정리하면 다음과 같다.
x^2 = (1/3)P_0(x) + (2/3)P_2(x)
여기서 재미있는 점은 P_1(x) 성분이 없다는 것이다. x^2는 좌우 대칭 함수이므로 홀수 차수인 P_1 방향으로는 정보가 없다. 르장드르 분해는 이런 구조를 계수에서 바로 드러낸다.

계수 계산은 원래 함수와 각 기저가 얼마나 겹치는지 재는 과정이다. 출처: SlideToDoc
더 복잡한 함수도 같은 방식으로 접근한다. 함수가 x^2처럼 정확히 낮은 차수로 끝나지 않더라도, 낮은 차수부터 차례대로 더하면 점점 원래 함수에 가까워진다. 근사 차수 N을 어디까지 둘지는 정확도와 비용 사이의 선택이다.
르장드르 근사가 추론 메커니즘이 되는 이유
추론은 관찰한 정보로부터 아직 직접 계산하지 않은 결론을 얻는 과정이다. 르장드르 근사는 함수 전체를 직접 다루지 않고 계수 몇 개로 상황을 요약한다. 그래서 이후 계산은 원래 함수가 아니라 계수 공간에서 진행할 수 있다.
예를 들어 어떤 시스템의 상태가 입력 x에 따라 변한다고 하자. 센서 데이터나 시뮬레이션 결과로 f(x)를 일부 알고 있다면, 르장드르 계수를 구해 다음과 같은 질문에 답할 수 있다.
- 전체적으로 값이 어느 수준에 있는가
- 입력이 커질수록 값이 증가하는가, 감소하는가
- 변화가 직선적인가, 곡선적인가
- 고차 성분이 큰가, 즉 복잡하게 흔들리는가
- 낮은 차수만으로 충분한가, 더 세밀한 모델이 필요한가
이런 질문은 원래 함수의 모든 점을 보지 않아도 대답할 수 있다. 계수 몇 개가 함수의 큰 구조를 담고 있기 때문이다.
르장드르 근사는 그래서 단순한 곡선 맞추기 이상의 의미를 가진다. 함수 상황을 압축하고, 압축된 표현 위에서 판단하고, 필요한 경우에만 차수를 늘려 더 정밀하게 보는 방식이다.
몬테카를로 트리 서치와 비슷한 점
몬테카를로 트리 서치와 르장드르 근사는 서로 다른 문제를 푼다. 몬테카를로 트리 서치는 선택지가 많은 탐색 문제에서 좋은 경로를 찾는다. 르장드르 근사는 연속적인 함수나 데이터의 모양을 적은 수의 계수로 표현한다.
하지만 둘 다 전체를 무식하게 다루지 않는다. 몬테카를로 트리 서치는 가능한 모든 경로를 끝까지 펼치지 않고, 유망한 경로에 계산을 더 쓴다. 르장드르 근사는 함수의 모든 세부를 그대로 들고 가지 않고, 낮은 차수 성분부터 중요한 구조를 잡는다.
정리하면 다음과 같다.
- 몬테카를로 트리 서치: 큰 탐색 공간을 샘플링과 점수 갱신으로 줄인다.
- 르장드르 근사: 복잡한 함수 공간을 직교 기저와 계수로 줄인다.
- 둘의 공통점: 완전 계산 대신 근사 계산으로 의사결정 가능한 표현을 만든다.

몬테카를로 트리 서치는 큰 탐색 공간을 전부 펼치지 않고 유망한 경로에 계산을 집중한다. 출처: GeeksforGeeks
이 관점은 Graph RAG 같은 구조적 추론에서도 도움이 된다. 그래프 위에서 모든 경로를 다 탐색하기 어렵다면 몬테카를로 트리 서치처럼 유망한 경로에 예산을 쓸 수 있다. 반대로 어떤 연속 점수 함수, 랭킹 함수, 응답 품질 함수, 비용 함수가 복잡하게 변한다면 르장드르 근사처럼 그 함수를 계수 형태로 요약할 수 있다.
즉 하나는 경로 탐색의 근사고, 다른 하나는 함수 표현의 근사다. 둘 다 계산 가능한 형태로 문제를 바꾼다는 점에서 같은 계열의 사고방식으로 볼 수 있다.
실제로는 어디에 쓸 수 있는가
르장드르 다항식은 단순한 수학 장식이 아니라 계산 도구다. 대표적인 사용처는 수치해석과 물리 계산이다. 구면 좌표계의 문제, 편미분방정식, 스펙트럴 방법, 수치 적분 같은 영역에서 등장한다.
가우스-르장드르 구적법은 르장드르 다항식의 근을 이용해 적분을 근사하는 방법이다. 적분은 함수 아래 면적을 구하는 문제인데, 모든 점을 다 계산하는 대신 잘 고른 몇 개의 점과 가중치로 높은 정확도를 얻는다. 이것도 근사 계산의 핵심 철학과 맞닿아 있다.
머신러닝이나 추론 시스템 관점에서는 함수를 특징 벡터로 바꾸는 방식으로 이해할 수 있다. 입력에 대한 출력 함수가 있을 때, 그 함수를 직접 저장하지 않고 르장드르 계수로 저장하면 이후 비교, 압축, 보간, 예측에 사용할 수 있다.
예를 들어 다음과 같은 상황을 생각할 수 있다.
- 특정 파라미터 변화에 따른 모델 성능 곡선 근사
- 시간에 따른 비용 함수나 품질 함수의 형태 요약
- 시뮬레이션 결과를 낮은 차수 계수로 압축
- 불확실한 응답 점수 함수를 다항식 기저로 표현
- 복잡한 최적화 목적 함수를 계산하기 쉬운 근사 함수로 대체
여기서 중요한 것은 르장드르 근사가 항상 정답이라는 뜻이 아니다. 함수가 구간 [-1, 1]에서 잘 다뤄지고, 다항식 근사가 의미 있으며, 낮은 차수 구조가 충분히 강할 때 좋은 선택지가 된다.
입력 구간을 [-1, 1]로 바꾸는 이유
르장드르 다항식은 기본적으로 [-1, 1] 구간에서 정의된다. 하지만 실제 데이터의 입력 범위는 0부터 100일 수도 있고, 시간처럼 0부터 T일 수도 있다. 이때는 입력을 [-1, 1]로 선형 변환하면 된다.
예를 들어 원래 입력이 [a, b]에 있다면 다음 변환을 쓴다.
x = 2(t - a) / (b - a) - 1
이렇게 하면 t = a일 때 x = -1, t = b일 때 x = 1이 된다. 원래 문제를 르장드르 다항식이 쓰기 좋은 표준 구간으로 옮기는 것이다.
이 변환은 작지만 중요하다. 구간을 제대로 맞추지 않으면 직교성이 기대한 방식으로 작동하지 않는다. 르장드르 근사는 단순히 다항식을 쓰는 것이 아니라, 특정 구간에서 서로 직교하는 다항식을 쓰는 방법이기 때문이다.
르장드르 근사를 적용하려면 실제 입력 구간을 표준 구간 [-1, 1]로 옮긴다.
너무 높은 차수는 답이 아닐 수 있다
근사 차수를 높이면 표현력은 좋아진다. 하지만 항상 좋은 것은 아니다. 데이터에 잡음이 있으면 높은 차수 다항식이 잡음까지 따라갈 수 있다. 계산도 복잡해지고, 구간 끝에서 예상치 못한 흔들림이 커질 수도 있다.
그래서 실제로는 낮은 차수부터 시작하는 편이 좋다. 먼저 P_0, P_1, P_2 정도로 큰 구조를 잡고, 오차가 크면 차수를 조금씩 올린다. 고차 계수가 작아지는지 보는 것도 좋은 판단 기준이다. 고차 계수가 충분히 작다면 더 높은 차수를 추가해도 얻는 정보가 많지 않을 가능성이 크다.
이 방식은 근사 계산을 다룰 때 반복해서 등장하는 태도다. 처음부터 완벽한 모델을 만들려고 하지 않고, 가장 단순한 표현으로 시작한 뒤 필요한 만큼만 복잡도를 늘린다.
알고리듬으로 정리하면
르장드르 근사를 실제 절차로 쓰면 다음과 같다.
입력: 함수 f(x), 근사 차수 N, 구간 [a, b]
1. 입력 구간 [a, b]를 [-1, 1]로 변환한다.
2. P_0(x)부터 P_N(x)까지 르장드르 다항식을 준비한다.
3. 각 차수 n에 대해 계수 a_n을 계산한다.
4. a_0 P_0(x) + ... + a_N P_N(x)를 근사 함수로 사용한다.
5. 오차가 크면 N을 늘리고, 충분히 작으면 멈춘다.
이 절차의 출력은 근사 함수이면서 동시에 함수의 요약 표현이다. 원래 함수 대신 계수 목록 [a_0, a_1, ..., a_N]을 저장해도 많은 판단을 할 수 있다.
한 문장으로 정리
르장드르 근사는 복잡한 함수를 서로 겹치지 않는 다항식 성분으로 나누고, 중요한 계수만 남겨 계산 가능한 형태로 바꾸는 근사 추론 방법이다.
몬테카를로 트리 서치가 큰 탐색 공간에서 좋은 경로를 찾기 위해 계산을 줄인다면, 르장드르 근사는 큰 함수 공간에서 중요한 모양을 찾기 위해 표현을 줄인다. 둘은 모두 완전 탐색이나 완전 표현이 어려운 상황에서 문제를 작고 강한 형태로 바꾸는 알고리듬적 사고방식이다.